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