hotspot/src/share/vm/runtime/frame.hpp
changeset 25717 7493b8ac31b7
parent 25715 d5a8dbdc5150
parent 25714 87fa6860b5ae
child 26821 ce9f82507dc2
equal deleted inserted replaced
25716:fc9bd7814b10 25717:7493b8ac31b7
   216 
   216 
   217   // Interpreter frames:
   217   // Interpreter frames:
   218 
   218 
   219  private:
   219  private:
   220   intptr_t** interpreter_frame_locals_addr() const;
   220   intptr_t** interpreter_frame_locals_addr() const;
   221   intptr_t*  interpreter_frame_bcx_addr() const;
   221   intptr_t*  interpreter_frame_bcp_addr() const;
   222   intptr_t*  interpreter_frame_mdx_addr() const;
   222   intptr_t*  interpreter_frame_mdp_addr() const;
   223 
   223 
   224  public:
   224  public:
   225   // Locals
   225   // Locals
   226 
   226 
   227   // The _at version returns a pointer because the address is used for GC.
   227   // The _at version returns a pointer because the address is used for GC.
   228   intptr_t* interpreter_frame_local_at(int index) const;
   228   intptr_t* interpreter_frame_local_at(int index) const;
   229 
   229 
   230   void interpreter_frame_set_locals(intptr_t* locs);
   230   void interpreter_frame_set_locals(intptr_t* locs);
   231 
   231 
   232   // byte code index/pointer (use these functions for unchecked frame access only!)
       
   233   intptr_t interpreter_frame_bcx() const                  { return *interpreter_frame_bcx_addr(); }
       
   234   void interpreter_frame_set_bcx(intptr_t bcx);
       
   235 
       
   236   // byte code index
   232   // byte code index
   237   jint interpreter_frame_bci() const;
   233   jint interpreter_frame_bci() const;
   238   void interpreter_frame_set_bci(jint bci);
       
   239 
   234 
   240   // byte code pointer
   235   // byte code pointer
   241   address interpreter_frame_bcp() const;
   236   address interpreter_frame_bcp() const;
   242   void    interpreter_frame_set_bcp(address bcp);
   237   void    interpreter_frame_set_bcp(address bcp);
   243 
       
   244   // Unchecked access to the method data index/pointer.
       
   245   // Only use this if you know what you are doing.
       
   246   intptr_t interpreter_frame_mdx() const                  { return *interpreter_frame_mdx_addr(); }
       
   247   void interpreter_frame_set_mdx(intptr_t mdx);
       
   248 
   238 
   249   // method data pointer
   239   // method data pointer
   250   address interpreter_frame_mdp() const;
   240   address interpreter_frame_mdp() const;
   251   void    interpreter_frame_set_mdp(address dp);
   241   void    interpreter_frame_set_mdp(address dp);
   252 
   242 
   411   void oops_do(OopClosure* f, CLDClosure* cld_f, CodeBlobClosure* cf, RegisterMap* map) { oops_do_internal(f, cld_f, cf, map, true); }
   401   void oops_do(OopClosure* f, CLDClosure* cld_f, CodeBlobClosure* cf, RegisterMap* map) { oops_do_internal(f, cld_f, cf, map, true); }
   412   void nmethods_do(CodeBlobClosure* cf);
   402   void nmethods_do(CodeBlobClosure* cf);
   413 
   403 
   414   // RedefineClasses support for finding live interpreted methods on the stack
   404   // RedefineClasses support for finding live interpreted methods on the stack
   415   void metadata_do(void f(Metadata*));
   405   void metadata_do(void f(Metadata*));
   416 
       
   417   void gc_prologue();
       
   418   void gc_epilogue();
       
   419   void pd_gc_epilog();
       
   420 
   406 
   421 # ifdef ENABLE_ZAP_DEAD_LOCALS
   407 # ifdef ENABLE_ZAP_DEAD_LOCALS
   422  private:
   408  private:
   423   class CheckValueClosure: public OopClosure {
   409   class CheckValueClosure: public OopClosure {
   424    public:
   410    public:
   452   void zap_dead_deoptimized_locals(JavaThread* thread, const RegisterMap* map);
   438   void zap_dead_deoptimized_locals(JavaThread* thread, const RegisterMap* map);
   453 # endif
   439 # endif
   454   // Verification
   440   // Verification
   455   void verify(const RegisterMap* map);
   441   void verify(const RegisterMap* map);
   456   static bool verify_return_pc(address x);
   442   static bool verify_return_pc(address x);
   457   static bool is_bci(intptr_t bcx);
       
   458   // Usage:
   443   // Usage:
   459   // assert(frame::verify_return_pc(return_address), "must be a return pc");
   444   // assert(frame::verify_return_pc(return_address), "must be a return pc");
   460 
   445 
   461   int pd_oop_map_offset_adjustment() const;
   446   int pd_oop_map_offset_adjustment() const;
   462 
   447