230 // Method
231
232 inline Method** frame::interpreter_frame_method_addr() const {
233 return (Method**)addr_at(interpreter_frame_method_offset);
234 }
235
236 // top of expression stack
237 inline intptr_t* frame::interpreter_frame_tos_address() const {
238 intptr_t* last_sp = interpreter_frame_last_sp();
239 if (last_sp == NULL) {
240 return sp();
241 } else {
242 // sp() may have been extended or shrunk by an adapter. At least
243 // check that we don't fall behind the legal region.
244 // For top deoptimized frame last_sp == interpreter_frame_monitor_end.
245 assert(last_sp <= (intptr_t*) interpreter_frame_monitor_end(), "bad tos");
246 return last_sp;
247 }
248 }
249
250 #endif /* CC_INTERP */
251
252 inline int frame::pd_oop_map_offset_adjustment() const {
253 return 0;
254 }
255
256 inline int frame::interpreter_frame_monitor_size() {
257 return BasicObjectLock::size();
258 }
259
260
261 // expression stack
262 // (the max_stack arguments are used by the GC; see class FrameClosure)
263
264 inline intptr_t* frame::interpreter_frame_expression_stack() const {
265 intptr_t* monitor_end = (intptr_t*) interpreter_frame_monitor_end();
266 return monitor_end-1;
267 }
268
269
|
230 // Method
231
232 inline Method** frame::interpreter_frame_method_addr() const {
233 return (Method**)addr_at(interpreter_frame_method_offset);
234 }
235
236 // top of expression stack
237 inline intptr_t* frame::interpreter_frame_tos_address() const {
238 intptr_t* last_sp = interpreter_frame_last_sp();
239 if (last_sp == NULL) {
240 return sp();
241 } else {
242 // sp() may have been extended or shrunk by an adapter. At least
243 // check that we don't fall behind the legal region.
244 // For top deoptimized frame last_sp == interpreter_frame_monitor_end.
245 assert(last_sp <= (intptr_t*) interpreter_frame_monitor_end(), "bad tos");
246 return last_sp;
247 }
248 }
249
250 inline oop* frame::interpreter_frame_temp_oop_addr() const {
251 return (oop *)(fp() + interpreter_frame_oop_temp_offset);
252 }
253
254 #endif /* CC_INTERP */
255
256 inline int frame::pd_oop_map_offset_adjustment() const {
257 return 0;
258 }
259
260 inline int frame::interpreter_frame_monitor_size() {
261 return BasicObjectLock::size();
262 }
263
264
265 // expression stack
266 // (the max_stack arguments are used by the GC; see class FrameClosure)
267
268 inline intptr_t* frame::interpreter_frame_expression_stack() const {
269 intptr_t* monitor_end = (intptr_t*) interpreter_frame_monitor_end();
270 return monitor_end-1;
271 }
272
273
|