< prev index next >

src/share/vm/runtime/frame.hpp

Print this page




 308   static int interpreter_frame_monitor_size();
 309 
 310   void interpreter_frame_verify_monitor(BasicObjectLock* value) const;
 311 
 312   // Return/result value from this interpreter frame
 313   // If the method return type is T_OBJECT or T_ARRAY populates oop_result
 314   // For other (non-T_VOID) the appropriate field in the jvalue is populated
 315   // with the result value.
 316   // Should only be called when at method exit when the method is not
 317   // exiting due to an exception.
 318   BasicType interpreter_frame_result(oop* oop_result, jvalue* value_result);
 319 
 320  public:
 321   // Method & constant pool cache
 322   Method* interpreter_frame_method() const;
 323   void interpreter_frame_set_method(Method* method);
 324   Method** interpreter_frame_method_addr() const;
 325   ConstantPoolCache** interpreter_frame_cache_addr() const;
 326   oop* interpreter_frame_mirror_addr() const;
 327 




 328   void interpreter_frame_set_mirror(oop mirror);
 329 
 330  public:
 331   // Entry frames
 332   JavaCallWrapper* entry_frame_call_wrapper() const { return *entry_frame_call_wrapper_addr(); }
 333   JavaCallWrapper* entry_frame_call_wrapper_if_safe(JavaThread* thread) const;
 334   JavaCallWrapper** entry_frame_call_wrapper_addr() const;
 335   intptr_t* entry_frame_argument_at(int offset) const;
 336 
 337   // tells whether there is another chunk of Delta stack above
 338   bool entry_frame_is_first() const;
 339 
 340   // Compiled frames:
 341 
 342  public:
 343   // Given the index of a local, and the number of argument words
 344   // in this stack frame, tell which word of the stack frame to find
 345   // the local in.  Arguments are stored above the ofp/rpc pair,
 346   // while other locals are stored below it.
 347   // Since monitors (BasicLock blocks) are also assigned indexes,


 376 
 377   void describe_pd(FrameValues& values, int frame_no);
 378 
 379  public:
 380   void print_value() const { print_value_on(tty,NULL); }
 381   void print_value_on(outputStream* st, JavaThread *thread) const;
 382   void print_on(outputStream* st) const;
 383   void interpreter_frame_print_on(outputStream* st) const;
 384   void print_on_error(outputStream* st, char* buf, int buflen, bool verbose = false) const;
 385   static void print_C_frame(outputStream* st, char* buf, int buflen, address pc);
 386 
 387   // Add annotated descriptions of memory locations belonging to this frame to values
 388   void describe(FrameValues& values, int frame_no);
 389 
 390   // Conversion from an VMReg to physical stack location
 391   oop* oopmapreg_to_location(VMReg reg, const RegisterMap* regmap) const;
 392 
 393   // Oops-do's
 394   void oops_compiled_arguments_do(Symbol* signature, bool has_receiver, bool has_appendix, const RegisterMap* reg_map, OopClosure* f);
 395   void oops_interpreted_do(OopClosure* f, const RegisterMap* map, bool query_oop_map_cache = true);

 396 
 397  private:
 398   void oops_interpreted_arguments_do(Symbol* signature, bool has_receiver, OopClosure* f);
 399 
 400   // Iteration of oops
 401   void oops_do_internal(OopClosure* f, CodeBlobClosure* cf, RegisterMap* map, bool use_interpreter_oop_map_cache);
 402   void oops_entry_do(OopClosure* f, const RegisterMap* map);
 403   void oops_code_blob_do(OopClosure* f, CodeBlobClosure* cf, const RegisterMap* map);
 404   int adjust_offset(Method* method, int index); // helper for above fn
 405  public:
 406   // Memory management
 407   void oops_do(OopClosure* f, CodeBlobClosure* cf, RegisterMap* map) { oops_do_internal(f, cf, map, true); }
 408   void nmethods_do(CodeBlobClosure* cf);
 409 
 410   // RedefineClasses support for finding live interpreted methods on the stack
 411   void metadata_do(void f(Metadata*));
 412 
 413   // Verification
 414   void verify(const RegisterMap* map);
 415   static bool verify_return_pc(address x);




 308   static int interpreter_frame_monitor_size();
 309 
 310   void interpreter_frame_verify_monitor(BasicObjectLock* value) const;
 311 
 312   // Return/result value from this interpreter frame
 313   // If the method return type is T_OBJECT or T_ARRAY populates oop_result
 314   // For other (non-T_VOID) the appropriate field in the jvalue is populated
 315   // with the result value.
 316   // Should only be called when at method exit when the method is not
 317   // exiting due to an exception.
 318   BasicType interpreter_frame_result(oop* oop_result, jvalue* value_result);
 319 
 320  public:
 321   // Method & constant pool cache
 322   Method* interpreter_frame_method() const;
 323   void interpreter_frame_set_method(Method* method);
 324   Method** interpreter_frame_method_addr() const;
 325   ConstantPoolCache** interpreter_frame_cache_addr() const;
 326   oop* interpreter_frame_mirror_addr() const;
 327 
 328   intptr_t* interpreter_frame_vt_alloc_ptr() const;
 329   intptr_t** interpreter_frame_vt_alloc_ptr_addr() const;
 330   void interpreter_frame_set_vt_alloc_ptr(intptr_t* ptr);
 331 
 332   void interpreter_frame_set_mirror(oop mirror);
 333 
 334  public:
 335   // Entry frames
 336   JavaCallWrapper* entry_frame_call_wrapper() const { return *entry_frame_call_wrapper_addr(); }
 337   JavaCallWrapper* entry_frame_call_wrapper_if_safe(JavaThread* thread) const;
 338   JavaCallWrapper** entry_frame_call_wrapper_addr() const;
 339   intptr_t* entry_frame_argument_at(int offset) const;
 340 
 341   // tells whether there is another chunk of Delta stack above
 342   bool entry_frame_is_first() const;
 343 
 344   // Compiled frames:
 345 
 346  public:
 347   // Given the index of a local, and the number of argument words
 348   // in this stack frame, tell which word of the stack frame to find
 349   // the local in.  Arguments are stored above the ofp/rpc pair,
 350   // while other locals are stored below it.
 351   // Since monitors (BasicLock blocks) are also assigned indexes,


 380 
 381   void describe_pd(FrameValues& values, int frame_no);
 382 
 383  public:
 384   void print_value() const { print_value_on(tty,NULL); }
 385   void print_value_on(outputStream* st, JavaThread *thread) const;
 386   void print_on(outputStream* st) const;
 387   void interpreter_frame_print_on(outputStream* st) const;
 388   void print_on_error(outputStream* st, char* buf, int buflen, bool verbose = false) const;
 389   static void print_C_frame(outputStream* st, char* buf, int buflen, address pc);
 390 
 391   // Add annotated descriptions of memory locations belonging to this frame to values
 392   void describe(FrameValues& values, int frame_no);
 393 
 394   // Conversion from an VMReg to physical stack location
 395   oop* oopmapreg_to_location(VMReg reg, const RegisterMap* regmap) const;
 396 
 397   // Oops-do's
 398   void oops_compiled_arguments_do(Symbol* signature, bool has_receiver, bool has_appendix, const RegisterMap* reg_map, OopClosure* f);
 399   void oops_interpreted_do(OopClosure* f, const RegisterMap* map, bool query_oop_map_cache = true);
 400   void buffered_values_interpreted_do(BufferedValueClosure* f);
 401 
 402  private:
 403   void oops_interpreted_arguments_do(Symbol* signature, bool has_receiver, OopClosure* f);
 404 
 405   // Iteration of oops
 406   void oops_do_internal(OopClosure* f, CodeBlobClosure* cf, RegisterMap* map, bool use_interpreter_oop_map_cache);
 407   void oops_entry_do(OopClosure* f, const RegisterMap* map);
 408   void oops_code_blob_do(OopClosure* f, CodeBlobClosure* cf, const RegisterMap* map);
 409   int adjust_offset(Method* method, int index); // helper for above fn
 410  public:
 411   // Memory management
 412   void oops_do(OopClosure* f, CodeBlobClosure* cf, RegisterMap* map) { oops_do_internal(f, cf, map, true); }
 413   void nmethods_do(CodeBlobClosure* cf);
 414 
 415   // RedefineClasses support for finding live interpreted methods on the stack
 416   void metadata_do(void f(Metadata*));
 417 
 418   // Verification
 419   void verify(const RegisterMap* map);
 420   static bool verify_return_pc(address x);


< prev index next >