src/share/vm/code/codeBlob.hpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File hotspot Cdiff src/share/vm/code/codeBlob.hpp

src/share/vm/code/codeBlob.hpp

Print this page
rev 5903 : [mq]: deoptstackoverflowmonitor

*** 354,371 **** --- 354,374 ---- int _unpack_with_exception; int _unpack_with_reexecution; int _unpack_with_exception_in_tls; + int _stack_overflow_offset; + // Creation support DeoptimizationBlob( CodeBuffer* cb, int size, OopMapSet* oop_maps, int unpack_offset, int unpack_with_exception_offset, int unpack_with_reexecution_offset, + int stack_overflow_offset, int frame_size ); public: // Creation
*** 373,404 **** CodeBuffer* cb, OopMapSet* oop_maps, int unpack_offset, int unpack_with_exception_offset, int unpack_with_reexecution_offset, int frame_size ); // Typing bool is_deoptimization_stub() const { return true; } bool exception_address_is_unpack_entry(address pc) const { address unpack_pc = unpack(); 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 */ } // Printing void print_value_on(outputStream* st) const; 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; } // Alternate entry point for C1 where the exception and issuing pc // are in JavaThread::_exception_oop and JavaThread::_exception_pc // instead of being in registers. This is needed because C1 doesn't // model exception paths in a way that keeps these registers free so --- 376,406 ---- CodeBuffer* cb, OopMapSet* oop_maps, int unpack_offset, int unpack_with_exception_offset, int unpack_with_reexecution_offset, + int stack_overflow_offset, int frame_size ); // Typing bool is_deoptimization_stub() const { return true; } bool exception_address_is_unpack_entry(address pc) const { address unpack_pc = unpack(); 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 */ } // Printing void print_value_on(outputStream* st) const; 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 // instead of being in registers. This is needed because C1 doesn't // model exception paths in a way that keeps these registers free so
*** 417,442 **** --- 419,450 ---- #ifdef COMPILER2 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 ); public: // Creation 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 */ } // Typing bool is_uncommon_trap_stub() const { return true; }
src/share/vm/code/codeBlob.hpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File