src/cpu/mips/vm/cppInterpreter_mips.cpp

changeset 1
2d8a650513c2
     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

mercurial