equal
deleted
inserted
replaced
90 friend class CodeCacheExtensions; |
90 friend class CodeCacheExtensions; |
91 // friend class Interpreter; |
91 // friend class Interpreter; |
92 public: |
92 public: |
93 |
93 |
94 enum MoreConstants { |
94 enum MoreConstants { |
95 number_of_return_entries = number_of_states, // number of return entry points |
95 max_invoke_length = 5, // invokedynamic is the longest |
96 number_of_deopt_entries = number_of_states, // number of deoptimization entry points |
96 max_bytecode_length = 6, // worse case is wide iinc, "reexecute" bytecodes are excluded because "skip" will be 0 |
|
97 number_of_return_entries = max_invoke_length + 1, // number of return entry points |
|
98 number_of_deopt_entries = max_bytecode_length + 1, // number of deoptimization entry points |
97 number_of_return_addrs = number_of_states // number of return addresses |
99 number_of_return_addrs = number_of_states // number of return addresses |
98 }; |
100 }; |
99 |
101 |
100 protected: |
102 protected: |
101 |
103 |
117 static EntryPoint _trace_code; |
119 static EntryPoint _trace_code; |
118 #endif // !PRODUCT |
120 #endif // !PRODUCT |
119 static EntryPoint _return_entry[number_of_return_entries]; // entry points to return to from a call |
121 static EntryPoint _return_entry[number_of_return_entries]; // entry points to return to from a call |
120 static EntryPoint _earlyret_entry; // entry point to return early from a call |
122 static EntryPoint _earlyret_entry; // entry point to return early from a call |
121 static EntryPoint _deopt_entry[number_of_deopt_entries]; // entry points to return to from a deoptimization |
123 static EntryPoint _deopt_entry[number_of_deopt_entries]; // entry points to return to from a deoptimization |
|
124 static address _deopt_reexecute_return_entry; |
122 static EntryPoint _safept_entry; |
125 static EntryPoint _safept_entry; |
123 |
126 |
124 static address _invoke_return_entry[number_of_return_addrs]; // for invokestatic, invokespecial, invokevirtual return entries |
127 static address _invoke_return_entry[number_of_return_addrs]; // for invokestatic, invokespecial, invokevirtual return entries |
125 static address _invokeinterface_return_entry[number_of_return_addrs]; // for invokeinterface return entries |
128 static address _invokeinterface_return_entry[number_of_return_addrs]; // for invokeinterface return entries |
126 static address _invokedynamic_return_entry[number_of_return_addrs]; // for invokedynamic return entries |
129 static address _invokedynamic_return_entry[number_of_return_addrs]; // for invokedynamic return entries |
171 static int TosState_as_index(TosState state); |
174 static int TosState_as_index(TosState state); |
172 |
175 |
173 static address* invoke_return_entry_table_for(Bytecodes::Code code); |
176 static address* invoke_return_entry_table_for(Bytecodes::Code code); |
174 |
177 |
175 static address deopt_entry(TosState state, int length); |
178 static address deopt_entry(TosState state, int length); |
|
179 static address deopt_reexecute_return_entry() { return _deopt_reexecute_return_entry; } |
176 static address return_entry(TosState state, int length, Bytecodes::Code code); |
180 static address return_entry(TosState state, int length, Bytecodes::Code code); |
177 |
181 |
178 // Safepoint support |
182 // Safepoint support |
179 static void notice_safepoints(); // stops the thread when reaching a safepoint |
183 static void notice_safepoints(); // stops the thread when reaching a safepoint |
180 static void ignore_safepoints(); // ignores safepoints |
184 static void ignore_safepoints(); // ignores safepoints |