src/cpu/mips/vm/cppInterpreter_mips.cpp

Fri, 29 Apr 2016 00:06:10 +0800

author
aoqi
date
Fri, 29 Apr 2016 00:06:10 +0800
changeset 1
2d8a650513c2
permissions
-rw-r--r--

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

mercurial