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