RFR: 8248410 - Correct Fix for 8236647: java/lang/invoke/CallSiteTest.java failed with InvocationTargetException in Graal mode

Vladimir Kozlov vladimir.kozlov at oracle.com
Mon Jun 29 14:59:17 UTC 2020


Looks good.

Thanks
Vladimir

> On Jun 26, 2020, at 8:20 AM, Bob Vandette <bob.vandette at oracle.com> wrote:
> 
> 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