mirror of
https://github.com/openjdk/jdk.git
synced 2025-09-21 03:24:38 +02:00
8160177: [JVMCI] race condition in HotSpotMemoryAccessProviderImpl.verifyReadRawObject
Reviewed-by: kvn
This commit is contained in:
parent
87f15c2bcf
commit
1ecfe15d17
1 changed files with 2 additions and 8 deletions
|
@ -109,13 +109,7 @@ class HotSpotMemoryAccessProviderImpl implements HotSpotMemoryAccessProvider {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean verifyReadRawObject(Object expected, Constant base, long displacement, boolean compressed) {
|
private boolean verifyReadRawObject(Object expected, Constant base, long displacement) {
|
||||||
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";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (base instanceof HotSpotMetaspaceConstant) {
|
if (base instanceof HotSpotMetaspaceConstant) {
|
||||||
MetaspaceWrapperObject metaspaceObject = HotSpotMetaspaceConstantImpl.getMetaspaceObject(base);
|
MetaspaceWrapperObject metaspaceObject = HotSpotMetaspaceConstantImpl.getMetaspaceObject(base);
|
||||||
if (metaspaceObject instanceof HotSpotResolvedObjectTypeImpl) {
|
if (metaspaceObject instanceof HotSpotResolvedObjectTypeImpl) {
|
||||||
|
@ -136,11 +130,11 @@ class HotSpotMemoryAccessProviderImpl implements HotSpotMemoryAccessProvider {
|
||||||
assert !compressed;
|
assert !compressed;
|
||||||
displacement += asRawPointer(baseConstant);
|
displacement += asRawPointer(baseConstant);
|
||||||
ret = UNSAFE.getUncompressedObject(displacement);
|
ret = UNSAFE.getUncompressedObject(displacement);
|
||||||
|
assert verifyReadRawObject(ret, baseConstant, initialDisplacement);
|
||||||
} else {
|
} else {
|
||||||
assert runtime.getConfig().useCompressedOops == compressed;
|
assert runtime.getConfig().useCompressedOops == compressed;
|
||||||
ret = UNSAFE.getObject(base, displacement);
|
ret = UNSAFE.getObject(base, displacement);
|
||||||
}
|
}
|
||||||
assert verifyReadRawObject(ret, baseConstant, initialDisplacement, compressed);
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue