204 jint* int_at_addr(int offset) const { return (jint*) addr_at(offset); } 205 206 public: 207 // Link (i.e., the pointer to the previous frame) 208 intptr_t* link() const; 209 void set_link(intptr_t* addr); 210 211 // Return address 212 address sender_pc() const; 213 214 // Support for deoptimization 215 void deoptimize(JavaThread* thread); 216 217 // The frame's original SP, before any extension by an interpreted callee; 218 // used for packing debug info into vframeArray objects and vframeArray lookup. 219 intptr_t* unextended_sp() const; 220 221 // returns the stack pointer of the calling frame 222 intptr_t* sender_sp() const; 223 224 225 // Interpreter frames: 226 227 private: 228 intptr_t** interpreter_frame_locals_addr() const; 229 intptr_t* interpreter_frame_bcx_addr() const; 230 intptr_t* interpreter_frame_mdx_addr() const; 231 232 public: 233 // Locals 234 235 // The _at version returns a pointer because the address is used for GC. 236 intptr_t* interpreter_frame_local_at(int index) const; 237 238 void interpreter_frame_set_locals(intptr_t* locs); 239 240 // byte code index/pointer (use these functions for unchecked frame access only!) 241 intptr_t interpreter_frame_bcx() const { return *interpreter_frame_bcx_addr(); } 242 void interpreter_frame_set_bcx(intptr_t bcx); 243 | 204 jint* int_at_addr(int offset) const { return (jint*) addr_at(offset); } 205 206 public: 207 // Link (i.e., the pointer to the previous frame) 208 intptr_t* link() const; 209 void set_link(intptr_t* addr); 210 211 // Return address 212 address sender_pc() const; 213 214 // Support for deoptimization 215 void deoptimize(JavaThread* thread); 216 217 // The frame's original SP, before any extension by an interpreted callee; 218 // used for packing debug info into vframeArray objects and vframeArray lookup. 219 intptr_t* unextended_sp() const; 220 221 // returns the stack pointer of the calling frame 222 intptr_t* sender_sp() const; 223 224 // Deoptimization info, if needed (platform dependent). 225 // Stored in the initial_fp field of the unroll info, to be used by 226 // the platform dependent deoptimization blobs. 227 intptr_t *initial_deoptimization_info(); 228 229 // Interpreter frames: 230 231 private: 232 intptr_t** interpreter_frame_locals_addr() const; 233 intptr_t* interpreter_frame_bcx_addr() const; 234 intptr_t* interpreter_frame_mdx_addr() const; 235 236 public: 237 // Locals 238 239 // The _at version returns a pointer because the address is used for GC. 240 intptr_t* interpreter_frame_local_at(int index) const; 241 242 void interpreter_frame_set_locals(intptr_t* locs); 243 244 // byte code index/pointer (use these functions for unchecked frame access only!) 245 intptr_t interpreter_frame_bcx() const { return *interpreter_frame_bcx_addr(); } 246 void interpreter_frame_set_bcx(intptr_t bcx); 247 |