--- old/src/hotspot/cpu/x86/macroAssembler_x86.cpp 2019-05-19 19:47:48.675888515 -0700 +++ new/src/hotspot/cpu/x86/macroAssembler_x86.cpp 2019-05-19 19:47:48.379878178 -0700 @@ -5107,7 +5107,6 @@ load_metadata(dst, src); #ifdef _LP64 if (UseCompressedClassPointers) { - andl(dst, oopDesc::compressed_klass_mask()); decode_klass_not_null(dst); } else #endif @@ -5398,6 +5397,7 @@ // Note: it will change flags assert (UseCompressedClassPointers, "should only be used for compressed headers"); assert(r != r12_heapbase, "Decoding a klass in r12"); + andl(r, oopDesc::compressed_klass_mask()); // Cannot assert, unverified entry point counts instructions (see .ad file) // vtableStubs also counts instructions in pd_code_size_limit. // Also do not verify_oop as this is called by verify_oop. @@ -5422,6 +5422,7 @@ // Cannot assert, unverified entry point counts instructions (see .ad file) // vtableStubs also counts instructions in pd_code_size_limit. // Also do not verify_oop as this is called by verify_oop. + andl(src, oopDesc::compressed_klass_mask()); mov64(dst, (int64_t)Universe::narrow_klass_base()); if (Universe::narrow_klass_shift() != 0) { assert(LogKlassAlignmentInBytes == Universe::narrow_klass_shift(), "decode alg wrong");