427 public:
428 void print_value() const { print_value_on(tty,nullptr); }
429 void print_value_on(outputStream* st, JavaThread *thread) const;
430 void print_on(outputStream* st) const;
431 void interpreter_frame_print_on(outputStream* st) const;
432 void print_on_error(outputStream* st, char* buf, int buflen, bool verbose = false) const;
433 static void print_C_frame(outputStream* st, char* buf, int buflen, address pc);
434
435 // Add annotated descriptions of memory locations belonging to this frame to values
436 void describe(FrameValues& values, int frame_no, const RegisterMap* reg_map=nullptr);
437
438 // Conversion from a VMReg to physical stack location
439 template <typename RegisterMapT>
440 address oopmapreg_to_location(VMReg reg, const RegisterMapT* reg_map) const;
441 template <typename RegisterMapT>
442 oop* oopmapreg_to_oop_location(VMReg reg, const RegisterMapT* reg_map) const;
443
444 // Oops-do's
445 void oops_compiled_arguments_do(Symbol* signature, bool has_receiver, bool has_appendix, const RegisterMap* reg_map, OopClosure* f) const;
446 void oops_interpreted_do(OopClosure* f, const RegisterMap* map, bool query_oop_map_cache = true) const;
447
448 private:
449 void oops_interpreted_arguments_do(Symbol* signature, bool has_receiver, OopClosure* f) const;
450
451 // Iteration of oops
452 void oops_do_internal(OopClosure* f, CodeBlobClosure* cf,
453 DerivedOopClosure* df, DerivedPointerIterationMode derived_mode,
454 const RegisterMap* map, bool use_interpreter_oop_map_cache) const;
455
456 void oops_entry_do(OopClosure* f, const RegisterMap* map) const;
457 void oops_code_blob_do(OopClosure* f, CodeBlobClosure* cf,
458 DerivedOopClosure* df, DerivedPointerIterationMode derived_mode,
459 const RegisterMap* map) const;
460 public:
461 // Memory management
462 void oops_do(OopClosure* f, CodeBlobClosure* cf, const RegisterMap* map) {
463 #if COMPILER2_OR_JVMCI
464 DerivedPointerIterationMode dpim = DerivedPointerTable::is_active() ?
465 DerivedPointerIterationMode::_with_table :
466 DerivedPointerIterationMode::_ignore;
|
427 public:
428 void print_value() const { print_value_on(tty,nullptr); }
429 void print_value_on(outputStream* st, JavaThread *thread) const;
430 void print_on(outputStream* st) const;
431 void interpreter_frame_print_on(outputStream* st) const;
432 void print_on_error(outputStream* st, char* buf, int buflen, bool verbose = false) const;
433 static void print_C_frame(outputStream* st, char* buf, int buflen, address pc);
434
435 // Add annotated descriptions of memory locations belonging to this frame to values
436 void describe(FrameValues& values, int frame_no, const RegisterMap* reg_map=nullptr);
437
438 // Conversion from a VMReg to physical stack location
439 template <typename RegisterMapT>
440 address oopmapreg_to_location(VMReg reg, const RegisterMapT* reg_map) const;
441 template <typename RegisterMapT>
442 oop* oopmapreg_to_oop_location(VMReg reg, const RegisterMapT* reg_map) const;
443
444 // Oops-do's
445 void oops_compiled_arguments_do(Symbol* signature, bool has_receiver, bool has_appendix, const RegisterMap* reg_map, OopClosure* f) const;
446 void oops_interpreted_do(OopClosure* f, const RegisterMap* map, bool query_oop_map_cache = true) const;
447 void buffered_values_interpreted_do(BufferedValueClosure* f);
448
449 private:
450 void oops_interpreted_arguments_do(Symbol* signature, bool has_receiver, OopClosure* f) const;
451
452 // Iteration of oops
453 void oops_do_internal(OopClosure* f, CodeBlobClosure* cf,
454 DerivedOopClosure* df, DerivedPointerIterationMode derived_mode,
455 const RegisterMap* map, bool use_interpreter_oop_map_cache) const;
456
457 void oops_entry_do(OopClosure* f, const RegisterMap* map) const;
458 void oops_code_blob_do(OopClosure* f, CodeBlobClosure* cf,
459 DerivedOopClosure* df, DerivedPointerIterationMode derived_mode,
460 const RegisterMap* map) const;
461 public:
462 // Memory management
463 void oops_do(OopClosure* f, CodeBlobClosure* cf, const RegisterMap* map) {
464 #if COMPILER2_OR_JVMCI
465 DerivedPointerIterationMode dpim = DerivedPointerTable::is_active() ?
466 DerivedPointerIterationMode::_with_table :
467 DerivedPointerIterationMode::_ignore;
|