165 static int dcmpl(double x, double y);
166 static int dcmpg(double x, double y);
167
168 static int unordered_fcmplt(float x, float y);
169 static int unordered_dcmplt(double x, double y);
170 static int unordered_fcmple(float x, float y);
171 static int unordered_dcmple(double x, double y);
172 static int unordered_fcmpge(float x, float y);
173 static int unordered_dcmpge(double x, double y);
174 static int unordered_fcmpgt(float x, float y);
175 static int unordered_dcmpgt(double x, double y);
176
177 static float fneg(float f);
178 static double dneg(double f);
179 #endif
180
181 // exception handling across interpreter/compiler boundaries
182 static address raw_exception_handler_for_return_address(JavaThread* thread, address return_address);
183 static address exception_handler_for_return_address(JavaThread* thread, address return_address);
184
185 #if INCLUDE_ALL_GCS
186 // G1 write barriers
187 static void g1_wb_pre(oopDesc* orig, JavaThread *thread);
188 static void g1_wb_post(void* card_addr, JavaThread* thread);
189 #endif // INCLUDE_ALL_GCS
190
191 // exception handling and implicit exceptions
192 static address compute_compiled_exc_handler(CompiledMethod* nm, address ret_pc, Handle& exception,
193 bool force_unwind, bool top_frame_only, bool& recursive_exception_occurred);
194 enum ImplicitExceptionKind {
195 IMPLICIT_NULL,
196 IMPLICIT_DIVIDE_BY_ZERO,
197 STACK_OVERFLOW
198 };
199 static void throw_AbstractMethodError(JavaThread* thread);
200 static void throw_IncompatibleClassChangeError(JavaThread* thread);
201 static void throw_ArithmeticException(JavaThread* thread);
202 static void throw_NullPointerException(JavaThread* thread);
203 static void throw_NullPointerException_at_call(JavaThread* thread);
204 static void throw_StackOverflowError(JavaThread* thread);
205 static void throw_delayed_StackOverflowError(JavaThread* thread);
206 static void throw_StackOverflowError_common(JavaThread* thread, bool delayed);
207 static address continuation_for_implicit_exception(JavaThread* thread,
208 address faulting_pc,
209 ImplicitExceptionKind exception_kind);
210 #if INCLUDE_JVMCI
211 static address deoptimize_for_implicit_exception(JavaThread* thread, address pc, CompiledMethod* nm, int deopt_reason);
212 #endif
213
214 static void enable_stack_reserved_zone(JavaThread* thread);
215 static frame look_for_reserved_stack_annotated_method(JavaThread* thread, frame fr);
216
217 // Shared stub locations
218 static address get_poll_stub(address pc);
219
220 static address get_ic_miss_stub() {
221 assert(_ic_miss_blob!= NULL, "oops");
222 return _ic_miss_blob->entry_point();
223 }
224
225 static address get_handle_wrong_method_stub() {
226 assert(_wrong_method_blob!= NULL, "oops");
227 return _wrong_method_blob->entry_point();
228 }
229
230 static address get_handle_wrong_method_abstract_stub() {
231 assert(_wrong_method_abstract_blob!= NULL, "oops");
232 return _wrong_method_abstract_blob->entry_point();
|
165 static int dcmpl(double x, double y);
166 static int dcmpg(double x, double y);
167
168 static int unordered_fcmplt(float x, float y);
169 static int unordered_dcmplt(double x, double y);
170 static int unordered_fcmple(float x, float y);
171 static int unordered_dcmple(double x, double y);
172 static int unordered_fcmpge(float x, float y);
173 static int unordered_dcmpge(double x, double y);
174 static int unordered_fcmpgt(float x, float y);
175 static int unordered_dcmpgt(double x, double y);
176
177 static float fneg(float f);
178 static double dneg(double f);
179 #endif
180
181 // exception handling across interpreter/compiler boundaries
182 static address raw_exception_handler_for_return_address(JavaThread* thread, address return_address);
183 static address exception_handler_for_return_address(JavaThread* thread, address return_address);
184
185 // exception handling and implicit exceptions
186 static address compute_compiled_exc_handler(CompiledMethod* nm, address ret_pc, Handle& exception,
187 bool force_unwind, bool top_frame_only, bool& recursive_exception_occurred);
188 enum ImplicitExceptionKind {
189 IMPLICIT_NULL,
190 IMPLICIT_DIVIDE_BY_ZERO,
191 STACK_OVERFLOW
192 };
193 static void throw_AbstractMethodError(JavaThread* thread);
194 static void throw_IncompatibleClassChangeError(JavaThread* thread);
195 static void throw_ArithmeticException(JavaThread* thread);
196 static void throw_NullPointerException(JavaThread* thread);
197 static void throw_NullPointerException_at_call(JavaThread* thread);
198 static void throw_StackOverflowError(JavaThread* thread);
199 static void throw_delayed_StackOverflowError(JavaThread* thread);
200 static void throw_StackOverflowError_common(JavaThread* thread, bool delayed);
201 static address continuation_for_implicit_exception(JavaThread* thread,
202 address faulting_pc,
203 ImplicitExceptionKind exception_kind);
204 #if INCLUDE_JVMCI
205 static address deoptimize_for_implicit_exception(JavaThread* thread, address pc, CompiledMethod* nm, int deopt_reason);
206 #endif
207
208 // Post-slow-path-allocation, pre-initializing-stores step for
209 // implementing e.g. ReduceInitialCardMarks
210 static void on_slowpath_allocation(JavaThread* thread);
211
212 static void enable_stack_reserved_zone(JavaThread* thread);
213 static frame look_for_reserved_stack_annotated_method(JavaThread* thread, frame fr);
214
215 // Shared stub locations
216 static address get_poll_stub(address pc);
217
218 static address get_ic_miss_stub() {
219 assert(_ic_miss_blob!= NULL, "oops");
220 return _ic_miss_blob->entry_point();
221 }
222
223 static address get_handle_wrong_method_stub() {
224 assert(_wrong_method_blob!= NULL, "oops");
225 return _wrong_method_blob->entry_point();
226 }
227
228 static address get_handle_wrong_method_abstract_stub() {
229 assert(_wrong_method_abstract_blob!= NULL, "oops");
230 return _wrong_method_abstract_blob->entry_point();
|