102
102
import org .graalvm .nativeimage .StackValue ;
103
103
import org .graalvm .nativeimage .VMRuntime ;
104
104
import org .graalvm .nativeimage .hosted .Feature ;
105
+ import org .graalvm .nativeimage .hosted .RuntimeJNIAccess ;
105
106
import org .graalvm .nativeimage .hosted .RuntimeReflection ;
106
- import org .graalvm .nativeimage .impl .ConfigurationCondition ;
107
107
import org .graalvm .word .LocationIdentity ;
108
108
import org .graalvm .word .Pointer ;
109
109
import org .graalvm .word .WordFactory ;
126
126
import com .oracle .svm .core .graal .snippets .NodeLoweringProvider ;
127
127
import com .oracle .svm .core .heap .GCCause ;
128
128
import com .oracle .svm .core .heap .Heap ;
129
- import com .oracle .svm .core .jni .JNIRuntimeAccess ;
130
129
import com .oracle .svm .core .log .FunctionPointerLogHandler ;
131
130
import com .oracle .svm .core .option .HostedOptionKey ;
132
131
import com .oracle .svm .core .option .RuntimeOptionKey ;
@@ -216,10 +215,9 @@ public void afterRegistration(AfterRegistrationAccess access) {
216
215
217
216
@ Override
218
217
public void duringSetup (DuringSetupAccess access ) {
219
- JNIRuntimeAccess .JNIRuntimeAccessibilitySupport registry = ImageSingletons .lookup (JNIRuntimeAccess .JNIRuntimeAccessibilitySupport .class );
220
218
ImageClassLoader imageClassLoader = ((DuringSetupAccessImpl ) access ).getImageClassLoader ();
221
- registerJNIConfiguration (registry , imageClassLoader );
222
219
220
+ registerJNIConfiguration (imageClassLoader );
223
221
EconomicMap <String , OptionDescriptor > descriptors = EconomicMap .create ();
224
222
for (Class <? extends OptionDescriptors > optionsClass : imageClassLoader .findSubclasses (OptionDescriptors .class , false )) {
225
223
if (!Modifier .isAbstract (optionsClass .getModifiers ()) && !OptionDescriptorsMap .class .isAssignableFrom (optionsClass )) {
@@ -349,10 +347,9 @@ UserException error(String format, Object... args) {
349
347
}
350
348
}
351
349
352
- private static void registerJNIConfiguration (JNIRuntimeAccess . JNIRuntimeAccessibilitySupport registry , ImageClassLoader loader ) {
350
+ private static void registerJNIConfiguration (ImageClassLoader loader ) {
353
351
try (JNIConfigSource source = new JNIConfigSource (loader )) {
354
352
Map <String , Class <?>> classes = new HashMap <>();
355
- ConfigurationCondition condition = ConfigurationCondition .alwaysTrue ();
356
353
for (String line : source .lines ) {
357
354
source .lineNo ++;
358
355
String [] tokens = line .split (" " );
@@ -361,8 +358,8 @@ private static void registerJNIConfiguration(JNIRuntimeAccess.JNIRuntimeAccessib
361
358
Class <?> clazz = classes .get (className );
362
359
if (clazz == null ) {
363
360
clazz = source .findClass (className );
364
- registry .register (condition , clazz );
365
- registry .register (condition , Array .newInstance (clazz , 0 ).getClass ());
361
+ RuntimeJNIAccess .register (clazz );
362
+ RuntimeJNIAccess .register (Array .newInstance (clazz , 0 ).getClass ());
366
363
classes .put (className , clazz );
367
364
}
368
365
@@ -371,7 +368,7 @@ private static void registerJNIConfiguration(JNIRuntimeAccess.JNIRuntimeAccessib
371
368
source .check (tokens .length == 4 , "Expected 4 tokens for a field" );
372
369
String fieldName = tokens [2 ];
373
370
try {
374
- registry .register (condition , false , clazz .getDeclaredField (fieldName ));
371
+ RuntimeJNIAccess .register (clazz .getDeclaredField (fieldName ));
375
372
} catch (NoSuchFieldException e ) {
376
373
throw source .error ("Field %s.%s not found" , clazz .getTypeName (), fieldName );
377
374
} catch (NoClassDefFoundError e ) {
@@ -390,15 +387,15 @@ private static void registerJNIConfiguration(JNIRuntimeAccess.JNIRuntimeAccessib
390
387
try {
391
388
if ("<init>" .equals (methodName )) {
392
389
Constructor <?> cons = clazz .getDeclaredConstructor (parameters );
393
- registry .register (condition , false , cons );
390
+ RuntimeJNIAccess .register (cons );
394
391
if (Throwable .class .isAssignableFrom (clazz ) && !Modifier .isAbstract (clazz .getModifiers ())) {
395
392
if (usedInTranslatedException (parameters )) {
396
393
RuntimeReflection .register (clazz );
397
394
RuntimeReflection .register (cons );
398
395
}
399
396
}
400
397
} else {
401
- registry .register (condition , false , clazz .getDeclaredMethod (methodName , parameters ));
398
+ RuntimeJNIAccess .register (clazz .getDeclaredMethod (methodName , parameters ));
402
399
}
403
400
} catch (NoSuchMethodException e ) {
404
401
throw source .error ("Method %s.%s%s not found: %s" , clazz .getTypeName (), methodName , descriptor , e );
0 commit comments