< prev index next >

src/share/vm/runtime/frame.hpp

Print this page

        

*** 87,97 **** // This is a generic constructor which is only used by pns() in debug.cpp. // pns (i.e. print native stack) uses this constructor to create a starting // frame for stack walking. The implementation of this constructor is platform // dependent (i.e. SPARC doesn't need an 'fp' argument an will ignore it) but // we want to keep the signature generic because pns() is shared code. ! frame(void* sp, void* fp, void* pc); #endif // Accessors // pc: Returns the pc at which this frame will continue normally. --- 87,97 ---- // This is a generic constructor which is only used by pns() in debug.cpp. // pns (i.e. print native stack) uses this constructor to create a starting // frame for stack walking. The implementation of this constructor is platform // dependent (i.e. SPARC doesn't need an 'fp' argument an will ignore it) but // we want to keep the signature generic because pns() is shared code. ! frame(Thread* thread, void* sp, void* fp, void* pc); #endif // Accessors // pc: Returns the pc at which this frame will continue normally.
*** 101,123 **** // This returns the pc that if you were in the debugger you'd see. Not // the idealized value in the frame object. This undoes the magic conversion // that happens for deoptimized frames. In addition it makes the value the // hardware would want to see in the native frame. The only user (at this point) // is deoptimization. It likely no one else should ever use it. ! address raw_pc() const; ! void set_pc( address newpc ); intptr_t* sp() const { return _sp; } void set_sp( intptr_t* newsp ) { _sp = newsp; } CodeBlob* cb() const { return _cb; } // patching operations void patch_pc(Thread* thread, address pc); // Every frame needs to return a unique id which distinguishes it from all other frames. // For sparc and ia32 use sp. ia64 can have memory frames that are empty so multiple frames // will have identical sp values. For ia64 the bsp (fp) value will serve. No real frame // should have an id() of NULL so it is a distinguishing value for an unmatchable frame. // We also have relationals which allow comparing a frame to anoth frame's id() allow --- 101,127 ---- // This returns the pc that if you were in the debugger you'd see. Not // the idealized value in the frame object. This undoes the magic conversion // that happens for deoptimized frames. In addition it makes the value the // hardware would want to see in the native frame. The only user (at this point) // is deoptimization. It likely no one else should ever use it. ! address raw_pc(Thread* thread) const; ! void set_pc(Thread* thread, address newpc); intptr_t* sp() const { return _sp; } void set_sp( intptr_t* newsp ) { _sp = newsp; } CodeBlob* cb() const { return _cb; } // patching operations void patch_pc(Thread* thread, address pc); + address* raw_sender_pc_addr(); + void memento_mark(Thread* thread); + bool is_memento_marked(Thread* thread); + // Every frame needs to return a unique id which distinguishes it from all other frames. // For sparc and ia32 use sp. ia64 can have memory frames that are empty so multiple frames // will have identical sp values. For ia64 the bsp (fp) value will serve. No real frame // should have an id() of NULL so it is a distinguishing value for an unmatchable frame. // We also have relationals which allow comparing a frame to anoth frame's id() allow
< prev index next >