| Index: utils/kernel-service/kernel-service.dart
|
| diff --git a/utils/kernel-service/kernel-service.dart b/utils/kernel-service/kernel-service.dart
|
| index 5115b9a484aedd0dc2b6e6083f1e0612bcb04cf1..2bc724205cf3272e8e5c8c821afe6ad76465c976 100644
|
| --- a/utils/kernel-service/kernel-service.dart
|
| +++ b/utils/kernel-service/kernel-service.dart
|
| @@ -45,23 +45,16 @@ abstract class Compiler {
|
|
|
| CompilerOptions options;
|
|
|
| - Compiler(this.fileSystem) {
|
| + Compiler(this.fileSystem, Uri platformKernel) {
|
| Uri packagesUri = (Platform.packageConfig != null)
|
| ? Uri.parse(Platform.packageConfig)
|
| : null;
|
|
|
| - Uri sdkSummary = Uri.base
|
| - .resolveUri(new Uri.file(Platform.resolvedExecutable))
|
| - .resolveUri(new Uri.directory("patched_sdk"))
|
| - // TODO(sigmund): use outline.dill when the mixin transformer is
|
| - // modular.
|
| - .resolve('platform.dill');
|
| -
|
| if (verbose) {
|
| print("DFE: Platform.packageConfig: ${Platform.packageConfig}");
|
| print("DFE: packagesUri: ${packagesUri}");
|
| print("DFE: Platform.resolvedExecutable: ${Platform.resolvedExecutable}");
|
| - print("DFE: sdkSummary: ${sdkSummary}");
|
| + print("DFE: platformKernel: ${platformKernel}");
|
| }
|
|
|
| options = new CompilerOptions()
|
| @@ -69,7 +62,7 @@ abstract class Compiler {
|
| ..fileSystem = fileSystem
|
| ..target = new VmFastaTarget(new TargetFlags(strongMode: strongMode))
|
| ..packagesFileUri = packagesUri
|
| - ..sdkSummary = sdkSummary
|
| + ..sdkSummary = platformKernel
|
| ..verbose = verbose
|
| ..throwOnErrors = false
|
| ..reportMessages = true
|
| @@ -88,7 +81,8 @@ abstract class Compiler {
|
| class IncrementalCompiler extends Compiler {
|
| IncrementalKernelGenerator generator;
|
|
|
| - IncrementalCompiler(FileSystem fileSystem) : super(fileSystem);
|
| + IncrementalCompiler(FileSystem fileSystem, Uri platformKernel)
|
| + : super(fileSystem, platformKernel);
|
|
|
| @override
|
| Future<Program> compile(Uri script) async {
|
| @@ -109,8 +103,9 @@ class IncrementalCompiler extends Compiler {
|
| class SingleShotCompiler extends Compiler {
|
| final bool requireMain;
|
|
|
| - SingleShotCompiler(FileSystem fileSystem, this.requireMain)
|
| - : super(fileSystem);
|
| + SingleShotCompiler(
|
| + FileSystem fileSystem, Uri platformKernel, this.requireMain)
|
| + : super(fileSystem, platformKernel);
|
|
|
| @override
|
| Future<Program> compile(Uri script) async {
|
| @@ -123,7 +118,7 @@ class SingleShotCompiler extends Compiler {
|
| final Map<int, Compiler> isolateCompilers = new Map<int, Compiler>();
|
|
|
| Future<Compiler> lookupOrBuildNewIncrementalCompiler(
|
| - int isolateId, List sourceFiles) async {
|
| + int isolateId, List sourceFiles, Uri platformKernel) async {
|
| IncrementalCompiler compiler;
|
| if (isolateCompilers.containsKey(isolateId)) {
|
| compiler = isolateCompilers[isolateId];
|
| @@ -146,7 +141,7 @@ Future<Compiler> lookupOrBuildNewIncrementalCompiler(
|
| // destroyed when corresponding isolate is shut down. To achieve that kernel
|
| // isolate needs to receive a message indicating that particular
|
| // isolate was shut down. Message should be handled here in this script.
|
| - compiler = new IncrementalCompiler(fileSystem);
|
| + compiler = new IncrementalCompiler(fileSystem, platformKernel);
|
| isolateCompilers[isolateId] = compiler;
|
| }
|
| return compiler;
|
| @@ -161,9 +156,18 @@ Future _processLoadRequest(request) async {
|
| final SendPort port = request[1];
|
| final String inputFileUri = request[2];
|
| final Uri script = Uri.base.resolve(inputFileUri);
|
| - final bool incremental = request[3];
|
| + final Uri platformKernel = request[3] != null
|
| + ? Uri.base.resolveUri(new Uri.file(request[3]))
|
| + : Uri.base
|
| + .resolveUri(new Uri.file(Platform.resolvedExecutable))
|
| + .resolveUri(new Uri.directory("patched_sdk"))
|
| + // TODO(sigmund): use outline.dill when the mixin transformer is
|
| + // modular.
|
| + .resolve('platform.dill');
|
| +
|
| + final bool incremental = request[4];
|
|
|
| - final List sourceFiles = request.length > 5 ? request[5] : null;
|
| + final List sourceFiles = request.length > 6 ? request[6] : null;
|
|
|
| Compiler compiler;
|
| // TODO(aam): There should be no need to have an option to choose
|
| @@ -171,15 +175,15 @@ Future _processLoadRequest(request) async {
|
| // compiler as its functionality is a super set of the other one. We need to
|
| // watch the performance though.
|
| if (incremental) {
|
| - final int isolateId = request[4];
|
| - compiler =
|
| - await lookupOrBuildNewIncrementalCompiler(isolateId, sourceFiles);
|
| + final int isolateId = request[5];
|
| + compiler = await lookupOrBuildNewIncrementalCompiler(
|
| + isolateId, sourceFiles, platformKernel);
|
| } else {
|
| final FileSystem fileSystem = sourceFiles == null
|
| ? PhysicalFileSystem.instance
|
| : _buildFileSystem(sourceFiles);
|
| compiler = new SingleShotCompiler(
|
| - fileSystem, sourceFiles == null /* requireMain */);
|
| + fileSystem, platformKernel, sourceFiles == null /* requireMain */);
|
| }
|
|
|
| CompilationResult result;
|
| @@ -262,8 +266,9 @@ train(String scriptUri) {
|
| tag,
|
| responsePort.sendPort,
|
| scriptUri,
|
| - 1 /* isolateId chosen randomly */,
|
| - false /* incremental */
|
| + null /* platformKernel */,
|
| + false /* incremental */,
|
| + 1 /* isolateId chosen randomly */
|
| ];
|
| _processLoadRequest(request);
|
| }
|
|
|