2424 */
2525package jdk .graal .compiler .libgraal .truffle ;
2626
27+ import static com .oracle .truffle .compiler .hotspot .libgraal .TruffleFromLibGraal .Id .CreateStringSupplier ;
28+ import static com .oracle .truffle .compiler .hotspot .libgraal .TruffleFromLibGraal .Id .GetPartialEvaluationMethodInfo ;
29+ import static com .oracle .truffle .compiler .hotspot .libgraal .TruffleFromLibGraal .Id .IsSuppressedFailure ;
30+ import static com .oracle .truffle .compiler .hotspot .libgraal .TruffleFromLibGraal .Id .IsValueType ;
31+ import static com .oracle .truffle .compiler .hotspot .libgraal .TruffleFromLibGraal .Id .Log ;
32+ import static com .oracle .truffle .compiler .hotspot .libgraal .TruffleFromLibGraal .Id .OnCodeInstallation ;
33+ import static com .oracle .truffle .compiler .hotspot .libgraal .TruffleFromLibGraal .Id .OnIsolateShutdown ;
34+ import static com .oracle .truffle .compiler .hotspot .libgraal .TruffleFromLibGraal .Id .RegisterOptimizedAssumptionDependency ;
35+ import static org .graalvm .jniutils .JNIMethodScope .env ;
36+ import static org .graalvm .jniutils .JNIMethodScope .scope ;
37+
38+ import java .util .function .Consumer ;
39+ import java .util .function .Supplier ;
40+
41+ import org .graalvm .jniutils .HSObject ;
42+ import org .graalvm .jniutils .JNI .JClass ;
43+ import org .graalvm .jniutils .JNI .JNIEnv ;
44+ import org .graalvm .jniutils .JNI .JObject ;
45+ import org .graalvm .jniutils .JNI .JString ;
46+ import org .graalvm .jniutils .JNIMethodScope ;
47+ import org .graalvm .jniutils .JNIUtil ;
48+
2749import com .oracle .truffle .compiler .ConstantFieldInfo ;
2850import com .oracle .truffle .compiler .HostMethodInfo ;
2951import com .oracle .truffle .compiler .OptimizedAssumptionDependency ;
3052import com .oracle .truffle .compiler .PartialEvaluationMethodInfo ;
3153import com .oracle .truffle .compiler .TruffleCompilable ;
3254import com .oracle .truffle .compiler .TruffleCompilerRuntime ;
33-
3455import com .oracle .truffle .compiler .hotspot .libgraal .TruffleFromLibGraal ;
56+
3557import jdk .graal .compiler .libgraal .LibGraalFeature ;
3658import jdk .graal .compiler .serviceprovider .IsolateUtil ;
3759import jdk .graal .compiler .truffle .hotspot .HotSpotTruffleCompilationSupport ;
4769import jdk .vm .ci .meta .ResolvedJavaMethod ;
4870import jdk .vm .ci .meta .ResolvedJavaType ;
4971import jdk .vm .ci .meta .UnresolvedJavaType ;
50- import org .graalvm .jniutils .HSObject ;
51- import org .graalvm .jniutils .JNI .JByteArray ;
52- import org .graalvm .jniutils .JNI .JClass ;
53- import org .graalvm .jniutils .JNI .JNIEnv ;
54- import org .graalvm .jniutils .JNI .JObject ;
55- import org .graalvm .jniutils .JNI .JString ;
56- import org .graalvm .jniutils .JNIMethodScope ;
57- import org .graalvm .jniutils .JNIUtil ;
58- import org .graalvm .nativeimage .StackValue ;
5972import org .graalvm .nativeimage .c .type .CCharPointer ;
6073
61- import java .util .Arrays ;
62- import java .util .function .Consumer ;
63- import java .util .function .Supplier ;
64-
65- import static com .oracle .truffle .compiler .hotspot .libgraal .TruffleFromLibGraal .Id .CreateStringSupplier ;
66- import static com .oracle .truffle .compiler .hotspot .libgraal .TruffleFromLibGraal .Id .GetConstantFieldInfo ;
67- import static com .oracle .truffle .compiler .hotspot .libgraal .TruffleFromLibGraal .Id .GetPartialEvaluationMethodInfo ;
68- import static com .oracle .truffle .compiler .hotspot .libgraal .TruffleFromLibGraal .Id .IsSuppressedFailure ;
69- import static com .oracle .truffle .compiler .hotspot .libgraal .TruffleFromLibGraal .Id .IsValueType ;
70- import static com .oracle .truffle .compiler .hotspot .libgraal .TruffleFromLibGraal .Id .Log ;
71- import static com .oracle .truffle .compiler .hotspot .libgraal .TruffleFromLibGraal .Id .OnCodeInstallation ;
72- import static com .oracle .truffle .compiler .hotspot .libgraal .TruffleFromLibGraal .Id .OnIsolateShutdown ;
73- import static com .oracle .truffle .compiler .hotspot .libgraal .TruffleFromLibGraal .Id .RegisterOptimizedAssumptionDependency ;
74- import static org .graalvm .jniutils .JNIMethodScope .env ;
75- import static org .graalvm .jniutils .JNIMethodScope .scope ;
76-
7774public final class HSTruffleCompilerRuntime extends HSObject implements TruffleCompilerRuntime {
7875
7976 static final String COMPILER_VERSION = HotSpotTruffleCompilationSupport .readCompilerVersion ();
@@ -82,31 +79,23 @@ public final class HSTruffleCompilerRuntime extends HSObject implements TruffleC
8279 private static final Class <?> TRANSLATED_EXCEPTION = LibGraalFeature .lookupClass ("jdk.internal.vm.TranslatedException" );
8380
8481 private final ResolvedJavaType classLoaderDelegate ;
82+ private final CCharPointer javaInstrumentationActive ;
8583 final TruffleFromLibGraalCalls calls ;
8684
87- HSTruffleCompilerRuntime (JNIEnv env , JObject handle , ResolvedJavaType classLoaderDelegate , JClass peer ) {
85+ HSTruffleCompilerRuntime (JNIEnv env , JObject handle , ResolvedJavaType classLoaderDelegate , JClass peer , CCharPointer javaInstrumentationActive ) {
8886 /*
8987 * Note global duplicates may happen if the compiler is initialized by a host compilation.
9088 */
9189 super (env , handle , true , false );
9290 this .classLoaderDelegate = classLoaderDelegate ;
91+ this .javaInstrumentationActive = javaInstrumentationActive ;
9392 this .calls = new TruffleFromLibGraalCalls (env , peer );
9493 }
9594
9695 @ TruffleFromLibGraal (GetPartialEvaluationMethodInfo )
9796 @ Override
9897 public PartialEvaluationMethodInfo getPartialEvaluationMethodInfo (ResolvedJavaMethod method ) {
99- long methodHandle = HotSpotJVMCIRuntime .runtime ().translate (method );
100- JByteArray hsByteArray = HSTruffleCompilerRuntimeGen .callGetPartialEvaluationMethodInfo (calls , env (), getHandle (), methodHandle );
101- CCharPointer buffer = StackValue .get (5 );
102- JNIUtil .GetByteArrayRegion (env (), hsByteArray , 0 , 5 , buffer );
103- BinaryInput in = BinaryInput .create (buffer , 5 );
104- LoopExplosionKind loopExplosionKind = LoopExplosionKind .values ()[in .readByte ()];
105- InlineKind peInlineKind = InlineKind .values ()[in .readByte ()];
106- InlineKind inlineKind = InlineKind .values ()[in .readByte ()];
107- boolean inlineable = in .readBoolean ();
108- boolean isSpecializationMethod = in .readBoolean ();
109- return new PartialEvaluationMethodInfo (loopExplosionKind , peInlineKind , inlineKind , inlineable , isSpecializationMethod );
98+ throw new UnsupportedOperationException ("Use HotSpotPartialEvaluator#getMethodInfo()" );
11099 }
111100
112101 @ Override
@@ -151,35 +140,9 @@ public boolean isValueType(ResolvedJavaType type) {
151140 return HSTruffleCompilerRuntimeGen .callIsValueType (calls , env (), getHandle (), typeHandle );
152141 }
153142
154- @ TruffleFromLibGraal (GetConstantFieldInfo )
155143 @ Override
156144 public ConstantFieldInfo getConstantFieldInfo (ResolvedJavaField field ) {
157- ResolvedJavaType enclosingType = field .getDeclaringClass ();
158- boolean isStatic = field .isStatic ();
159- ResolvedJavaField [] declaredFields = isStatic ? enclosingType .getStaticFields () : enclosingType .getInstanceFields (false );
160- int fieldIndex = -1 ;
161- for (int i = 0 ; i < declaredFields .length ; i ++) {
162- if (field .equals (declaredFields [i ])) {
163- fieldIndex = i ;
164- break ;
165- }
166- }
167- if (fieldIndex == -1 ) {
168- throw new IllegalStateException (String .format (
169- "%s field: %s declared in: %s is not in declared fields: %s" ,
170- isStatic ? "Static" : "Instance" ,
171- field ,
172- enclosingType ,
173- Arrays .toString (declaredFields )));
174- }
175- long typeHandle = HotSpotJVMCIRuntime .runtime ().translate (enclosingType );
176- int rawValue = HSTruffleCompilerRuntimeGen .callGetConstantFieldInfo (calls , env (), getHandle (), typeHandle , isStatic , fieldIndex );
177- return switch (rawValue ) {
178- case Integer .MIN_VALUE -> null ;
179- case -1 -> ConstantFieldInfo .CHILD ;
180- case -2 -> ConstantFieldInfo .CHILDREN ;
181- default -> ConstantFieldInfo .forDimensions (rawValue );
182- };
145+ throw new UnsupportedOperationException ("Use HotSpotPartialEvaluator#getConstantFieldInfo()" );
183146 }
184147
185148 @ Override
@@ -252,4 +215,9 @@ public boolean isSuppressedFailure(TruffleCompilable compilable, Supplier<String
252215 public void notifyShutdown (JNIEnv env ) {
253216 HSTruffleCompilerRuntimeGen .callOnIsolateShutdown (calls , env , IsolateUtil .getIsolateID ());
254217 }
218+
219+ @ Override
220+ public boolean isJavaInstrumentationActive () {
221+ return javaInstrumentationActive .isNonNull () && javaInstrumentationActive .read () != 0 ;
222+ }
255223}
0 commit comments