src/cpu/mips/vm/templateInterpreter_mips_64.cpp

changeset 8858
e3f4d3592615
parent 8027
23d8d77777e0
child 8863
5376ce0dc552
     1.1 --- a/src/cpu/mips/vm/templateInterpreter_mips_64.cpp	Thu May 24 18:59:17 2018 +0800
     1.2 +++ b/src/cpu/mips/vm/templateInterpreter_mips_64.cpp	Tue Apr 10 10:21:49 2018 +0800
     1.3 @@ -684,7 +684,7 @@
     1.4      __ dadd(T1, T1, T2);
     1.5      __ lw(T3, T1, 0);
     1.6  
     1.7 -    Label notByte, notShort, notChar, notObj;
     1.8 +    Label notByte, notBool, notShort, notChar, notObj;
     1.9      //    const Address field_address (eax, esi, Address::times_1);
    1.10  
    1.11      // Need to differentiate between igetfield, agetfield, bgetfield etc.
    1.12 @@ -701,8 +701,17 @@
    1.13      __ b(xreturn_path);
    1.14      __ delayed()->nop();
    1.15  
    1.16 +    //ztos
    1.17 +    __ bind(notByte);
    1.18 +    __ daddi(T1, T3, (-1) * ztos);
    1.19 +    __ bne(T1, R0, notBool);
    1.20 +    __ delayed()->nop();
    1.21 +    __ lb(V0, T0, 0);
    1.22 +    __ b(xreturn_path);
    1.23 +    __ delayed()->nop();
    1.24 +
    1.25      //stos
    1.26 -    __ bind(notByte);
    1.27 +    __ bind(notBool);
    1.28      __ daddi(T1, T3, (-1) * stos);
    1.29      __ bne(T1, R0, notShort);
    1.30      __ delayed()->nop();

mercurial