From bab555f4dc9cd2b7a8c36051128ae2b73aa99374 Mon Sep 17 00:00:00 2001 From: Tom Rodriguez Date: Thu, 8 Jun 2023 16:11:33 +0000 Subject: [PATCH] 8309498: [JVMCI] race in CallSiteTargetValue recording Reviewed-by: dnsimon, kvn --- .../vm/ci/hotspot/HotSpotObjectConstantImpl.java | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) 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; }