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