24
24
*/
25
25
package com .oracle .svm .hosted .jfr ;
26
26
27
+ import java .io .FileInputStream ;
28
+ import java .io .FileOutputStream ;
29
+ import java .io .RandomAccessFile ;
27
30
import java .lang .reflect .Method ;
28
31
import java .util .Collection ;
29
- import java .util .Collections ;
30
32
import java .util .List ;
31
33
32
34
import org .graalvm .nativeimage .ImageSingletons ;
33
35
import org .graalvm .nativeimage .hosted .Feature ;
34
36
import org .graalvm .nativeimage .hosted .RuntimeClassInitialization ;
37
+ import org .graalvm .nativeimage .hosted .RuntimeReflection ;
35
38
36
39
import com .oracle .svm .core .feature .AutomaticallyRegisteredFeature ;
37
40
import com .oracle .svm .core .feature .InternalFeature ;
45
48
import com .oracle .svm .core .meta .SharedType ;
46
49
import com .oracle .svm .core .util .VMError ;
47
50
import com .oracle .svm .hosted .FeatureImpl ;
51
+ import com .oracle .svm .hosted .reflect .ReflectionFeature ;
48
52
49
53
import jdk .internal .event .Event ;
50
54
import jdk .jfr .internal .JVM ;
51
55
import jdk .vm .ci .meta .MetaAccessProvider ;
56
+ import sun .nio .ch .FileChannelImpl ;
52
57
53
58
/**
54
59
* 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) {
63
68
64
69
@ Override
65
70
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" );
67
81
}
68
82
69
83
@ Override
0 commit comments