OpenJDK / jdk / jdk
changeset 59980:a922dc19a7a5
8248410: Correct Fix for 8236647: java/lang/invoke/CallSiteTest.java failed with InvocationTargetException in Graal mode
Reviewed-by: kvn, never
author | bobv |
---|---|
date | Mon, 29 Jun 2020 17:25:44 +0000 |
parents | a8a1b64a0556 |
children | d88dd9bd2971 |
files | src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotObjectConstantImpl.java |
diffstat | 1 files changed, 4 insertions(+), 8 deletions(-) [+] |
line wrap: on
line diff
--- a/src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotObjectConstantImpl.java Mon Jun 29 18:39:40 2020 +0200 +++ b/src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotObjectConstantImpl.java Mon Jun 29 17:25:44 2020 +0000 @@ -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 */); } @Override