src/cpu/mips/vm/jniFastGetField_mips_64.cpp

changeset 9705
0b27fc8adf1b
parent 8863
5376ce0dc552
child 9932
86ea9a02a717
     1.1 --- a/src/cpu/mips/vm/jniFastGetField_mips_64.cpp	Wed Sep 11 12:40:06 2019 +0800
     1.2 +++ b/src/cpu/mips/vm/jniFastGetField_mips_64.cpp	Fri Sep 27 11:31:13 2019 +0800
     1.3 @@ -1,6 +1,6 @@
     1.4  /*
     1.5   * Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved.
     1.6 - * Copyright (c) 2015, 2018, Loongson Technology. All rights reserved.
     1.7 + * Copyright (c) 2015, 2019, Loongson Technology. All rights reserved.
     1.8   * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     1.9   *
    1.10   * This code is free software; you can redistribute it and/or modify it
    1.11 @@ -65,13 +65,15 @@
    1.12    __ set64(AT, (long)counter_addr);
    1.13    __ lw(T1, AT, 0);
    1.14  
    1.15 -  /* 2012/4/28 Jin: the parameters(A0~A3) should not be modified, since
    1.16 -   *   they will be used in slow path. */
    1.17 +  // Parameters(A0~A3) should not be modified, since they will be used in slow path
    1.18    __ andi(AT, T1, 1);
    1.19    __ bne(AT, R0, slow);
    1.20    __ delayed()->nop();
    1.21  
    1.22 -  __ ld(T0, A1, 0);              // unbox, *obj
    1.23 +  __ move(T0, A1);
    1.24 +  __ clear_jweak_tag(T0);
    1.25 +
    1.26 +  __ ld(T0, T0, 0);              // unbox, *obj
    1.27    __ move(T2, A2);
    1.28    __ shr(T2, 2);                 // offset
    1.29    __ dadd(T0, T0, T2);
    1.30 @@ -171,11 +173,14 @@
    1.31    __ bne(AT, R0, slow);
    1.32    __ delayed()->nop();
    1.33  
    1.34 +  __ clear_jweak_tag(A1);
    1.35 +
    1.36  #ifdef _LP64
    1.37    __ ld(A1, A1, 0);              // unbox, *obj
    1.38  #else
    1.39    __ lw(A1, A1, 0);              // unbox, *obj
    1.40  #endif
    1.41 +
    1.42    __ shr(A2, 2);                  // offset
    1.43    __ add(A1, A1, A2);
    1.44  

mercurial