1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/src/cpu/mips/vm/cppInterpreter_mips.cpp Fri Apr 29 00:06:10 2016 +0800 1.3 @@ -0,0 +1,215 @@ 1.4 +/* 1.5 + * Copyright (c) 2007, 2013, Oracle and/or its affiliates. All rights reserved. 1.6 + * Copyright (c) 2015, 2016, Loongson Technology. All rights reserved. 1.7 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 1.8 + * 1.9 + * This code is free software; you can redistribute it and/or modify it 1.10 + * under the terms of the GNU General Public License version 2 only, as 1.11 + * published by the Free Software Foundation. 1.12 + * 1.13 + * This code is distributed in the hope that it will be useful, but WITHOUT 1.14 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 1.15 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 1.16 + * version 2 for more details (a copy is included in the LICENSE file that 1.17 + * accompanied this code). 1.18 + * 1.19 + * You should have received a copy of the GNU General Public License version 1.20 + * 2 along with this work; if not, write to the Free Software Foundation, 1.21 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 1.22 + * 1.23 + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 1.24 + * or visit www.oracle.com if you need additional information or have any 1.25 + * questions. 1.26 + * 1.27 + */ 1.28 + 1.29 +#include "precompiled.hpp" 1.30 +#include "asm/macroAssembler.hpp" 1.31 +#include "interpreter/bytecodeHistogram.hpp" 1.32 +#include "interpreter/cppInterpreter.hpp" 1.33 +#include "interpreter/interpreter.hpp" 1.34 +#include "interpreter/interpreterGenerator.hpp" 1.35 +#include "interpreter/interpreterRuntime.hpp" 1.36 +#include "oops/arrayOop.hpp" 1.37 +#include "oops/methodData.hpp" 1.38 +#include "oops/method.hpp" 1.39 +#include "oops/oop.inline.hpp" 1.40 +#include "prims/jvmtiExport.hpp" 1.41 +#include "prims/jvmtiThreadState.hpp" 1.42 +#include "runtime/arguments.hpp" 1.43 +#include "runtime/deoptimization.hpp" 1.44 +#include "runtime/frame.inline.hpp" 1.45 +#include "runtime/interfaceSupport.hpp" 1.46 +#include "runtime/sharedRuntime.hpp" 1.47 +#include "runtime/stubRoutines.hpp" 1.48 +#include "runtime/synchronizer.hpp" 1.49 +#include "runtime/timer.hpp" 1.50 +#include "runtime/vframeArray.hpp" 1.51 +#include "utilities/debug.hpp" 1.52 +#ifdef SHARK 1.53 +#include "shark/shark_globals.hpp" 1.54 +#endif 1.55 + 1.56 +#ifdef CC_INTERP 1.57 + 1.58 +// Routine exists to make tracebacks look decent in debugger 1.59 +// while "shadow" interpreter frames are on stack. It is also 1.60 +// used to distinguish interpreter frames. 1.61 + 1.62 +extern "C" void RecursiveInterpreterActivation(interpreterState istate) { 1.63 + ShouldNotReachHere(); 1.64 +} 1.65 + 1.66 +bool CppInterpreter::contains(address pc) { 1.67 + Unimplemented(); 1.68 +} 1.69 + 1.70 +#define STATE(field_name) Lstate, in_bytes(byte_offset_of(BytecodeInterpreter, field_name)) 1.71 +#define __ _masm-> 1.72 + 1.73 +Label frame_manager_entry; 1.74 +Label fast_accessor_slow_entry_path; // fast accessor methods need to be able to jmp to unsynchronized 1.75 + // c++ interpreter entry point this holds that entry point label. 1.76 + 1.77 +static address unctrap_frame_manager_entry = NULL; 1.78 + 1.79 +static address interpreter_return_address = NULL; 1.80 +static address deopt_frame_manager_return_atos = NULL; 1.81 +static address deopt_frame_manager_return_btos = NULL; 1.82 +static address deopt_frame_manager_return_itos = NULL; 1.83 +static address deopt_frame_manager_return_ltos = NULL; 1.84 +static address deopt_frame_manager_return_ftos = NULL; 1.85 +static address deopt_frame_manager_return_dtos = NULL; 1.86 +static address deopt_frame_manager_return_vtos = NULL; 1.87 + 1.88 +const Register prevState = G1_scratch; 1.89 + 1.90 +void InterpreterGenerator::save_native_result(void) { 1.91 + Unimplemented(); 1.92 +} 1.93 + 1.94 +void InterpreterGenerator::restore_native_result(void) { 1.95 + Unimplemented(); 1.96 +} 1.97 + 1.98 +// A result handler converts/unboxes a native call result into 1.99 +// a java interpreter/compiler result. The current frame is an 1.100 +// interpreter frame. The activation frame unwind code must be 1.101 +// consistent with that of TemplateTable::_return(...). In the 1.102 +// case of native methods, the caller's SP was not modified. 1.103 +address CppInterpreterGenerator::generate_result_handler_for(BasicType type) { 1.104 + Unimplemented(); 1.105 +} 1.106 + 1.107 +address CppInterpreterGenerator::generate_tosca_to_stack_converter(BasicType type) { 1.108 + Unimplemented(); 1.109 +} 1.110 + 1.111 +address CppInterpreterGenerator::generate_stack_to_stack_converter(BasicType type) { 1.112 + Unimplemented(); 1.113 +} 1.114 + 1.115 +address CppInterpreterGenerator::generate_stack_to_native_abi_converter(BasicType type) { 1.116 + Unimplemented(); 1.117 +} 1.118 + 1.119 +address CppInterpreter::return_entry(TosState state, int length) { 1.120 + Unimplemented(); 1.121 +} 1.122 + 1.123 +address CppInterpreter::deopt_entry(TosState state, int length) { 1.124 + Unimplemented(); 1.125 +} 1.126 + 1.127 +void InterpreterGenerator::generate_counter_incr(Label* overflow, Label* profile_method, Label* profile_method_continue) { 1.128 + Unimplemented(); 1.129 +} 1.130 + 1.131 +address InterpreterGenerator::generate_empty_entry(void) { 1.132 + Unimplemented(); 1.133 +} 1.134 + 1.135 +address InterpreterGenerator::generate_accessor_entry(void) { 1.136 + Unimplemented(); 1.137 +} 1.138 + 1.139 +address InterpreterGenerator::generate_native_entry(bool synchronized) { 1.140 + Unimplemented(); 1.141 +} 1.142 + 1.143 +void CppInterpreterGenerator::generate_compute_interpreter_state(const Register state, 1.144 + const Register prev_state, 1.145 + bool native) { 1.146 + Unimplemented(); 1.147 +} 1.148 + 1.149 +void InterpreterGenerator::lock_method(void) { 1.150 + Unimplemented(); 1.151 +} 1.152 + 1.153 +void CppInterpreterGenerator::generate_deopt_handling() { 1.154 + Unimplemented(); 1.155 +} 1.156 + 1.157 +void CppInterpreterGenerator::generate_more_monitors() { 1.158 + Unimplemented(); 1.159 +} 1.160 + 1.161 + 1.162 +static address interpreter_frame_manager = NULL; 1.163 + 1.164 +void CppInterpreterGenerator::adjust_callers_stack(Register args) { 1.165 + Unimplemented(); 1.166 +} 1.167 + 1.168 +address InterpreterGenerator::generate_normal_entry(bool synchronized) { 1.169 + Unimplemented(); 1.170 +} 1.171 + 1.172 +InterpreterGenerator::InterpreterGenerator(StubQueue* code) 1.173 + : CppInterpreterGenerator(code) { 1.174 + Unimplemented(); 1.175 +} 1.176 + 1.177 + 1.178 +static int size_activation_helper(int callee_extra_locals, int max_stack, int monitor_size) { 1.179 + Unimplemented(); 1.180 +} 1.181 + 1.182 +int AbstractInterpreter::size_top_interpreter_activation(methodOop method) { 1.183 + Unimplemented(); 1.184 +} 1.185 + 1.186 +void BytecodeInterpreter::layout_interpreterState(interpreterState to_fill, 1.187 + frame* caller, 1.188 + frame* current, 1.189 + methodOop method, 1.190 + intptr_t* locals, 1.191 + intptr_t* stack, 1.192 + intptr_t* stack_base, 1.193 + intptr_t* monitor_base, 1.194 + intptr_t* frame_bottom, 1.195 + bool is_top_frame 1.196 + ) 1.197 +{ 1.198 + Unimplemented(); 1.199 +} 1.200 + 1.201 +void BytecodeInterpreter::pd_layout_interpreterState(interpreterState istate, address last_Java_pc, intptr_t* last_Java_fp) { 1.202 + Unimplemented(); 1.203 +} 1.204 + 1.205 + 1.206 +int AbstractInterpreter::layout_activation(methodOop method, 1.207 + int tempcount, // Number of slots on java expression stack in use 1.208 + int popframe_extra_args, 1.209 + int moncount, // Number of active monitors 1.210 + int callee_param_size, 1.211 + int callee_locals_size, 1.212 + frame* caller, 1.213 + frame* interpreter_frame, 1.214 + bool is_top_frame) { 1.215 + Unimplemented(); 1.216 +} 1.217 + 1.218 +#endif // CC_INTERP