RFR: 8248410 - Correct Fix for 8236647: java/lang/invoke/CallSiteTest.java failed with InvocationTargetException in Graal mode
Bob Vandette
bob.vandette at oracle.com
Fri Jun 26 13:52:54 UTC 2020
The fix for "8236647: java/lang/invoke/CallSiteTest.java failed with InvocationTargetException in Graal mode" added
an inner class which causes problems when generating GraalVM’s libjvmcicompiler.so library. This fix removes the
inner class addition and matches the implementation that is in the GraalVMs labsjdk sources.
Here’s the proposed fix:
diff --git a/src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotObjectConstantImpl.java b/src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotObjectConstantImpl.java
--- a/src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotObjectConstantImpl.java
+++ b/src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotObjectConstantImpl.java
@@ -65,25 +65,21 @@
@Override
public abstract int getIdentityHashCode();
- static class Fields {
- // Initializing these too early causes a hang, so do it here in a subclass
- static final HotSpotResolvedJavaField callSiteTargetField = HotSpotMethodHandleAccessProvider.Internals.instance().callSiteTargetField;
- static final HotSpotResolvedJavaField constantCallSiteFrozenField = HotSpotMethodHandleAccessProvider.Internals.instance().constantCallSiteFrozenField;
- }
-
private boolean isFullyInitializedConstantCallSite() {
if (!runtime().getConstantCallSite().isInstance(this)) {
return false;
}
// read ConstantCallSite.isFrozen as a volatile field
- boolean isFrozen = readFieldValue(Fields.constantCallSiteFrozenField, true /* volatile */).asBoolean();
+ HotSpotResolvedJavaField field = HotSpotMethodHandleAccessProvider.Internals.instance().constantCallSiteFrozenField;
+ boolean isFrozen = readFieldValue(field, true /* volatile */).asBoolean();
// isFrozen true implies fully-initialized
return isFrozen;
}
private HotSpotObjectConstantImpl readTarget() {
// read CallSite.target as a volatile field
- return (HotSpotObjectConstantImpl) readFieldValue(Fields.callSiteTargetField, true /* volatile */);
+ HotSpotResolvedJavaField field = HotSpotMethodHandleAccessProvider.Internals.instance().callSiteTargetField;
+ return (HotSpotObjectConstantImpl) readFieldValue(field, true /* volatile */);
}
Bob.
More information about the hotspot-compiler-dev
mailing list