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