--- old/src/share/vm/runtime/frame.hpp 2016-10-25 10:40:09.629777826 +0200 +++ new/src/share/vm/runtime/frame.hpp 2016-10-25 10:40:09.580777794 +0200 @@ -89,7 +89,7 @@ // 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 @@ -103,9 +103,9 @@ // 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; } @@ -116,6 +116,10 @@ // 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