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