Mercurial > hg > graal-jvmci-8
comparison src/cpu/sparc/vm/frame_sparc.cpp @ 22803:f43fad8786fc
8058345: Refactor native stack printing from vmError.cpp to debug.cpp to make it available in gdb as well
Summary: Also fix stack trace on x86 to enable walking of runtime stubs and native wrappers
Reviewed-by: kvn
author | simonis |
---|---|
date | Wed, 24 Sep 2014 12:19:07 -0700 |
parents | 190899198332 |
children | 5d96c022391c |
comparison
equal
deleted
inserted
replaced
22802:0ef505d06e12 | 22803:f43fad8786fc |
---|---|
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 |