1 /*
2 * Copyright (c) 1997, 2016, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation.
8 *
9 * This code is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12 * version 2 for more details (a copy is included in the LICENSE file that
13 * accompanied this code).
14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 *
145 static address remove_activation_early_entry(TosState state) { return _earlyret_entry.entry(state); }
146 #ifdef HOTSWAP
147 static address remove_activation_preserving_args_entry() { return _remove_activation_preserving_args_entry; }
148 #endif // HOTSWAP
149
150 static address remove_activation_entry() { return _remove_activation_entry; }
151 static address throw_exception_entry() { return _throw_exception_entry; }
152 static address throw_ArithmeticException_entry() { return _throw_ArithmeticException_entry; }
153 static address throw_NullPointerException_entry() { return _throw_NullPointerException_entry; }
154 static address throw_StackOverflowError_entry() { return _throw_StackOverflowError_entry; }
155
156 // Code generation
157 #ifndef PRODUCT
158 static address trace_code (TosState state) { return _trace_code.entry(state); }
159 #endif // !PRODUCT
160 static address* dispatch_table(TosState state) { return _active_table.table_for(state); }
161 static address* dispatch_table() { return _active_table.table_for(); }
162 static int distance_from_dispatch_table(TosState state){ return _active_table.distance_from(state); }
163 static address* normal_table(TosState state) { return _normal_table.table_for(state); }
164 static address* normal_table() { return _normal_table.table_for(); }
165
166 // Support for invokes
167 static address* invoke_return_entry_table() { return _invoke_return_entry; }
168 static address* invokeinterface_return_entry_table() { return _invokeinterface_return_entry; }
169 static address* invokedynamic_return_entry_table() { return _invokedynamic_return_entry; }
170 static int TosState_as_index(TosState state);
171
172 static address* invoke_return_entry_table_for(Bytecodes::Code code);
173
174 static address deopt_entry(TosState state, int length);
175 static address return_entry(TosState state, int length, Bytecodes::Code code);
176
177 // Safepoint support
178 static void notice_safepoints(); // stops the thread when reaching a safepoint
179 static void ignore_safepoints(); // ignores safepoints
180
181 // Deoptimization support
182 // Compute the entry address for continuation after
183 static address deopt_continue_after_entry(Method* method,
184 address bcp,
|
1 /*
2 * Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation.
8 *
9 * This code is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12 * version 2 for more details (a copy is included in the LICENSE file that
13 * accompanied this code).
14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 *
145 static address remove_activation_early_entry(TosState state) { return _earlyret_entry.entry(state); }
146 #ifdef HOTSWAP
147 static address remove_activation_preserving_args_entry() { return _remove_activation_preserving_args_entry; }
148 #endif // HOTSWAP
149
150 static address remove_activation_entry() { return _remove_activation_entry; }
151 static address throw_exception_entry() { return _throw_exception_entry; }
152 static address throw_ArithmeticException_entry() { return _throw_ArithmeticException_entry; }
153 static address throw_NullPointerException_entry() { return _throw_NullPointerException_entry; }
154 static address throw_StackOverflowError_entry() { return _throw_StackOverflowError_entry; }
155
156 // Code generation
157 #ifndef PRODUCT
158 static address trace_code (TosState state) { return _trace_code.entry(state); }
159 #endif // !PRODUCT
160 static address* dispatch_table(TosState state) { return _active_table.table_for(state); }
161 static address* dispatch_table() { return _active_table.table_for(); }
162 static int distance_from_dispatch_table(TosState state){ return _active_table.distance_from(state); }
163 static address* normal_table(TosState state) { return _normal_table.table_for(state); }
164 static address* normal_table() { return _normal_table.table_for(); }
165 static address* safept_table(TosState state) { return _safept_table.table_for(state); }
166
167 // Support for invokes
168 static address* invoke_return_entry_table() { return _invoke_return_entry; }
169 static address* invokeinterface_return_entry_table() { return _invokeinterface_return_entry; }
170 static address* invokedynamic_return_entry_table() { return _invokedynamic_return_entry; }
171 static int TosState_as_index(TosState state);
172
173 static address* invoke_return_entry_table_for(Bytecodes::Code code);
174
175 static address deopt_entry(TosState state, int length);
176 static address return_entry(TosState state, int length, Bytecodes::Code code);
177
178 // Safepoint support
179 static void notice_safepoints(); // stops the thread when reaching a safepoint
180 static void ignore_safepoints(); // ignores safepoints
181
182 // Deoptimization support
183 // Compute the entry address for continuation after
184 static address deopt_continue_after_entry(Method* method,
185 address bcp,
|