346
347 void describe_pd(FrameValues& values, int frame_no);
348
349 public:
350 void print_value() const { print_value_on(tty,NULL); }
351 void print_value_on(outputStream* st, JavaThread *thread) const;
352 void print_on(outputStream* st) const;
353 void interpreter_frame_print_on(outputStream* st) const;
354 void print_on_error(outputStream* st, char* buf, int buflen, bool verbose = false) const;
355 static void print_C_frame(outputStream* st, char* buf, int buflen, address pc);
356
357 // Add annotated descriptions of memory locations belonging to this frame to values
358 void describe(FrameValues& values, int frame_no);
359
360 // Conversion from a VMReg to physical stack location
361 oop* oopmapreg_to_location(VMReg reg, const RegisterMap* reg_map) const;
362
363 // Oops-do's
364 void oops_compiled_arguments_do(Symbol* signature, bool has_receiver, bool has_appendix, const RegisterMap* reg_map, OopClosure* f);
365 void oops_interpreted_do(OopClosure* f, const RegisterMap* map, bool query_oop_map_cache = true);
366
367 private:
368 void oops_interpreted_arguments_do(Symbol* signature, bool has_receiver, OopClosure* f);
369
370 // Iteration of oops
371 void oops_do_internal(OopClosure* f, CodeBlobClosure* cf, RegisterMap* map, bool use_interpreter_oop_map_cache);
372 void oops_entry_do(OopClosure* f, const RegisterMap* map);
373 void oops_code_blob_do(OopClosure* f, CodeBlobClosure* cf, const RegisterMap* map);
374 int adjust_offset(Method* method, int index); // helper for above fn
375 public:
376 // Memory management
377 void oops_do(OopClosure* f, CodeBlobClosure* cf, RegisterMap* map) { oops_do_internal(f, cf, map, true); }
378 void nmethods_do(CodeBlobClosure* cf);
379
380 // RedefineClasses support for finding live interpreted methods on the stack
381 void metadata_do(void f(Metadata*));
382
383 // Verification
384 void verify(const RegisterMap* map);
385 static bool verify_return_pc(address x);
|
346
347 void describe_pd(FrameValues& values, int frame_no);
348
349 public:
350 void print_value() const { print_value_on(tty,NULL); }
351 void print_value_on(outputStream* st, JavaThread *thread) const;
352 void print_on(outputStream* st) const;
353 void interpreter_frame_print_on(outputStream* st) const;
354 void print_on_error(outputStream* st, char* buf, int buflen, bool verbose = false) const;
355 static void print_C_frame(outputStream* st, char* buf, int buflen, address pc);
356
357 // Add annotated descriptions of memory locations belonging to this frame to values
358 void describe(FrameValues& values, int frame_no);
359
360 // Conversion from a VMReg to physical stack location
361 oop* oopmapreg_to_location(VMReg reg, const RegisterMap* reg_map) const;
362
363 // Oops-do's
364 void oops_compiled_arguments_do(Symbol* signature, bool has_receiver, bool has_appendix, const RegisterMap* reg_map, OopClosure* f);
365 void oops_interpreted_do(OopClosure* f, const RegisterMap* map, bool query_oop_map_cache = true);
366 void buffered_values_interpreted_do(BufferedValueClosure* f);
367
368 private:
369 void oops_interpreted_arguments_do(Symbol* signature, bool has_receiver, OopClosure* f);
370
371 // Iteration of oops
372 void oops_do_internal(OopClosure* f, CodeBlobClosure* cf, RegisterMap* map, bool use_interpreter_oop_map_cache);
373 void oops_entry_do(OopClosure* f, const RegisterMap* map);
374 void oops_code_blob_do(OopClosure* f, CodeBlobClosure* cf, const RegisterMap* map);
375 int adjust_offset(Method* method, int index); // helper for above fn
376 public:
377 // Memory management
378 void oops_do(OopClosure* f, CodeBlobClosure* cf, RegisterMap* map) { oops_do_internal(f, cf, map, true); }
379 void nmethods_do(CodeBlobClosure* cf);
380
381 // RedefineClasses support for finding live interpreted methods on the stack
382 void metadata_do(void f(Metadata*));
383
384 // Verification
385 void verify(const RegisterMap* map);
386 static bool verify_return_pc(address x);
|