--- old/src/share/vm/code/codeBlob.hpp 2014-02-20 18:41:06.637512575 +0100 +++ new/src/share/vm/code/codeBlob.hpp 2014-02-20 18:41:06.366743693 +0100 @@ -356,6 +356,8 @@ int _unpack_with_exception_in_tls; + int _stack_overflow_offset; + // Creation support DeoptimizationBlob( CodeBuffer* cb, @@ -364,6 +366,7 @@ int unpack_offset, int unpack_with_exception_offset, int unpack_with_reexecution_offset, + int stack_overflow_offset, int frame_size ); @@ -375,6 +378,7 @@ int unpack_offset, int unpack_with_exception_offset, int unpack_with_reexecution_offset, + int stack_overflow_offset, int frame_size ); @@ -385,9 +389,6 @@ return (pc == unpack_pc || (pc + frame::pc_return_offset) == unpack_pc); } - - - // GC for args void preserve_callee_argument_oops(frame fr, const RegisterMap *reg_map, OopClosure* f) { /* Nothing to do */ } @@ -397,6 +398,7 @@ address unpack() const { return code_begin() + _unpack_offset; } address unpack_with_exception() const { return code_begin() + _unpack_with_exception; } address unpack_with_reexecution() const { return code_begin() + _unpack_with_reexecution; } + address stack_overflow() const { return code_begin() + _stack_overflow_offset; } // Alternate entry point for C1 where the exception and issuing pc // are in JavaThread::_exception_oop and JavaThread::_exception_pc @@ -419,11 +421,14 @@ class UncommonTrapBlob: public SingletonBlob { friend class VMStructs; private: + int _stack_overflow_offset; + // Creation support UncommonTrapBlob( CodeBuffer* cb, int size, OopMapSet* oop_maps, + int stack_overflow_offset, int frame_size ); @@ -432,9 +437,12 @@ static UncommonTrapBlob* create( CodeBuffer* cb, OopMapSet* oop_maps, + int stack_overflow_offset, int frame_size ); + address stack_overflow() const { return code_begin() + _stack_overflow_offset; } + // GC for args void preserve_callee_argument_oops(frame fr, const RegisterMap *reg_map, OopClosure* f) { /* nothing to do */ }