37
37
38
38
import org .graalvm .collections .EconomicMap ;
39
39
import org .graalvm .collections .MapCursor ;
40
- import org .graalvm .nativeimage .impl .ConfigurationCondition ;
41
40
42
41
import com .oracle .svm .configure .ConfigurationBase ;
43
42
import com .oracle .svm .configure .ConfigurationParser ;
@@ -57,7 +56,7 @@ public void printJson(JsonWriter writer) throws IOException {
57
56
}
58
57
}
59
58
60
- private record StubDesc (ConfigurationFunctionDescriptor desc , Map <String , Object > linkerOptions ) implements JsonPrintable {
59
+ private record StubDesc (UnresolvedConfigurationCondition condition , ConfigurationFunctionDescriptor desc , Map <String , Object > linkerOptions ) implements JsonPrintable {
61
60
@ Override
62
61
public void printJson (JsonWriter writer ) throws IOException {
63
62
writer .appendObjectStart ();
@@ -69,7 +68,8 @@ public void printJson(JsonWriter writer) throws IOException {
69
68
}
70
69
}
71
70
72
- private record DirectStubDesc (String clazz , String method , ConfigurationFunctionDescriptor desc , Map <String , Object > linkerOptions ) implements JsonPrintable {
71
+ private record DirectStubDesc (UnresolvedConfigurationCondition condition , String clazz , String method , ConfigurationFunctionDescriptor desc ,
72
+ Map <String , Object > linkerOptions ) implements JsonPrintable {
73
73
@ Override
74
74
public void printJson (JsonWriter writer ) throws IOException {
75
75
writer .appendObjectStart ()
@@ -88,7 +88,7 @@ public DirectStubDesc withoutFD() {
88
88
if (desc == null ) {
89
89
return this ;
90
90
}
91
- return new DirectStubDesc (clazz , method , null , linkerOptions );
91
+ return new DirectStubDesc (condition , clazz , method , null , linkerOptions );
92
92
}
93
93
}
94
94
@@ -216,48 +216,48 @@ public void mergeConditional(UnresolvedConfigurationCondition condition, Foreign
216
216
public void addDowncall (String returnType , List <String > parameterTypes , Map <String , Object > linkerOptions ) {
217
217
Objects .requireNonNull (returnType );
218
218
Objects .requireNonNull (parameterTypes );
219
- addDowncall (new ConfigurationFunctionDescriptor (returnType , parameterTypes ), Map .copyOf (linkerOptions ));
219
+ addDowncall (UnresolvedConfigurationCondition . alwaysTrue (), new ConfigurationFunctionDescriptor (returnType , parameterTypes ), Map .copyOf (linkerOptions ));
220
220
}
221
221
222
222
public void addUpcall (String returnType , List <String > parameterTypes , Map <String , Object > linkerOptions ) {
223
223
Objects .requireNonNull (returnType );
224
224
Objects .requireNonNull (parameterTypes );
225
- addUpcall (new ConfigurationFunctionDescriptor (returnType , parameterTypes ), Map .copyOf (linkerOptions ));
225
+ addUpcall (UnresolvedConfigurationCondition . alwaysTrue (), new ConfigurationFunctionDescriptor (returnType , parameterTypes ), Map .copyOf (linkerOptions ));
226
226
}
227
227
228
228
public void addDirectUpcall (String returnType , List <String > parameterTypes , Map <String , Object > linkerOptions , String clazz , String method ) {
229
229
Objects .requireNonNull (returnType );
230
230
Objects .requireNonNull (parameterTypes );
231
231
Objects .requireNonNull (clazz );
232
232
Objects .requireNonNull (method );
233
- addDirectUpcall (new ConfigurationFunctionDescriptor (returnType , parameterTypes ), Map .copyOf (linkerOptions ), clazz , method );
233
+ addDirectUpcall (UnresolvedConfigurationCondition . alwaysTrue (), new ConfigurationFunctionDescriptor (returnType , parameterTypes ), Map .copyOf (linkerOptions ), clazz , method );
234
234
}
235
235
236
- public void addDowncall (ConfigurationFunctionDescriptor desc , Map <String , Object > linkerOptions ) {
236
+ public void addDowncall (UnresolvedConfigurationCondition configurationCondition , ConfigurationFunctionDescriptor desc , Map <String , Object > linkerOptions ) {
237
237
Objects .requireNonNull (desc );
238
- downcallStubs .add (new StubDesc (desc , Map .copyOf (linkerOptions )));
238
+ downcallStubs .add (new StubDesc (configurationCondition , desc , Map .copyOf (linkerOptions )));
239
239
}
240
240
241
- public void addUpcall (ConfigurationFunctionDescriptor desc , Map <String , Object > linkerOptions ) {
241
+ public void addUpcall (UnresolvedConfigurationCondition configurationCondition , ConfigurationFunctionDescriptor desc , Map <String , Object > linkerOptions ) {
242
242
Objects .requireNonNull (desc );
243
- upcallStubs .add (new StubDesc (desc , Map .copyOf (linkerOptions )));
243
+ upcallStubs .add (new StubDesc (configurationCondition , desc , Map .copyOf (linkerOptions )));
244
244
}
245
245
246
- public void addDirectUpcall (ConfigurationFunctionDescriptor desc , Map <String , Object > linkerOptions , String clazz , String method ) {
246
+ public void addDirectUpcall (UnresolvedConfigurationCondition configurationCondition , ConfigurationFunctionDescriptor desc , Map <String , Object > linkerOptions , String clazz , String method ) {
247
247
Objects .requireNonNull (desc );
248
248
Objects .requireNonNull (clazz );
249
249
Objects .requireNonNull (method );
250
- DirectStubDesc candidate = new DirectStubDesc (clazz , method , desc , Map .copyOf (linkerOptions ));
250
+ DirectStubDesc candidate = new DirectStubDesc (configurationCondition , clazz , method , desc , Map .copyOf (linkerOptions ));
251
251
// only add the new descriptor if it is not subsumed by an existing one
252
252
if (!directUpcallStubs .contains (candidate .withoutFD ())) {
253
253
directUpcallStubs .add (candidate );
254
254
}
255
255
}
256
256
257
- public void addDirectUpcall (Map <String , Object > linkerOptions , String clazz , String method ) {
257
+ public void addDirectUpcall (UnresolvedConfigurationCondition configurationCondition , Map <String , Object > linkerOptions , String clazz , String method ) {
258
258
Objects .requireNonNull (clazz );
259
259
Objects .requireNonNull (method );
260
- DirectStubDesc directStubDesc = new DirectStubDesc (clazz , method , null , Map .copyOf (linkerOptions ));
260
+ DirectStubDesc directStubDesc = new DirectStubDesc (configurationCondition , clazz , method , null , Map .copyOf (linkerOptions ));
261
261
// remove all existing descriptors if they are subsumed by the new descriptor
262
262
directUpcallStubs .removeIf (existing -> directStubDesc .equals (existing .withoutFD ()));
263
263
directUpcallStubs .add (directStubDesc );
@@ -337,24 +337,25 @@ private UnresolvedForeignConfigurationParser(EnumSet<ConfigurationParserOption>
337
337
}
338
338
339
339
@ Override
340
- protected void registerDowncall (ConfigurationCondition configurationCondition , ConfigurationFunctionDescriptor descriptor , Map <String , Object > options ) {
341
- ForeignConfiguration .this .addDowncall (descriptor , options );
340
+ protected void registerDowncall (UnresolvedConfigurationCondition configurationCondition , ConfigurationFunctionDescriptor descriptor , Map <String , Object > options ) {
341
+ ForeignConfiguration .this .addDowncall (configurationCondition , descriptor , options );
342
342
343
343
}
344
344
345
345
@ Override
346
- protected void registerUpcall (ConfigurationCondition configurationCondition , ConfigurationFunctionDescriptor descriptor , Map <String , Object > options ) {
347
- ForeignConfiguration .this .addUpcall (descriptor , options );
346
+ protected void registerUpcall (UnresolvedConfigurationCondition configurationCondition , ConfigurationFunctionDescriptor descriptor , Map <String , Object > options ) {
347
+ ForeignConfiguration .this .addUpcall (configurationCondition , descriptor , options );
348
348
}
349
349
350
350
@ Override
351
- protected void registerDirectUpcallWithoutDescriptor (String className , String methodName , EconomicMap <String , Object > optionsMap ) {
352
- ForeignConfiguration .this .addDirectUpcall (economicMapToJavaMap (optionsMap ), className , methodName );
351
+ protected void registerDirectUpcallWithoutDescriptor (UnresolvedConfigurationCondition configurationCondition , String className , String methodName , EconomicMap <String , Object > optionsMap ) {
352
+ ForeignConfiguration .this .addDirectUpcall (configurationCondition , economicMapToJavaMap (optionsMap ), className , methodName );
353
353
}
354
354
355
355
@ Override
356
- protected void registerDirectUpcallWithDescriptor (String className , String methodName , ConfigurationFunctionDescriptor descriptor , Map <String , Object > options ) {
357
- ForeignConfiguration .this .addDirectUpcall (descriptor , options , className , methodName );
356
+ protected void registerDirectUpcallWithDescriptor (UnresolvedConfigurationCondition configurationCondition , String className , String methodName , ConfigurationFunctionDescriptor descriptor ,
357
+ Map <String , Object > options ) {
358
+ ForeignConfiguration .this .addDirectUpcall (configurationCondition , descriptor , options , className , methodName );
358
359
}
359
360
360
361
@ Override
0 commit comments