RFR: 8248410 - Correct Fix for 8236647: java/lang/invoke/CallSiteTest.java failed with InvocationTargetException in Graal mode
Tom Rodriguez
tom.rodriguez at oracle.com
Mon Jun 29 16:59:33 UTC 2020
Looks good to me.
tom
Bob Vandette wrote on 6/26/20 6:52 AM:
> 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