Mercurial > hg > graal-jvmci-8
changeset 23712:66059526b021 jvmci-0.16
8160177: [JVMCI] race condition in HotSpotMemoryAccessProviderImpl.verifyReadRawObject
author | Roland Schatz <roland.schatz@oracle.com> |
---|---|
date | Thu, 23 Jun 2016 16:49:32 +0200 |
parents | 387870951564 |
children | 60c0f5eca268 |
files | jvmci/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotMemoryAccessProviderImpl.java |
diffstat | 1 files changed, 2 insertions(+), 8 deletions(-) [+] |
line wrap: on
line diff
--- 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; }