3737
3838import org .graalvm .collections .EconomicMap ;
3939import org .graalvm .collections .MapCursor ;
40- import org .graalvm .nativeimage .impl .ConfigurationCondition ;
4140
4241import com .oracle .svm .configure .ConfigurationBase ;
4342import com .oracle .svm .configure .ConfigurationParser ;
@@ -57,7 +56,7 @@ public void printJson(JsonWriter writer) throws IOException {
5756 }
5857 }
5958
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 {
6160 @ Override
6261 public void printJson (JsonWriter writer ) throws IOException {
6362 writer .appendObjectStart ();
@@ -69,7 +68,8 @@ public void printJson(JsonWriter writer) throws IOException {
6968 }
7069 }
7170
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 {
7373 @ Override
7474 public void printJson (JsonWriter writer ) throws IOException {
7575 writer .appendObjectStart ()
@@ -88,7 +88,7 @@ public DirectStubDesc withoutFD() {
8888 if (desc == null ) {
8989 return this ;
9090 }
91- return new DirectStubDesc (clazz , method , null , linkerOptions );
91+ return new DirectStubDesc (condition , clazz , method , null , linkerOptions );
9292 }
9393 }
9494
@@ -216,48 +216,48 @@ public void mergeConditional(UnresolvedConfigurationCondition condition, Foreign
216216 public void addDowncall (String returnType , List <String > parameterTypes , Map <String , Object > linkerOptions ) {
217217 Objects .requireNonNull (returnType );
218218 Objects .requireNonNull (parameterTypes );
219- addDowncall (new ConfigurationFunctionDescriptor (returnType , parameterTypes ), Map .copyOf (linkerOptions ));
219+ addDowncall (UnresolvedConfigurationCondition . alwaysTrue (), new ConfigurationFunctionDescriptor (returnType , parameterTypes ), Map .copyOf (linkerOptions ));
220220 }
221221
222222 public void addUpcall (String returnType , List <String > parameterTypes , Map <String , Object > linkerOptions ) {
223223 Objects .requireNonNull (returnType );
224224 Objects .requireNonNull (parameterTypes );
225- addUpcall (new ConfigurationFunctionDescriptor (returnType , parameterTypes ), Map .copyOf (linkerOptions ));
225+ addUpcall (UnresolvedConfigurationCondition . alwaysTrue (), new ConfigurationFunctionDescriptor (returnType , parameterTypes ), Map .copyOf (linkerOptions ));
226226 }
227227
228228 public void addDirectUpcall (String returnType , List <String > parameterTypes , Map <String , Object > linkerOptions , String clazz , String method ) {
229229 Objects .requireNonNull (returnType );
230230 Objects .requireNonNull (parameterTypes );
231231 Objects .requireNonNull (clazz );
232232 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 );
234234 }
235235
236- public void addDowncall (ConfigurationFunctionDescriptor desc , Map <String , Object > linkerOptions ) {
236+ public void addDowncall (UnresolvedConfigurationCondition configurationCondition , ConfigurationFunctionDescriptor desc , Map <String , Object > linkerOptions ) {
237237 Objects .requireNonNull (desc );
238- downcallStubs .add (new StubDesc (desc , Map .copyOf (linkerOptions )));
238+ downcallStubs .add (new StubDesc (configurationCondition , desc , Map .copyOf (linkerOptions )));
239239 }
240240
241- public void addUpcall (ConfigurationFunctionDescriptor desc , Map <String , Object > linkerOptions ) {
241+ public void addUpcall (UnresolvedConfigurationCondition configurationCondition , ConfigurationFunctionDescriptor desc , Map <String , Object > linkerOptions ) {
242242 Objects .requireNonNull (desc );
243- upcallStubs .add (new StubDesc (desc , Map .copyOf (linkerOptions )));
243+ upcallStubs .add (new StubDesc (configurationCondition , desc , Map .copyOf (linkerOptions )));
244244 }
245245
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 ) {
247247 Objects .requireNonNull (desc );
248248 Objects .requireNonNull (clazz );
249249 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 ));
251251 // only add the new descriptor if it is not subsumed by an existing one
252252 if (!directUpcallStubs .contains (candidate .withoutFD ())) {
253253 directUpcallStubs .add (candidate );
254254 }
255255 }
256256
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 ) {
258258 Objects .requireNonNull (clazz );
259259 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 ));
261261 // remove all existing descriptors if they are subsumed by the new descriptor
262262 directUpcallStubs .removeIf (existing -> directStubDesc .equals (existing .withoutFD ()));
263263 directUpcallStubs .add (directStubDesc );
@@ -337,24 +337,25 @@ private UnresolvedForeignConfigurationParser(EnumSet<ConfigurationParserOption>
337337 }
338338
339339 @ 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 );
342342
343343 }
344344
345345 @ 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 );
348348 }
349349
350350 @ 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 );
353353 }
354354
355355 @ 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 );
358359 }
359360
360361 @ Override
0 commit comments