62 address _osr_buf; // the osr buffer
63 address _osr_entry; // the entry to the osr method
64 };
65
66 struct osr_result {
67 nmethod* nm; // osr nmethod
68 address return_addr; // osr blob return address
69 };
70
71 // Result returned to frame manager
72 union frame_manager_message {
73 call_message _to_call; // describes callee
74 osr_message _osr; // describes the osr
75 osr_result _osr_result; // result of OSR request
76 };
77
78 class BytecodeInterpreter : StackObj {
79 friend class SharedRuntime;
80 friend class AbstractInterpreterGenerator;
81 friend class CppInterpreterGenerator;
82 friend class InterpreterGenerator;
83 friend class InterpreterMacroAssembler;
84 friend class frame;
85 friend class VMStructs;
86
87 public:
88 enum messages {
89 no_request = 0, // unused
90 initialize, // Perform one time interpreter initializations (assumes all switches set)
91 // status message to C++ interpreter
92 method_entry, // initial method entry to interpreter
93 method_resume, // frame manager response to return_from_method request (assuming a frame to resume)
94 deopt_resume, // returning from a native call into a deopted frame
95 deopt_resume2, // deopt resume as a result of a PopFrame
96 got_monitors, // frame manager response to more_monitors request
97 rethrow_exception, // unwinding and throwing exception
98 // requests to frame manager from C++ interpreter
99 call_method, // request for new frame from interpreter, manager responds with method_entry
100 return_from_method, // request from interpreter to unwind, manager responds with method_continue
101 more_monitors, // need a new monitor
102 throwing_exception, // unwind stack and rethrow
|
62 address _osr_buf; // the osr buffer
63 address _osr_entry; // the entry to the osr method
64 };
65
66 struct osr_result {
67 nmethod* nm; // osr nmethod
68 address return_addr; // osr blob return address
69 };
70
71 // Result returned to frame manager
72 union frame_manager_message {
73 call_message _to_call; // describes callee
74 osr_message _osr; // describes the osr
75 osr_result _osr_result; // result of OSR request
76 };
77
78 class BytecodeInterpreter : StackObj {
79 friend class SharedRuntime;
80 friend class AbstractInterpreterGenerator;
81 friend class CppInterpreterGenerator;
82 friend class InterpreterMacroAssembler;
83 friend class frame;
84 friend class VMStructs;
85
86 public:
87 enum messages {
88 no_request = 0, // unused
89 initialize, // Perform one time interpreter initializations (assumes all switches set)
90 // status message to C++ interpreter
91 method_entry, // initial method entry to interpreter
92 method_resume, // frame manager response to return_from_method request (assuming a frame to resume)
93 deopt_resume, // returning from a native call into a deopted frame
94 deopt_resume2, // deopt resume as a result of a PopFrame
95 got_monitors, // frame manager response to more_monitors request
96 rethrow_exception, // unwinding and throwing exception
97 // requests to frame manager from C++ interpreter
98 call_method, // request for new frame from interpreter, manager responds with method_entry
99 return_from_method, // request from interpreter to unwind, manager responds with method_continue
100 more_monitors, // need a new monitor
101 throwing_exception, // unwind stack and rethrow
|