49 struct osr_result {
50 nmethod* nm; /* osr nmethod */
51 address return_addr; /* osr blob return address */
52 };
53
54 // Result returned to frame manager
55 union frame_manager_message {
56 call_message _to_call; /* describes callee */
57 Bytecodes::Code _return_kind; /* i_return, a_return, ... */
58 osr_message _osr; /* describes the osr */
59 osr_result _osr_result; /* result of OSR request */
60 };
61
62 class BytecodeInterpreter : StackObj {
63 friend class SharedRuntime;
64 friend class AbstractInterpreterGenerator;
65 friend class CppInterpreterGenerator;
66 friend class InterpreterGenerator;
67 friend class InterpreterMacroAssembler;
68 friend class frame;
69 friend class SharedRuntime;
70 friend class VMStructs;
71
72 public:
73 enum messages {
74 no_request = 0, // unused
75 initialize, // Perform one time interpreter initializations (assumes all switches set)
76 // status message to C++ interpreter
77 method_entry, // initial method entry to interpreter
78 method_resume, // frame manager response to return_from_method request (assuming a frame to resume)
79 deopt_resume, // returning from a native call into a deopted frame
80 deopt_resume2, // deopt resume as a result of a PopFrame
81 got_monitors, // frame manager response to more_monitors request
82 rethrow_exception, // unwinding and throwing exception
83 // requests to frame manager from C++ interpreter
84 call_method, // request for new frame from interpreter, manager responds with method_entry
85 return_from_method, // request from interpreter to unwind, manager responds with method_continue
86 more_monitors, // need a new monitor
87 throwing_exception, // unwind stack and rethrow
88 popping_frame, // unwind call and retry call
89 do_osr // request this invocation be OSR's
|
49 struct osr_result {
50 nmethod* nm; /* osr nmethod */
51 address return_addr; /* osr blob return address */
52 };
53
54 // Result returned to frame manager
55 union frame_manager_message {
56 call_message _to_call; /* describes callee */
57 Bytecodes::Code _return_kind; /* i_return, a_return, ... */
58 osr_message _osr; /* describes the osr */
59 osr_result _osr_result; /* result of OSR request */
60 };
61
62 class BytecodeInterpreter : StackObj {
63 friend class SharedRuntime;
64 friend class AbstractInterpreterGenerator;
65 friend class CppInterpreterGenerator;
66 friend class InterpreterGenerator;
67 friend class InterpreterMacroAssembler;
68 friend class frame;
69 friend class VMStructs;
70
71 public:
72 enum messages {
73 no_request = 0, // unused
74 initialize, // Perform one time interpreter initializations (assumes all switches set)
75 // status message to C++ interpreter
76 method_entry, // initial method entry to interpreter
77 method_resume, // frame manager response to return_from_method request (assuming a frame to resume)
78 deopt_resume, // returning from a native call into a deopted frame
79 deopt_resume2, // deopt resume as a result of a PopFrame
80 got_monitors, // frame manager response to more_monitors request
81 rethrow_exception, // unwinding and throwing exception
82 // requests to frame manager from C++ interpreter
83 call_method, // request for new frame from interpreter, manager responds with method_entry
84 return_from_method, // request from interpreter to unwind, manager responds with method_continue
85 more_monitors, // need a new monitor
86 throwing_exception, // unwind stack and rethrow
87 popping_frame, // unwind call and retry call
88 do_osr // request this invocation be OSR's
|