Index: pkg/front_end/tool/fasta_perf.dart |
diff --git a/pkg/front_end/tool/fasta_perf.dart b/pkg/front_end/tool/fasta_perf.dart |
index 4b666f317d091f22fd28d97afa5df6e2b5ee28cd..d105768f015edaf4686bd8051ba077bbb6be41d6 100644 |
--- a/pkg/front_end/tool/fasta_perf.dart |
+++ b/pkg/front_end/tool/fasta_perf.dart |
@@ -9,21 +9,15 @@ import 'dart:async'; |
import 'dart:io'; |
import 'package:analyzer/src/fasta/ast_builder.dart'; |
+import 'package:front_end/front_end.dart'; |
import 'package:front_end/physical_file_system.dart'; |
-import 'package:front_end/src/fasta/dill/dill_target.dart' show DillTarget; |
-import 'package:front_end/src/fasta/kernel/kernel_target.dart' |
- show KernelTarget; |
import 'package:front_end/src/fasta/parser.dart'; |
import 'package:front_end/src/fasta/scanner.dart'; |
import 'package:front_end/src/fasta/scanner/io.dart' show readBytesFromFileSync; |
import 'package:front_end/src/fasta/source/directive_listener.dart'; |
-import 'package:front_end/src/fasta/ticker.dart' show Ticker; |
import 'package:front_end/src/fasta/translate_uri.dart' show TranslateUri; |
-import 'package:front_end/src/fasta/translate_uri.dart'; |
-import 'package:front_end/src/fasta/parser/dart_vm_native.dart' |
+import 'package:front_end/src/fasta/parser/native_support.dart' |
show skipNativeClause; |
-import 'package:kernel/target/targets.dart' show TargetFlags; |
-import 'package:kernel/target/vm_fasta.dart' show VmFastaTarget; |
/// Cumulative total number of chars scanned. |
int inputSize = 0; |
@@ -50,11 +44,9 @@ main(List<String> args) async { |
'kernel_gen_e2e': () async { |
await generateKernel(entryUri); |
}, |
- // TODO(sigmund): enable once we add a build step to create the |
- // platform.dill files. |
- // 'kernel_gen_e2e_sum': () async { |
- // await generateKernel(entryUri, compileSdk: false); |
- // }, |
+ 'kernel_gen_e2e_sum': () async { |
+ await generateKernel(entryUri, compileSdk: false); |
+ }, |
}; |
var handler = handlers[bench]; |
@@ -76,16 +68,17 @@ main(List<String> args) async { |
} |
} |
+// TODO(sigmund): use `perf.dart::_findSdkPath` here when fasta can patch the |
+// sdk directly. |
+Uri sdkRoot = |
+ Uri.base.resolve(Platform.resolvedExecutable).resolve('patched_sdk/'); |
+ |
/// Translates `dart:*` and `package:*` URIs to resolved URIs. |
TranslateUri uriResolver; |
/// Preliminary set up to be able to correctly resolve URIs on the given |
/// program. |
Future setup(Uri entryUri) async { |
- // TODO(sigmund): use `perf.dart::_findSdkPath` here when fasta can patch the |
- // sdk directly. |
- var sdkRoot = |
- Uri.base.resolve(Platform.resolvedExecutable).resolve('patched_sdk/'); |
uriResolver = await TranslateUri.parse(PhysicalFileSystem.instance, sdkRoot); |
} |
@@ -172,7 +165,7 @@ Set<String> extractDirectiveUris(List<int> contents) { |
class DirectiveListenerWithNative extends DirectiveListener { |
@override |
- Token handleNativeClause(Token token) => skipNativeClause(token); |
+ Token handleNativeClause(Token token) => skipNativeClause(token, true); |
} |
/// Parses every file in [files] and reports the time spent doing so. |
@@ -207,7 +200,6 @@ class _PartialAstBuilder extends AstBuilder { |
} |
// Invoke the fasta kernel generator for the program starting in [entryUri] |
-// TODO(sigmund): update to use the frontend api once fasta is being hit. |
generateKernel(Uri entryUri, |
{bool compileSdk: true, bool strongMode: false}) async { |
// TODO(sigmund): this is here only to compute the input size, |
@@ -215,11 +207,15 @@ generateKernel(Uri entryUri, |
scanReachableFiles(entryUri); |
var timer = new Stopwatch()..start(); |
- final Ticker ticker = new Ticker(); |
- final DillTarget dillTarget = new DillTarget(ticker, uriResolver, |
- new VmFastaTarget(new TargetFlags(strongMode: strongMode))); |
- final KernelTarget kernelTarget = |
- new KernelTarget(PhysicalFileSystem.instance, dillTarget, uriResolver); |
+ var options = new CompilerOptions() |
+ ..sdkRoot = sdkRoot |
+ ..chaseDependencies = true |
+ ..packagesFileUri = Uri.base.resolve('.packages') |
+ ..compileSdk = compileSdk; |
+ if (!compileSdk) { |
+ options.sdkSummary = sdkRoot.resolve('outline.dill'); |
+ } |
+ |
var entrypoints = [ |
entryUri, |
// These extra libraries are added to match the same set of libraries |
@@ -236,20 +232,11 @@ generateKernel(Uri entryUri, |
Uri.parse('dart:mirrors'), |
Uri.parse('dart:typed_data'), |
]; |
- entrypoints.forEach(kernelTarget.read); |
+ var program = await kernelForBuildUnit(entrypoints, options); |
- if (!compileSdk) { |
- dillTarget.read( |
- Uri.base.resolve(Platform.resolvedExecutable).resolve('platform.dill')); |
- } |
- await dillTarget.buildOutlines(); |
- await kernelTarget.buildOutlines(); |
- var program = await kernelTarget.buildProgram(); |
- if (kernelTarget.errors.isNotEmpty) { |
- throw kernelTarget.errors.first; |
- } |
timer.stop(); |
- report('kernel_gen_e2e', timer.elapsedMicroseconds); |
+ var name = 'kernel_gen_e2e${compileSdk ? "" : "_sum"}'; |
+ report(name, timer.elapsedMicroseconds); |
return program; |
} |