src/share/vm/interpreter/bytecodeInterpreter.hpp

Print this page
rev 4899 : 8019519: PPC64 (part 105): C interpreter: implement support for jvmti early return.

*** 64,94 **** typedef class BytecodeInterpreter* interpreterState; struct call_message { ! class Method* _callee; /* method to call during call_method request */ ! address _callee_entry_point; /* address to jump to for call_method request */ ! int _bcp_advance; /* size of the invoke bytecode operation */ }; struct osr_message { ! address _osr_buf; /* the osr buffer */ ! address _osr_entry; /* the entry to the osr method */ }; struct osr_result { ! nmethod* nm; /* osr nmethod */ ! address return_addr; /* osr blob return address */ }; // Result returned to frame manager union frame_manager_message { ! call_message _to_call; /* describes callee */ ! Bytecodes::Code _return_kind; /* i_return, a_return, ... */ ! osr_message _osr; /* describes the osr */ ! osr_result _osr_result; /* result of OSR request */ }; class BytecodeInterpreter : StackObj { friend class SharedRuntime; friend class AbstractInterpreterGenerator; --- 64,93 ---- typedef class BytecodeInterpreter* interpreterState; struct call_message { ! class Method* _callee; // method to call during call_method request ! address _callee_entry_point; // address to jump to for call_method request ! int _bcp_advance; // size of the invoke bytecode operation }; struct osr_message { ! address _osr_buf; // the osr buffer ! address _osr_entry; // the entry to the osr method }; struct osr_result { ! nmethod* nm; // osr nmethod ! address return_addr; // osr blob return address }; // Result returned to frame manager union frame_manager_message { ! call_message _to_call; // describes callee ! osr_message _osr; // describes the osr ! osr_result _osr_result; // result of OSR request }; class BytecodeInterpreter : StackObj { friend class SharedRuntime; friend class AbstractInterpreterGenerator;
*** 113,123 **** call_method, // request for new frame from interpreter, manager responds with method_entry return_from_method, // request from interpreter to unwind, manager responds with method_continue more_monitors, // need a new monitor throwing_exception, // unwind stack and rethrow popping_frame, // unwind call and retry call ! do_osr // request this invocation be OSR's }; private: JavaThread* _thread; // the vm's java thread pointer address _bcp; // instruction pointer --- 112,123 ---- call_method, // request for new frame from interpreter, manager responds with method_entry return_from_method, // request from interpreter to unwind, manager responds with method_continue more_monitors, // need a new monitor throwing_exception, // unwind stack and rethrow popping_frame, // unwind call and retry call ! do_osr, // request this invocation be OSR's ! early_return // early return as commanded by jvmti }; private: JavaThread* _thread; // the vm's java thread pointer address _bcp; // instruction pointer
*** 214,225 **** inline void set_osr_buf(address buf) { _result._osr._osr_buf = buf; } inline void set_osr_entry(address entry) { _result._osr._osr_entry = entry; } inline int bcp_advance() { return _result._to_call._bcp_advance; } inline void set_bcp_advance(int count) { _result._to_call._bcp_advance = count; } - inline void set_return_kind(Bytecodes::Code kind) { _result._return_kind = kind; } - inline interpreterState prev() { return _prev_link; } inline intptr_t* stack() { return _stack; } inline void set_stack(intptr_t* new_stack) { _stack = new_stack; } --- 214,223 ----