Index: runtime/tools/kernel-service.dart |
diff --git a/runtime/tools/kernel-service.dart b/runtime/tools/kernel-service.dart |
deleted file mode 100644 |
index 6ee3580b08b1d9b29fc3d63fa715aee16d998624..0000000000000000000000000000000000000000 |
--- a/runtime/tools/kernel-service.dart |
+++ /dev/null |
@@ -1,146 +0,0 @@ |
-// Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file |
-// for details. All rights reserved. Use of this source code is governed by a |
-// BSD-style license that can be found in the LICENSE file. |
- |
-// This is an interface to the Dart Kernel parser and Kernel binary generator. |
-// It is used by the kernel-isolate to load Dart source code and generate |
-// Kernel binary format. |
- |
-import 'dart:isolate'; |
-import 'dart:async'; |
-import "dart:io"; |
-import "dart:typed_data"; |
- |
-import 'package:kernel/binary/ast_to_binary.dart'; |
-import 'package:kernel/analyzer/loader.dart'; |
-import 'package:kernel/kernel.dart'; |
-import 'package:kernel/target/targets.dart'; |
- |
-bool verbose = false; |
- |
-final RawReceivePort scriptLoadPort = new RawReceivePort(); |
- |
- |
-bool checkIsFile(String path) { |
- var stat = new File(path).statSync(); |
- switch (stat.type) { |
- case FileSystemEntityType.DIRECTORY: |
- return false; |
- case FileSystemEntityType.NOT_FOUND: |
- return false; |
- } |
- return true; |
-} |
- |
- |
-void checkSdkDirectory(String path) { |
- var stat = new File(path).statSync(); |
- switch (stat.type) { |
- case FileSystemEntityType.DIRECTORY: |
- case FileSystemEntityType.LINK: |
- return true; |
- default: |
- return false; |
- } |
-} |
- |
- |
-class DataSink implements StreamSink<List<int>> { |
- var buffer = []; |
- add(List<int> data) { |
- buffer.addAll(data); |
- } |
- close() { |
- // Nothing to do. |
- } |
-} |
- |
- |
-List writeProgramToBuffer(Program program) { |
- var sink = new DataSink(); |
- try { |
- new BinaryPrinter(sink).writeProgramFile(program); |
- } finally { |
- sink.close(); |
- } |
- return new Uint8List.fromList(sink.buffer); |
-} |
- |
- |
-Future parseScript(Uri fileName, String packageConfig, String sdkPath) async { |
- |
- if (!checkIsFile(fileName.path)) { |
- throw "Input file '${fileName.path}' does not exist."; |
- } |
- |
- if (!checkSdkDirectory(sdkPath)) { |
- throw "Patched sdk directory not found at $sdkPath"; |
- } |
- |
- Target target = getTarget("vm", new TargetFlags(strongMode: false)); |
- DartOptions dartOptions = new DartOptions( |
- strongMode: false, |
- strongModeSdk: false, |
- sdk: sdkPath, |
- packagePath: packageConfig, |
- customUriMappings: {}, |
- declaredVariables: {}); |
- DartLoader loader = |
- await new DartLoaderBatch().getLoader(new Repository(), dartOptions); |
- var program = loader.loadProgram(fileName, target: target); |
- |
- var errors = loader.errors; |
- if (errors.isNotEmpty) { |
- throw loader.errors.first; |
- } |
- |
- // Link program into one file, cf. --link option in dartk |
- target.transformProgram(program); |
- |
- return writeProgramToBuffer(program); |
-} |
- |
- |
-_processLoadRequest(request) { |
- if (verbose) { |
- print("FROM DART KERNEL: load request: $request"); |
- print("FROM DART KERNEL: package: ${Platform.packageConfig}"); |
- print("FROM DART KERNEL: exec: ${Platform.resolvedExecutable}"); |
- } |
- int tag = request[0]; |
- SendPort sp = request[1]; |
- String inputFileUrl = request[2]; |
- Uri scriptUri = Uri.parse(inputFileUrl); |
- Uri packagesUri = Uri.parse(Platform.packageConfig ?? ".packages"); |
- Uri patched_sdk = Uri.parse(Platform.resolvedExecutable).resolve("patched_sdk"); |
- |
- var parsingDone = parseScript(scriptUri, packagesUri.path, patched_sdk.path); |
- |
- parsingDone |
- .then((data) { |
- var msg = new List(5); |
- msg[0] = tag; |
- msg[1] = inputFileUrl; |
- msg[2] = inputFileUrl; |
- msg[3] = null; |
- msg[4] = data; |
- sp.send(msg); |
- return; |
- }) |
- .catchError((e) { |
- var msg = new List(5); |
- msg[0] = -tag; |
- msg[1] = inputFileUrl; |
- msg[2] = inputFileUrl; |
- msg[3] = null; |
- msg[4] = e.toString(); |
- sp.send(msg); |
- }); |
-} |
- |
- |
-main() { |
- scriptLoadPort.handler = _processLoadRequest; |
- Timer.run(() {}); |
- return scriptLoadPort; |
-} |