@@ -98,12 +98,19 @@ class CompileJSCommand extends CompileSubcommandCommand {
9898 }
9999 final args = argResults! ;
100100 var snapshot = sdk.dart2jsAotSnapshot;
101+ var script = sdk.dartAotRuntime;
102+ var useExecProcess = true ;
101103 if (! Sdk .checkArtifactExists (snapshot, logError: false )) {
102- log.stderr ('Error: JS compilation failed' );
103- log.stderr ('Unable to find $snapshot ' );
104- return compileErrorExitCode;
104+ // AOT snapshots cannot be generated on IA32, so we need this fallback
105+ // branch until support for IA32 is dropped (https://dartbug.com/49969).
106+ script = sdk.dart2jsSnapshot;
107+ if (! Sdk .checkArtifactExists (script)) {
108+ return genericErrorExitCode;
109+ }
110+ useExecProcess = false ;
105111 }
106112 final dart2jsCommand = [
113+ if (useExecProcess) snapshot,
107114 '--libraries-spec=${sdk .librariesJson }' ,
108115 '--cfe-invocation-modes=compile' ,
109116 '--invoker=dart_cli' ,
@@ -112,10 +119,10 @@ class CompileJSCommand extends CompileSubcommandCommand {
112119 ];
113120 try {
114121 VmInteropHandler .run (
115- snapshot ,
122+ script ,
116123 dart2jsCommand,
117124 packageConfigOverride: null ,
118- useExecProcess: false ,
125+ useExecProcess: useExecProcess ,
119126 );
120127 return 0 ;
121128 } catch (e, st) {
@@ -156,21 +163,28 @@ class CompileDDCCommand extends CompileSubcommandCommand {
156163 }
157164 final args = argResults! ;
158165 var snapshot = sdk.ddcAotSnapshot;
166+ var script = sdk.dartAotRuntime;
167+ var useExecProcess = true ;
159168 if (! Sdk .checkArtifactExists (snapshot, logError: false )) {
160- log.stderr ('Error: JS compilation failed' );
161- log.stderr ('Unable to find $snapshot ' );
162- return compileErrorExitCode;
169+ // AOT snapshots cannot be generated on IA32, so we need this fallback
170+ // branch until support for IA32 is dropped (https://dartbug.com/49969).
171+ script = sdk.ddcSnapshot;
172+ if (! Sdk .checkArtifactExists (script)) {
173+ return genericErrorExitCode;
174+ }
175+ useExecProcess = false ;
163176 }
164177 final ddcCommand = < String > [
178+ if (useExecProcess) snapshot,
165179 // Add the remaining arguments.
166180 if (args.rest.isNotEmpty) ...args.rest.sublist (0 ),
167181 ];
168182 try {
169183 VmInteropHandler .run (
170- snapshot ,
184+ script ,
171185 ddcCommand,
172186 packageConfigOverride: null ,
173- useExecProcess: false ,
187+ useExecProcess: useExecProcess ,
174188 );
175189 return 0 ;
176190 } catch (e, st) {
@@ -445,7 +459,7 @@ class CompileJitSnapshotCommand extends CompileSubcommandCommand {
445459
446460 log.stdout ('Compiling $sourcePath to jit-snapshot file $outputFile .' );
447461 // TODO(bkonyi): perform compilation in same process.
448- return await runProcess ([sdk.dartvm , ...buildArgs]);
462+ return await runProcess ([sdk.dart , ...buildArgs]);
449463 }
450464}
451465
0 commit comments