From 55f41cd9f5787915887e887e69b5a641545cebb9 Mon Sep 17 00:00:00 2001 From: Sacha Coppey Date: Tue, 30 Sep 2025 21:37:31 +0200 Subject: [PATCH] Track fields of tracked types across layers --- .../com/oracle/graal/pointsto/meta/AnalysisType.java | 11 +++++++++++ 1 file changed, 11 insertions(+) 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 438b9194527d..3d6fc5f12326 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 @@ -630,6 +630,17 @@ protected void onTrackedAcrossLayers(Object reason) { * is not reached through other paths. */ } + /* + * Track fields of tracked types to ensure the analysis results are transferred across + * layers. This is important for things such as object layout decisions made in later + * layers. + */ + for (var field : getInstanceFields(true)) { + ((AnalysisField) field).registerAsTrackedAcrossLayers(reason); + } + for (var field : getStaticFields()) { + ((AnalysisField) field).registerAsTrackedAcrossLayers(reason); + } } /** Prepare information that {@link AnalysisMethod#collectMethodImplementations} needs. */