340 } |
340 } |
341 |
341 |
342 // constructors |
342 // constructors |
343 |
343 |
344 // Construct an unpatchable, deficient frame |
344 // Construct an unpatchable, deficient frame |
345 frame::frame(intptr_t* sp, unpatchable_t, address pc, CodeBlob* cb) { |
345 void frame::init(intptr_t* sp, address pc, CodeBlob* cb) { |
346 #ifdef _LP64 |
346 #ifdef _LP64 |
347 assert( (((intptr_t)sp & (wordSize-1)) == 0), "frame constructor passed an invalid sp"); |
347 assert( (((intptr_t)sp & (wordSize-1)) == 0), "frame constructor passed an invalid sp"); |
348 #endif |
348 #endif |
349 _sp = sp; |
349 _sp = sp; |
350 _younger_sp = NULL; |
350 _younger_sp = NULL; |
360 if ( _cb != NULL && _cb->is_nmethod()) { |
360 if ( _cb != NULL && _cb->is_nmethod()) { |
361 // Without a valid unextended_sp() we can't convert the pc to "original" |
361 // Without a valid unextended_sp() we can't convert the pc to "original" |
362 assert(!((nmethod*)_cb)->is_deopt_pc(_pc), "invariant broken"); |
362 assert(!((nmethod*)_cb)->is_deopt_pc(_pc), "invariant broken"); |
363 } |
363 } |
364 #endif // ASSERT |
364 #endif // ASSERT |
|
365 } |
|
366 |
|
367 frame::frame(intptr_t* sp, unpatchable_t, address pc, CodeBlob* cb) { |
|
368 init(sp, pc, cb); |
365 } |
369 } |
366 |
370 |
367 frame::frame(intptr_t* sp, intptr_t* younger_sp, bool younger_frame_is_interpreted) : |
371 frame::frame(intptr_t* sp, intptr_t* younger_sp, bool younger_frame_is_interpreted) : |
368 _sp(sp), |
372 _sp(sp), |
369 _younger_sp(younger_sp), |
373 _younger_sp(younger_sp), |
415 } else { |
419 } else { |
416 _deopt_state = not_deoptimized; |
420 _deopt_state = not_deoptimized; |
417 } |
421 } |
418 } |
422 } |
419 } |
423 } |
|
424 |
|
425 #ifndef PRODUCT |
|
426 // This is a generic constructor which is only used by pns() in debug.cpp. |
|
427 frame::frame(void* sp, void* fp, void* pc) { |
|
428 init((intptr_t*)sp, (address)pc, NULL); |
|
429 } |
|
430 #endif |
420 |
431 |
421 bool frame::is_interpreted_frame() const { |
432 bool frame::is_interpreted_frame() const { |
422 return Interpreter::contains(pc()); |
433 return Interpreter::contains(pc()); |
423 } |
434 } |
424 |
435 |