src/cpu/mips/vm/templateInterpreter_mips_64.cpp

changeset 9228
617b86d17edb
parent 9171
c67c94f5b85d
child 9254
6453d3a9f18e
     1.1 --- a/src/cpu/mips/vm/templateInterpreter_mips_64.cpp	Mon Sep 03 14:27:42 2018 +0800
     1.2 +++ b/src/cpu/mips/vm/templateInterpreter_mips_64.cpp	Tue Sep 04 21:25:12 2018 +0800
     1.3 @@ -128,10 +128,6 @@
     1.4  address TemplateInterpreterGenerator::generate_ClassCastException_handler() {
     1.5    address entry = __ pc();
     1.6  
     1.7 -  // object is at TOS
     1.8 -  //FIXME, I am not sure if the object is at TOS as x86 do now @jerome, 04/20,2007
     1.9 -  //__ pop(c_rarg1);
    1.10 -
    1.11    // expression stack must be empty before entering the VM if an
    1.12    // exception happened
    1.13    __ empty_expression_stack();
    1.14 @@ -261,8 +257,6 @@
    1.15  }
    1.16  
    1.17  
    1.18 -// why do not consider float and double , @jerome, 12/27,06, @jerome
    1.19 -//FIXME, aoqi
    1.20  address TemplateInterpreterGenerator::generate_result_handler_for(
    1.21          BasicType type) {
    1.22    address entry = __ pc();
    1.23 @@ -451,7 +445,6 @@
    1.24  #endif
    1.25  
    1.26    // locals + overhead, in bytes
    1.27 -  //FIXME aoqi
    1.28    __ dsll(T3, T2, Interpreter::stackElementScale());
    1.29    __ daddiu(T3, T3, overhead_size);   // locals * 4 + overhead_size --> T3
    1.30  
    1.31 @@ -557,7 +550,7 @@
    1.32    __ sd(FP, SP, (-2) * wordSize);  // save sender's fp
    1.33    __ daddiu(FP, SP, (-2) * wordSize);
    1.34    __ sd(Rsender, FP, (-++i) * wordSize);  // save sender's sp
    1.35 -  __ sd(R0, FP,(-++i)*wordSize);       //save last_sp as null, FIXME aoqi
    1.36 +  __ sd(R0, FP,(-++i)*wordSize);       //save last_sp as null
    1.37    __ sd(LVP, FP, (-++i) * wordSize);  // save locals offset
    1.38    __ ld(BCP, Rmethod, in_bytes(Method::const_offset())); // get constMethodOop
    1.39    __ daddiu(BCP, BCP, in_bytes(ConstMethod::codes_offset())); // get codebase
    1.40 @@ -1046,9 +1039,8 @@
    1.41    {
    1.42      Label L, Lstatic;
    1.43      __ ld(t,method,in_bytes(Method::const_offset()));
    1.44 -    __ lhu(t, t, in_bytes(ConstMethod::size_of_parameters_offset()));  // Fu: 20130814
    1.45 +    __ lhu(t, t, in_bytes(ConstMethod::size_of_parameters_offset()));
    1.46      // MIPS n64 ABI: caller does not reserve space for the register auguments.
    1.47 -    //FIXME, aoqi: A1?
    1.48      // A0 and A1(if needed)
    1.49      __ lw(AT, Rmethod, in_bytes(Method::access_flags_offset()));
    1.50      __ andi(AT, AT, JVM_ACC_STATIC);
    1.51 @@ -1198,7 +1190,6 @@
    1.52    __ get_thread(thread);
    1.53  #endif
    1.54    __ daddi(t, thread, in_bytes(JavaThread::jni_environment_offset()));
    1.55 -  // stack,but I think it won't work when pass float,double etc @jerome,10/17,2006
    1.56    __ move(A0, t);
    1.57    // [ jni environment          ] <--- sp
    1.58    // [ mthd holder mirror ptr   ] ---------------------------->| (only for static method)
    1.59 @@ -2184,7 +2175,7 @@
    1.60    // prepare expression stack
    1.61    __ push(state);       // save tosca
    1.62  
    1.63 -  // tos & tos2, added by yjl 7/15/2005
    1.64 +  // tos & tos2
    1.65    // trace_bytecode need actually 4 args, the last two is tos&tos2
    1.66    // this work fine for x86. but mips o32 call convention will store A2-A3
    1.67    // to the stack position it think is the tos&tos2

mercurial