175 176 177 // Constant pool cache 178 179 inline ConstantPoolCache** frame::interpreter_frame_cache_addr() const { 180 return (ConstantPoolCache**)addr_at(interpreter_frame_cache_offset); 181 } 182 183 // Method 184 185 inline Method** frame::interpreter_frame_method_addr() const { 186 return (Method**)addr_at(interpreter_frame_method_offset); 187 } 188 189 // Mirror 190 191 inline oop* frame::interpreter_frame_mirror_addr() const { 192 return (oop*)addr_at(interpreter_frame_mirror_offset); 193 } 194 195 // top of expression stack 196 inline intptr_t* frame::interpreter_frame_tos_address() const { 197 intptr_t* last_sp = interpreter_frame_last_sp(); 198 if (last_sp == NULL) { 199 return sp(); 200 } else { 201 // sp() may have been extended or shrunk by an adapter. At least 202 // check that we don't fall behind the legal region. 203 // For top deoptimized frame last_sp == interpreter_frame_monitor_end. 204 assert(last_sp <= (intptr_t*) interpreter_frame_monitor_end(), "bad tos"); 205 return last_sp; 206 } 207 } 208 209 inline oop* frame::interpreter_frame_temp_oop_addr() const { 210 return (oop *)(fp() + interpreter_frame_oop_temp_offset); 211 } 212 213 inline int frame::pd_oop_map_offset_adjustment() const { 214 return 0; | 175 176 177 // Constant pool cache 178 179 inline ConstantPoolCache** frame::interpreter_frame_cache_addr() const { 180 return (ConstantPoolCache**)addr_at(interpreter_frame_cache_offset); 181 } 182 183 // Method 184 185 inline Method** frame::interpreter_frame_method_addr() const { 186 return (Method**)addr_at(interpreter_frame_method_offset); 187 } 188 189 // Mirror 190 191 inline oop* frame::interpreter_frame_mirror_addr() const { 192 return (oop*)addr_at(interpreter_frame_mirror_offset); 193 } 194 195 inline intptr_t** frame::interpreter_frame_vt_alloc_ptr_addr() const { 196 return (intptr_t**)addr_at(interpreter_frame_vt_alloc_ptr_offset); 197 } 198 199 // top of expression stack 200 inline intptr_t* frame::interpreter_frame_tos_address() const { 201 intptr_t* last_sp = interpreter_frame_last_sp(); 202 if (last_sp == NULL) { 203 return sp(); 204 } else { 205 // sp() may have been extended or shrunk by an adapter. At least 206 // check that we don't fall behind the legal region. 207 // For top deoptimized frame last_sp == interpreter_frame_monitor_end. 208 assert(last_sp <= (intptr_t*) interpreter_frame_monitor_end(), "bad tos"); 209 return last_sp; 210 } 211 } 212 213 inline oop* frame::interpreter_frame_temp_oop_addr() const { 214 return (oop *)(fp() + interpreter_frame_oop_temp_offset); 215 } 216 217 inline int frame::pd_oop_map_offset_adjustment() const { 218 return 0; |