--- old/src/cpu/x86/vm/jniFastGetField_x86_64.cpp 2019-04-11 21:28:16.191967637 +0000 +++ new/src/cpu/x86/vm/jniFastGetField_x86_64.cpp 2019-04-11 21:28:16.081966937 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2004, 2017, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -76,13 +76,16 @@ __ jcc (Assembler::notZero, slow); if (os::is_MP()) { __ xorptr(robj, rcounter); - __ xorptr(robj, rcounter); // obj, since + __ xorptr(robj, rcounter); // obj, since // robj ^ rcounter ^ rcounter == robj // robj is data dependent on rcounter. } - __ movptr(robj, Address(robj, 0)); // *obj + + __ clear_jweak_tag(robj); + + __ movptr(robj, Address(robj, 0)); // *obj __ mov (roffset, c_rarg2); - __ shrptr(roffset, 2); // offset + __ shrptr(roffset, 2); // offset assert(count < LIST_CAPACITY, "LIST_CAPACITY too small"); speculative_load_pclist[count] = __ pc(); @@ -174,13 +177,16 @@ __ jcc (Assembler::notZero, slow); if (os::is_MP()) { __ xorptr(robj, rcounter); - __ xorptr(robj, rcounter); // obj, since + __ xorptr(robj, rcounter); // obj, since // robj ^ rcounter ^ rcounter == robj // robj is data dependent on rcounter. } - __ movptr(robj, Address(robj, 0)); // *obj + + __ clear_jweak_tag(robj); + + __ movptr(robj, Address(robj, 0)); // *obj __ mov (roffset, c_rarg2); - __ shrptr(roffset, 2); // offset + __ shrptr(roffset, 2); // offset assert(count < LIST_CAPACITY, "LIST_CAPACITY too small"); speculative_load_pclist[count] = __ pc();