Skip to content

Commit e716a71

Browse files
[GR-54703] Add reflection metadata for jfrTracing field.
PullRequest: graal/18174
2 parents cc46b41 + e816ad6 commit e716a71

File tree

2 files changed

+17
-2
lines changed

2 files changed

+17
-2
lines changed

substratevm/mx.substratevm/suite.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -635,6 +635,7 @@
635635
"jdk.internal.module",
636636
"sun.text.spi",
637637
"jdk.internal.reflect",
638+
"sun.nio.ch",
638639
"sun.util.cldr",
639640
"sun.util.locale",
640641
"sun.invoke.util",

substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/jfr/JfrEventFeature.java

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,14 +24,17 @@
2424
*/
2525
package com.oracle.svm.hosted.jfr;
2626

27+
import java.io.FileInputStream;
28+
import java.io.FileOutputStream;
29+
import java.io.RandomAccessFile;
2730
import java.lang.reflect.Method;
2831
import java.util.Collection;
29-
import java.util.Collections;
3032
import java.util.List;
3133

3234
import org.graalvm.nativeimage.ImageSingletons;
3335
import org.graalvm.nativeimage.hosted.Feature;
3436
import org.graalvm.nativeimage.hosted.RuntimeClassInitialization;
37+
import org.graalvm.nativeimage.hosted.RuntimeReflection;
3538

3639
import com.oracle.svm.core.feature.AutomaticallyRegisteredFeature;
3740
import com.oracle.svm.core.feature.InternalFeature;
@@ -45,10 +48,12 @@
4548
import com.oracle.svm.core.meta.SharedType;
4649
import com.oracle.svm.core.util.VMError;
4750
import com.oracle.svm.hosted.FeatureImpl;
51+
import com.oracle.svm.hosted.reflect.ReflectionFeature;
4852

4953
import jdk.internal.event.Event;
5054
import jdk.jfr.internal.JVM;
5155
import jdk.vm.ci.meta.MetaAccessProvider;
56+
import sun.nio.ch.FileChannelImpl;
5257

5358
/**
5459
* Support for Java-level JFR events. This feature is only present if the {@link JfrFeature} is used
@@ -63,7 +68,16 @@ public boolean isInConfiguration(IsInConfigurationAccess access) {
6368

6469
@Override
6570
public List<Class<? extends Feature>> getRequiredFeatures() {
66-
return Collections.singletonList(JfrFeature.class);
71+
return List.of(JfrFeature.class, ReflectionFeature.class);
72+
}
73+
74+
@Override
75+
public void afterRegistration(AfterRegistrationAccess access) {
76+
RuntimeReflection.registerFieldLookup(Throwable.class, "jfrTracing");
77+
RuntimeReflection.registerFieldLookup(FileInputStream.class, "jfrTracing");
78+
RuntimeReflection.registerFieldLookup(FileOutputStream.class, "jfrTracing");
79+
RuntimeReflection.registerFieldLookup(FileChannelImpl.class, "jfrTracing");
80+
RuntimeReflection.registerFieldLookup(RandomAccessFile.class, "jfrTracing");
6781
}
6882

6983
@Override

0 commit comments

Comments
 (0)