0 /*
1 * Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved.
2 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
3 *
4 * This code is free software; you can redistribute it and/or modify it
5 * under the terms of the GNU General Public License version 2 only, as
6 * published by the Free Software Foundation.
7 *
8 * This code is distributed in the hope that it will be useful, but WITHOUT
9 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
10 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
11 * version 2 for more details (a copy is included in the LICENSE file that
12 * accompanied this code).
13 *
14 * You should have received a copy of the GNU General Public License version
15 * 2 along with this work; if not, write to the Free Software Foundation,
16 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
17 *
18 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
19 * or visit www.oracle.com if you need additional information or have any
20 * questions.
|
0 /*
1 * Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved.
2 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
3 *
4 * This code is free software; you can redistribute it and/or modify it
5 * under the terms of the GNU General Public License version 2 only, as
6 * published by the Free Software Foundation.
7 *
8 * This code is distributed in the hope that it will be useful, but WITHOUT
9 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
10 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
11 * version 2 for more details (a copy is included in the LICENSE file that
12 * accompanied this code).
13 *
14 * You should have received a copy of the GNU General Public License version
15 * 2 along with this work; if not, write to the Free Software Foundation,
16 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
17 *
18 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
19 * or visit www.oracle.com if you need additional information or have any
20 * questions.
|
192 bool force_unwind, bool top_frame_only, bool& recursive_exception_occurred);
193 enum ImplicitExceptionKind {
194 IMPLICIT_NULL,
195 IMPLICIT_DIVIDE_BY_ZERO,
196 STACK_OVERFLOW
197 };
198 static void throw_AbstractMethodError(JavaThread* thread);
199 static void throw_IncompatibleClassChangeError(JavaThread* thread);
200 static void throw_ArithmeticException(JavaThread* thread);
201 static void throw_NullPointerException(JavaThread* thread);
202 static void throw_NullPointerException_at_call(JavaThread* thread);
203 static void throw_StackOverflowError(JavaThread* thread);
204 static void throw_delayed_StackOverflowError(JavaThread* thread);
205 static void throw_StackOverflowError_common(JavaThread* thread, bool delayed);
206 static address continuation_for_implicit_exception(JavaThread* thread,
207 address faulting_pc,
208 ImplicitExceptionKind exception_kind);
209 #if INCLUDE_JVMCI
210 static address deoptimize_for_implicit_exception(JavaThread* thread, address pc, CompiledMethod* nm, int deopt_reason);
211 #endif
212
213 static void enable_stack_reserved_zone(JavaThread* thread);
214 static frame look_for_reserved_stack_annotated_method(JavaThread* thread, frame fr);
215
216 // Shared stub locations
217 static address get_poll_stub(address pc);
218
219 static address get_ic_miss_stub() {
220 assert(_ic_miss_blob!= NULL, "oops");
221 return _ic_miss_blob->entry_point();
222 }
223
224 static address get_handle_wrong_method_stub() {
225 assert(_wrong_method_blob!= NULL, "oops");
226 return _wrong_method_blob->entry_point();
227 }
228
229 static address get_handle_wrong_method_abstract_stub() {
230 assert(_wrong_method_abstract_blob!= NULL, "oops");
|
192 bool force_unwind, bool top_frame_only, bool& recursive_exception_occurred);
193 enum ImplicitExceptionKind {
194 IMPLICIT_NULL,
195 IMPLICIT_DIVIDE_BY_ZERO,
196 STACK_OVERFLOW
197 };
198 static void throw_AbstractMethodError(JavaThread* thread);
199 static void throw_IncompatibleClassChangeError(JavaThread* thread);
200 static void throw_ArithmeticException(JavaThread* thread);
201 static void throw_NullPointerException(JavaThread* thread);
202 static void throw_NullPointerException_at_call(JavaThread* thread);
203 static void throw_StackOverflowError(JavaThread* thread);
204 static void throw_delayed_StackOverflowError(JavaThread* thread);
205 static void throw_StackOverflowError_common(JavaThread* thread, bool delayed);
206 static address continuation_for_implicit_exception(JavaThread* thread,
207 address faulting_pc,
208 ImplicitExceptionKind exception_kind);
209 #if INCLUDE_JVMCI
210 static address deoptimize_for_implicit_exception(JavaThread* thread, address pc, CompiledMethod* nm, int deopt_reason);
211 #endif
212
213 // Post-slow-path-allocation, pre-initializing-stores step for
214 // implementing e.g. ReduceInitialCardMarks
215 static void on_slowpath_allocation_exit(JavaThread* thread);
216
217 static void enable_stack_reserved_zone(JavaThread* thread);
218 static frame look_for_reserved_stack_annotated_method(JavaThread* thread, frame fr);
219
220 // Shared stub locations
221 static address get_poll_stub(address pc);
222
223 static address get_ic_miss_stub() {
224 assert(_ic_miss_blob!= NULL, "oops");
225 return _ic_miss_blob->entry_point();
226 }
227
228 static address get_handle_wrong_method_stub() {
229 assert(_wrong_method_blob!= NULL, "oops");
230 return _wrong_method_blob->entry_point();
231 }
232
233 static address get_handle_wrong_method_abstract_stub() {
234 assert(_wrong_method_abstract_blob!= NULL, "oops");
|