Skip to content

Commit f9ade7a

Browse files
committed
Remove core reflection use from LayeredStaticFieldSupport
1 parent aee11e1 commit f9ade7a

2 files changed

Lines changed: 11 additions & 13 deletions

File tree

substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/imagelayer/LayeredClassInitialization.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,13 +26,15 @@
2626

2727
import org.graalvm.nativeimage.ImageSingletons;
2828

29-
import jdk.vm.ci.meta.MetaAccessProvider;
29+
import com.oracle.graal.pointsto.infrastructure.Universe;
30+
31+
import jdk.vm.ci.meta.ResolvedJavaType;
3032

3133
public abstract class LayeredClassInitialization {
3234

3335
static LayeredClassInitialization singleton() {
3436
return ImageSingletons.lookup(LayeredClassInitialization.class);
3537
}
3638

37-
abstract void initializeClassInAppLayer(Class<?> c, MetaAccessProvider meta);
39+
abstract void initializeClassInAppLayer(ResolvedJavaType type, Universe universe);
3840
}

substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/imagelayer/LayeredStaticFieldSupport.java

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,6 @@
2424
*/
2525
package com.oracle.svm.hosted.imagelayer;
2626

27-
import java.lang.reflect.Field;
28-
import java.lang.reflect.Modifier;
2927
import java.util.ArrayList;
3028
import java.util.Collections;
3129
import java.util.HashSet;
@@ -39,6 +37,7 @@
3937
import org.graalvm.nativeimage.ImageSingletons;
4038

4139
import com.oracle.graal.pointsto.heap.ImageHeapRelocatableConstant;
40+
import com.oracle.graal.pointsto.infrastructure.Universe;
4241
import com.oracle.graal.pointsto.meta.AnalysisField;
4342
import com.oracle.graal.pointsto.meta.AnalysisMetaAccess;
4443
import com.oracle.graal.pointsto.meta.AnalysisType;
@@ -71,8 +70,8 @@
7170
import jdk.graal.compiler.nodes.calc.FloatingNode;
7271
import jdk.graal.compiler.nodes.spi.LoweringTool;
7372
import jdk.vm.ci.meta.JavaConstant;
74-
import jdk.vm.ci.meta.MetaAccessProvider;
7573
import jdk.vm.ci.meta.ResolvedJavaField;
74+
import jdk.vm.ci.meta.ResolvedJavaType;
7675

7776
/**
7877
* This class keeps track of the location of static fields assigned in previous layers as well as
@@ -180,9 +179,8 @@ public void ensureInitializedFromFieldData(AnalysisField aField, SharedLayerSnap
180179
assert priorInstalledLocation.equals(result);
181180
}
182181

183-
private void installFieldInAppLayer(Field field, MetaAccessProvider meta) {
184-
AnalysisField aField = (AnalysisField) meta.lookupJavaField(field);
185-
installFieldInAppLayer(aField);
182+
private void installFieldInAppLayer(ResolvedJavaField field, Universe universe) {
183+
installFieldInAppLayer((AnalysisField) universe.lookup(field));
186184
}
187185

188186
void installFieldInAppLayer(AnalysisField aField) {
@@ -231,11 +229,9 @@ void installFieldInAppLayer(AnalysisField aField) {
231229
}
232230

233231
@Override
234-
void initializeClassInAppLayer(Class<?> c, MetaAccessProvider meta) {
235-
for (var field : c.getDeclaredFields()) {
236-
if (Modifier.isStatic(field.getModifiers())) {
237-
installFieldInAppLayer(field, meta);
238-
}
232+
void initializeClassInAppLayer(ResolvedJavaType type, Universe universe) {
233+
for (var field : type.getStaticFields()) {
234+
installFieldInAppLayer(field, universe);
239235
}
240236
}
241237

0 commit comments

Comments
 (0)