@@ -97,6 +97,7 @@ CompilerOptions setupCompilerOptions(
9797 String invocationModes,
9898 String verbosityLevel,
9999 bool enableMirrors,
100+ bool enableFfi,
100101) {
101102 final expFlags = < String > [];
102103 if (experimentalFlags != null ) {
@@ -106,7 +107,9 @@ CompilerOptions setupCompilerOptions(
106107 }
107108
108109 Verbosity verbosity = Verbosity .parseArgument (verbosityLevel);
109- Target target = new VmTarget (new TargetFlags (supportMirrors: enableMirrors));
110+ Target target = new VmTarget (
111+ new TargetFlags (supportMirrors: enableMirrors, supportFfi: enableFfi),
112+ );
110113 return new CompilerOptions ()
111114 ..fileSystem = fileSystem
112115 ..target = target
@@ -172,6 +175,7 @@ abstract class Compiler {
172175 final String invocationModes;
173176 final String verbosityLevel;
174177 final bool enableMirrors;
178+ final bool enableFfi;
175179 final bool generateBytecode;
176180
177181 final List <String > errorsPlain = < String > [];
@@ -189,6 +193,7 @@ abstract class Compiler {
189193 this .invocationModes = '' ,
190194 this .verbosityLevel = Verbosity .defaultValue,
191195 required this .enableMirrors,
196+ required this .enableFfi,
192197 required this .generateBytecode,
193198 }) {
194199 Uri ? packagesUri = null ;
@@ -215,6 +220,7 @@ abstract class Compiler {
215220 invocationModes,
216221 verbosityLevel,
217222 enableMirrors,
223+ enableFfi,
218224 );
219225 }
220226
@@ -309,6 +315,7 @@ class CompilerWrapper extends Compiler {
309315 String invocationModes = '' ,
310316 String verbosityLevel = Verbosity .defaultValue,
311317 required bool enableMirrors,
318+ required bool enableFfi,
312319 required super .generateBytecode,
313320 }) : super (
314321 isolateGroupId,
@@ -320,6 +327,7 @@ class CompilerWrapper extends Compiler {
320327 invocationModes: invocationModes,
321328 verbosityLevel: verbosityLevel,
322329 enableMirrors: enableMirrors,
330+ enableFfi: enableFfi,
323331 );
324332
325333 factory CompilerWrapper .forExpressionCompilationOnly (
@@ -332,6 +340,7 @@ class CompilerWrapper extends Compiler {
332340 String ? packageConfig,
333341 String invocationModes = '' ,
334342 required bool enableMirrors,
343+ required bool enableFfi,
335344 required bool generateBytecode,
336345 }) {
337346 CompilerWrapper result = CompilerWrapper (
@@ -343,6 +352,7 @@ class CompilerWrapper extends Compiler {
343352 packageConfig: packageConfig,
344353 invocationModes: invocationModes,
345354 enableMirrors: enableMirrors,
355+ enableFfi: enableFfi,
346356 generateBytecode: generateBytecode,
347357 );
348358 result.generator = new IncrementalCompiler .forExpressionCompilationOnly (
@@ -381,6 +391,7 @@ class CompilerWrapper extends Compiler {
381391 packageConfig: packageConfig,
382392 invocationModes: invocationModes,
383393 enableMirrors: enableMirrors,
394+ enableFfi: enableFfi,
384395 generateBytecode: generateBytecode,
385396 );
386397 final generator = this .generator! ;
@@ -431,6 +442,7 @@ Future<CompilerWrapper> lookupOrBuildNewIncrementalCompiler(
431442 String invocationModes = '' ,
432443 String verbosityLevel = Verbosity .defaultValue,
433444 required bool enableMirrors,
445+ required bool enableFfi,
434446 required bool generateBytecode,
435447}) async {
436448 CompilerWrapper ? compiler = lookupIncrementalCompiler (isolateGroupId);
@@ -470,6 +482,7 @@ Future<CompilerWrapper> lookupOrBuildNewIncrementalCompiler(
470482 invocationModes: invocationModes,
471483 verbosityLevel: verbosityLevel,
472484 enableMirrors: enableMirrors,
485+ enableFfi: enableFfi,
473486 generateBytecode: generateBytecode,
474487 );
475488 }
@@ -530,7 +543,8 @@ Future _processExpressionCompilationRequest(request) async {
530543 ? request[19 ].cast <String >()
531544 : null ;
532545 final bool enableMirrors = request[20 ];
533- final bool generateBytecode = request[21 ];
546+ final bool enableFfi = request[21 ];
547+ final bool generateBytecode = request[22 ];
534548
535549 CompilerWrapper ? compiler = isolateCompilers[isolateGroupId];
536550
@@ -629,6 +643,7 @@ Future _processExpressionCompilationRequest(request) async {
629643 experimentalFlags: experimentalFlags,
630644 packageConfig: packageConfigFile,
631645 enableMirrors: enableMirrors,
646+ enableFfi: enableFfi,
632647 generateBytecode: generateBytecode,
633648 );
634649 isolateCompilers[isolateGroupId] = compiler;
@@ -841,7 +856,8 @@ Future _processLoadRequest(request) async {
841856 final String ? multirootScheme = request[13 ];
842857 final String verbosityLevel = request[14 ];
843858 final bool enableMirrors = request[15 ];
844- final bool generateBytecode = request[16 ];
859+ final bool enableFfi = request[16 ];
860+ final bool generateBytecode = request[17 ];
845861 Uri platformKernelPath;
846862 List <int >? platformKernel = null ;
847863 if (request[3 ] is String ) {
@@ -922,6 +938,7 @@ Future _processLoadRequest(request) async {
922938 invocationModes: invocationModes,
923939 verbosityLevel: verbosityLevel,
924940 enableMirrors: enableMirrors,
941+ enableFfi: enableFfi,
925942 generateBytecode: generateBytecode,
926943 );
927944 FileSystem fileSystem = compiler.fileSystem;
@@ -1202,6 +1219,7 @@ Future trainInternal(String scriptUri, String? platformKernelPath) async {
12021219 null /* multirootScheme */ ,
12031220 'all' /* CFE logging mode */ ,
12041221 true /* enableMirrors */ ,
1222+ true /* enableFfi */ ,
12051223 false /* generateBytecode */ ,
12061224 ];
12071225 await _processLoadRequest (request);
0 commit comments