diff --git a/src/jdk.internal.vm.ci/share/classes/jdk/vm/ci/hotspot/HotSpotObjectConstantImpl.java b/src/jdk.internal.vm.ci/share/classes/jdk/vm/ci/hotspot/HotSpotObjectConstantImpl.java index e7482b64613..443673a8783 100644 --- a/src/jdk.internal.vm.ci/share/classes/jdk/vm/ci/hotspot/HotSpotObjectConstantImpl.java +++ b/src/jdk.internal.vm.ci/share/classes/jdk/vm/ci/hotspot/HotSpotObjectConstantImpl.java @@ -88,13 +88,15 @@ public JavaConstant getCallSiteTarget(Assumptions assumptions) { if (runtime().getCallSite().isInstance(this)) { // For ConstantCallSites, we need to read "isFrozen" before reading "target" // isFullyInitializedConstantCallSite() reads "isFrozen" - if (!isFullyInitializedConstantCallSite()) { - if (assumptions == null) { - return null; - } - assumptions.record(new Assumptions.CallSiteTargetValue(this, readTarget())); + if (isFullyInitializedConstantCallSite()) { + return readTarget(); } - return readTarget(); + if (assumptions == null) { + return null; + } + HotSpotObjectConstantImpl result = readTarget(); + assumptions.record(new Assumptions.CallSiteTargetValue(this, result)); + return result; } return null; }