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