Fri, 29 Apr 2016 00:06:10 +0800
Added MIPS 64-bit port.
1 /*
2 * Copyright (c) 2007, 2013, Oracle and/or its affiliates. All rights reserved.
3 * Copyright (c) 2015, 2016, Loongson Technology. All rights reserved.
4 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
5 *
6 * This code is free software; you can redistribute it and/or modify it
7 * under the terms of the GNU General Public License version 2 only, as
8 * published by the Free Software Foundation.
9 *
10 * This code is distributed in the hope that it will be useful, but WITHOUT
11 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
12 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
13 * version 2 for more details (a copy is included in the LICENSE file that
14 * accompanied this code).
15 *
16 * You should have received a copy of the GNU General Public License version
17 * 2 along with this work; if not, write to the Free Software Foundation,
18 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
19 *
20 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
21 * or visit www.oracle.com if you need additional information or have any
22 * questions.
23 *
24 */
26 #include "precompiled.hpp"
27 #include "asm/macroAssembler.hpp"
28 #include "interpreter/bytecodeHistogram.hpp"
29 #include "interpreter/cppInterpreter.hpp"
30 #include "interpreter/interpreter.hpp"
31 #include "interpreter/interpreterGenerator.hpp"
32 #include "interpreter/interpreterRuntime.hpp"
33 #include "oops/arrayOop.hpp"
34 #include "oops/methodData.hpp"
35 #include "oops/method.hpp"
36 #include "oops/oop.inline.hpp"
37 #include "prims/jvmtiExport.hpp"
38 #include "prims/jvmtiThreadState.hpp"
39 #include "runtime/arguments.hpp"
40 #include "runtime/deoptimization.hpp"
41 #include "runtime/frame.inline.hpp"
42 #include "runtime/interfaceSupport.hpp"
43 #include "runtime/sharedRuntime.hpp"
44 #include "runtime/stubRoutines.hpp"
45 #include "runtime/synchronizer.hpp"
46 #include "runtime/timer.hpp"
47 #include "runtime/vframeArray.hpp"
48 #include "utilities/debug.hpp"
49 #ifdef SHARK
50 #include "shark/shark_globals.hpp"
51 #endif
53 #ifdef CC_INTERP
55 // Routine exists to make tracebacks look decent in debugger
56 // while "shadow" interpreter frames are on stack. It is also
57 // used to distinguish interpreter frames.
59 extern "C" void RecursiveInterpreterActivation(interpreterState istate) {
60 ShouldNotReachHere();
61 }
63 bool CppInterpreter::contains(address pc) {
64 Unimplemented();
65 }
67 #define STATE(field_name) Lstate, in_bytes(byte_offset_of(BytecodeInterpreter, field_name))
68 #define __ _masm->
70 Label frame_manager_entry;
71 Label fast_accessor_slow_entry_path; // fast accessor methods need to be able to jmp to unsynchronized
72 // c++ interpreter entry point this holds that entry point label.
74 static address unctrap_frame_manager_entry = NULL;
76 static address interpreter_return_address = NULL;
77 static address deopt_frame_manager_return_atos = NULL;
78 static address deopt_frame_manager_return_btos = NULL;
79 static address deopt_frame_manager_return_itos = NULL;
80 static address deopt_frame_manager_return_ltos = NULL;
81 static address deopt_frame_manager_return_ftos = NULL;
82 static address deopt_frame_manager_return_dtos = NULL;
83 static address deopt_frame_manager_return_vtos = NULL;
85 const Register prevState = G1_scratch;
87 void InterpreterGenerator::save_native_result(void) {
88 Unimplemented();
89 }
91 void InterpreterGenerator::restore_native_result(void) {
92 Unimplemented();
93 }
95 // A result handler converts/unboxes a native call result into
96 // a java interpreter/compiler result. The current frame is an
97 // interpreter frame. The activation frame unwind code must be
98 // consistent with that of TemplateTable::_return(...). In the
99 // case of native methods, the caller's SP was not modified.
100 address CppInterpreterGenerator::generate_result_handler_for(BasicType type) {
101 Unimplemented();
102 }
104 address CppInterpreterGenerator::generate_tosca_to_stack_converter(BasicType type) {
105 Unimplemented();
106 }
108 address CppInterpreterGenerator::generate_stack_to_stack_converter(BasicType type) {
109 Unimplemented();
110 }
112 address CppInterpreterGenerator::generate_stack_to_native_abi_converter(BasicType type) {
113 Unimplemented();
114 }
116 address CppInterpreter::return_entry(TosState state, int length) {
117 Unimplemented();
118 }
120 address CppInterpreter::deopt_entry(TosState state, int length) {
121 Unimplemented();
122 }
124 void InterpreterGenerator::generate_counter_incr(Label* overflow, Label* profile_method, Label* profile_method_continue) {
125 Unimplemented();
126 }
128 address InterpreterGenerator::generate_empty_entry(void) {
129 Unimplemented();
130 }
132 address InterpreterGenerator::generate_accessor_entry(void) {
133 Unimplemented();
134 }
136 address InterpreterGenerator::generate_native_entry(bool synchronized) {
137 Unimplemented();
138 }
140 void CppInterpreterGenerator::generate_compute_interpreter_state(const Register state,
141 const Register prev_state,
142 bool native) {
143 Unimplemented();
144 }
146 void InterpreterGenerator::lock_method(void) {
147 Unimplemented();
148 }
150 void CppInterpreterGenerator::generate_deopt_handling() {
151 Unimplemented();
152 }
154 void CppInterpreterGenerator::generate_more_monitors() {
155 Unimplemented();
156 }
159 static address interpreter_frame_manager = NULL;
161 void CppInterpreterGenerator::adjust_callers_stack(Register args) {
162 Unimplemented();
163 }
165 address InterpreterGenerator::generate_normal_entry(bool synchronized) {
166 Unimplemented();
167 }
169 InterpreterGenerator::InterpreterGenerator(StubQueue* code)
170 : CppInterpreterGenerator(code) {
171 Unimplemented();
172 }
175 static int size_activation_helper(int callee_extra_locals, int max_stack, int monitor_size) {
176 Unimplemented();
177 }
179 int AbstractInterpreter::size_top_interpreter_activation(methodOop method) {
180 Unimplemented();
181 }
183 void BytecodeInterpreter::layout_interpreterState(interpreterState to_fill,
184 frame* caller,
185 frame* current,
186 methodOop method,
187 intptr_t* locals,
188 intptr_t* stack,
189 intptr_t* stack_base,
190 intptr_t* monitor_base,
191 intptr_t* frame_bottom,
192 bool is_top_frame
193 )
194 {
195 Unimplemented();
196 }
198 void BytecodeInterpreter::pd_layout_interpreterState(interpreterState istate, address last_Java_pc, intptr_t* last_Java_fp) {
199 Unimplemented();
200 }
203 int AbstractInterpreter::layout_activation(methodOop method,
204 int tempcount, // Number of slots on java expression stack in use
205 int popframe_extra_args,
206 int moncount, // Number of active monitors
207 int callee_param_size,
208 int callee_locals_size,
209 frame* caller,
210 frame* interpreter_frame,
211 bool is_top_frame) {
212 Unimplemented();
213 }
215 #endif // CC_INTERP