439 void print_value_on(outputStream* st) const;
440 void print_on(outputStream* st) const;
441 void interpreter_frame_print_on(outputStream* st) const;
442 void print_on_error(outputStream* st, char* buf, int buflen, bool verbose = false) const;
443 static void print_C_frame(outputStream* st, char* buf, int buflen, address pc);
444 static frame next_frame(frame fr, Thread* t); // For native stack walking
445
446 #ifndef PRODUCT
447 // Add annotated descriptions of memory locations belonging to this frame to values
448 void describe(FrameValues& values, int frame_no, const RegisterMap* reg_map=nullptr, bool top = false);
449 #endif
450
451 // Conversion from a VMReg to physical stack location
452 template <typename RegisterMapT>
453 address oopmapreg_to_location(VMReg reg, const RegisterMapT* reg_map) const;
454 template <typename RegisterMapT>
455 oop* oopmapreg_to_oop_location(VMReg reg, const RegisterMapT* reg_map) const;
456
457 // Oops-do's
458 void oops_compiled_arguments_do(Symbol* signature, bool has_receiver, bool has_appendix, const RegisterMap* reg_map, OopClosure* f) const;
459 void oops_interpreted_do(OopClosure* f, const RegisterMap* map, bool query_oop_map_cache = true) const;
460
461 private:
462 void oops_interpreted_arguments_do(Symbol* signature, bool has_receiver, OopClosure* f) const;
463
464 // Iteration of oops
465 void oops_do_internal(OopClosure* f, NMethodClosure* cf,
466 DerivedOopClosure* df, DerivedPointerIterationMode derived_mode,
467 const RegisterMap* map, bool use_interpreter_oop_map_cache) const;
468
469 void oops_entry_do(OopClosure* f, const RegisterMap* map) const;
470 void oops_upcall_do(OopClosure* f, const RegisterMap* map) const;
471 void oops_nmethod_do(OopClosure* f, NMethodClosure* cf,
472 DerivedOopClosure* df, DerivedPointerIterationMode derived_mode,
473 const RegisterMap* map) const;
474 public:
475 // Memory management
476 void oops_do(OopClosure* f, NMethodClosure* cf, const RegisterMap* map) {
477 #if COMPILER2_OR_JVMCI
478 DerivedPointerIterationMode dpim = DerivedPointerTable::is_active() ?
479 DerivedPointerIterationMode::_with_table :
|
439 void print_value_on(outputStream* st) const;
440 void print_on(outputStream* st) const;
441 void interpreter_frame_print_on(outputStream* st) const;
442 void print_on_error(outputStream* st, char* buf, int buflen, bool verbose = false) const;
443 static void print_C_frame(outputStream* st, char* buf, int buflen, address pc);
444 static frame next_frame(frame fr, Thread* t); // For native stack walking
445
446 #ifndef PRODUCT
447 // Add annotated descriptions of memory locations belonging to this frame to values
448 void describe(FrameValues& values, int frame_no, const RegisterMap* reg_map=nullptr, bool top = false);
449 #endif
450
451 // Conversion from a VMReg to physical stack location
452 template <typename RegisterMapT>
453 address oopmapreg_to_location(VMReg reg, const RegisterMapT* reg_map) const;
454 template <typename RegisterMapT>
455 oop* oopmapreg_to_oop_location(VMReg reg, const RegisterMapT* reg_map) const;
456
457 // Oops-do's
458 void oops_compiled_arguments_do(Symbol* signature, bool has_receiver, bool has_appendix, const RegisterMap* reg_map, OopClosure* f) const;
459 template <typename RegisterMapT>
460 void oops_interpreted_do(OopClosure* f, const RegisterMapT* map, bool query_oop_map_cache = true) const;
461
462 private:
463 void oops_interpreted_arguments_do(Symbol* signature, bool has_receiver, OopClosure* f) const;
464
465 // Iteration of oops
466 void oops_do_internal(OopClosure* f, NMethodClosure* cf,
467 DerivedOopClosure* df, DerivedPointerIterationMode derived_mode,
468 const RegisterMap* map, bool use_interpreter_oop_map_cache) const;
469
470 void oops_entry_do(OopClosure* f, const RegisterMap* map) const;
471 void oops_upcall_do(OopClosure* f, const RegisterMap* map) const;
472 void oops_nmethod_do(OopClosure* f, NMethodClosure* cf,
473 DerivedOopClosure* df, DerivedPointerIterationMode derived_mode,
474 const RegisterMap* map) const;
475 public:
476 // Memory management
477 void oops_do(OopClosure* f, NMethodClosure* cf, const RegisterMap* map) {
478 #if COMPILER2_OR_JVMCI
479 DerivedPointerIterationMode dpim = DerivedPointerTable::is_active() ?
480 DerivedPointerIterationMode::_with_table :
|