# HG changeset patch # User Roland Schatz # Date 1466693372 -7200 # Node ID 66059526b02119f1400b6fa859b583d8027eb5bf # Parent 387870951564fdd24bc66dd24da3f2525eaf2c1d 8160177: [JVMCI] race condition in HotSpotMemoryAccessProviderImpl.verifyReadRawObject diff -r 387870951564 -r 66059526b021 jvmci/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotMemoryAccessProviderImpl.java --- a/jvmci/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotMemoryAccessProviderImpl.java Wed Jun 22 14:55:57 2016 -0700 +++ b/jvmci/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotMemoryAccessProviderImpl.java Thu Jun 23 16:49:32 2016 +0200 @@ -111,13 +111,7 @@ } } - private boolean verifyReadRawObject(Object expected, Constant base, long displacement, boolean compressed) { - if (compressed == runtime.getConfig().useCompressedOops) { - Object obj = asObject(base); - if (obj != null) { - assert expected == UNSAFE.getObject(obj, displacement) : "readUnsafeOop doesn't agree with unsafe.getObject"; - } - } + private boolean verifyReadRawObject(Object expected, Constant base, long displacement) { if (base instanceof HotSpotMetaspaceConstant) { MetaspaceWrapperObject metaspaceObject = HotSpotMetaspaceConstantImpl.getMetaspaceObject(base); if (metaspaceObject instanceof HotSpotResolvedObjectTypeImpl) { @@ -140,11 +134,11 @@ assert !compressed; displacement += asRawPointer(baseConstant); ret = runtime.getCompilerToVM().readUncompressedOop(displacement); + assert verifyReadRawObject(ret, baseConstant, initialDisplacement); } else { assert runtime.getConfig().useCompressedOops == compressed; ret = UNSAFE.getObject(base, displacement); } - assert verifyReadRawObject(ret, baseConstant, initialDisplacement, compressed); return ret; }