< prev index next >
src/share/vm/runtime/frame.hpp
Print this page
@@ -87,11 +87,11 @@
// 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);
+ frame(Thread* thread, void* sp, void* fp, void* pc);
#endif
// Accessors
// pc: Returns the pc at which this frame will continue normally.
@@ -101,23 +101,27 @@
// 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;
+ address raw_pc(Thread* thread) const;
- void set_pc( address newpc );
+ 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 >