From 0ad99d60b04d18932d9c13d38cfeb4fb219fdef2 Mon Sep 17 00:00:00 2001 From: Sacha Coppey Date: Wed, 22 Jan 2025 13:09:46 +0100 Subject: [PATCH] Set implementations of methods as reachableInCurrentLayer too --- .../src/com/oracle/graal/pointsto/meta/AnalysisMethod.java | 1 + .../src/com/oracle/graal/pointsto/meta/AnalysisType.java | 3 +++ .../src/com/oracle/graal/pointsto/meta/AnalysisUniverse.java | 3 +++ 3 files changed, 7 insertions(+) diff --git a/substratevm/src/com.oracle.graal.pointsto/src/com/oracle/graal/pointsto/meta/AnalysisMethod.java b/substratevm/src/com.oracle.graal.pointsto/src/com/oracle/graal/pointsto/meta/AnalysisMethod.java index e2077ea10f02..372823f2c028 100644 --- a/substratevm/src/com.oracle.graal.pointsto/src/com/oracle/graal/pointsto/meta/AnalysisMethod.java +++ b/substratevm/src/com.oracle.graal.pointsto/src/com/oracle/graal/pointsto/meta/AnalysisMethod.java @@ -475,6 +475,7 @@ public void setReachableInCurrentLayer() { if (imageLayerLoader != null) { imageLayerLoader.loadPriorStrengthenedGraphAnalysisElements(this); } + ConcurrentLightHashSet.forEach(this, allImplementationsUpdater, AnalysisMethod::setReachableInCurrentLayer); }); } } diff --git a/substratevm/src/com.oracle.graal.pointsto/src/com/oracle/graal/pointsto/meta/AnalysisType.java b/substratevm/src/com.oracle.graal.pointsto/src/com/oracle/graal/pointsto/meta/AnalysisType.java index a27449d83e01..92e1c4707811 100644 --- a/substratevm/src/com.oracle.graal.pointsto/src/com/oracle/graal/pointsto/meta/AnalysisType.java +++ b/substratevm/src/com.oracle.graal.pointsto/src/com/oracle/graal/pointsto/meta/AnalysisType.java @@ -670,6 +670,9 @@ private void prepareMethodImplementations(AnalysisType superType) { AnalysisMethod override = resolveConcreteMethod(method, null); if (override != null && !override.equals(method)) { ConcurrentLightHashSet.addElement(method, AnalysisMethod.allImplementationsUpdater, override); + if (method.reachableInCurrentLayer()) { + override.setReachableInCurrentLayer(); + } } }); } diff --git a/substratevm/src/com.oracle.graal.pointsto/src/com/oracle/graal/pointsto/meta/AnalysisUniverse.java b/substratevm/src/com.oracle.graal.pointsto/src/com/oracle/graal/pointsto/meta/AnalysisUniverse.java index 02070692e3cf..9fd730c7c8ce 100644 --- a/substratevm/src/com.oracle.graal.pointsto/src/com/oracle/graal/pointsto/meta/AnalysisUniverse.java +++ b/substratevm/src/com.oracle.graal.pointsto/src/com/oracle/graal/pointsto/meta/AnalysisUniverse.java @@ -452,6 +452,9 @@ private static void prepareMethodImplementations(AnalysisMethod method) { AnalysisMethod override = subtype.resolveConcreteMethod(method, null); if (override != null && !override.equals(method)) { ConcurrentLightHashSet.addElement(method, AnalysisMethod.allImplementationsUpdater, override); + if (method.reachableInCurrentLayer()) { + override.setReachableInCurrentLayer(); + } } } }