Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(133)

Unified Diff: tests/compiler/dart2js/sourcemaps/source_mapping_test.dart

Issue 1229673006: Generated source mapping through CPS. (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Updated cf. comments. Created 5 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: tests/compiler/dart2js/sourcemaps/source_mapping_test.dart
diff --git a/tests/compiler/dart2js/sourcemaps/source_mapping_test.dart b/tests/compiler/dart2js/sourcemaps/source_mapping_test.dart
index 831299fe23e3c0ca5abf801bb2791c73dd9c42b4..551bf4068fe35507ce8c2832261742e3302a2f56 100644
--- a/tests/compiler/dart2js/sourcemaps/source_mapping_test.dart
+++ b/tests/compiler/dart2js/sourcemaps/source_mapping_test.dart
@@ -2,6 +2,7 @@
// 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.
+import 'dart:async';
import 'package:async_helper/async_helper.dart';
import 'package:expect/expect.dart';
import 'sourcemap_helper.dart';
@@ -10,42 +11,134 @@ import 'package:compiler/src/filenames.dart';
main(List<String> arguments) {
bool showAll = false;
+ bool measure = false;
Uri outputUri;
- if (arguments.isNotEmpty) {
- outputUri = Uri.base.resolve(nativeToUriPath(arguments.last));
- showAll = arguments.contains('-a');
+ Set<String> configurations = new Set<String>();
+ for (String argument in arguments) {
+ if (argument.startsWith('-')) {
+ if (argument == '-a') {
+ /// Generate visualization for all user methods.
+ showAll = true;
+ } else if (argument == '-m') {
+ /// Measure instead of reporting the number of missing code points.
+ measure = true;
+ } else if (argument.startsWith('--out=')) {
+ /// Generate visualization for the first configuration.
+ outputUri = Uri.base.resolve(
+ nativeToUriPath(argument.substring('--out='.length)));
+ } else if (argument.startsWith('-o')) {
+ /// Generate visualization for the first configuration.
+ outputUri = Uri.base.resolve(
+ nativeToUriPath(argument.substring('-o'.length)));
+ } else {
+ print("Unknown option '$argument'.");
+ return;
+ }
+ } else {
+ if (TEST_CONFIGURATIONS.containsKey(argument)) {
+ configurations.add(argument);
+ } else {
+ print("Unknown configuration '$argument'. "
+ "Must be one of '${TEST_CONFIGURATIONS.keys.join("', '")}'");
+ return;
+ }
+ }
+ }
+
+ if (configurations.isEmpty) {
+ configurations.addAll(TEST_CONFIGURATIONS.keys);
}
+ String outputConfig = configurations.first;
+
asyncTest(() async {
- String filename =
- 'tests/compiler/dart2js/sourcemaps/invokes_test_file.dart';
- SourceMapProcessor processor = new SourceMapProcessor(filename);
- List<SourceMapInfo> infoList = await processor.process(
- ['--use-new-source-info', '--csp', '--disable-inlining']);
- List<SourceMapInfo> userInfoList = <SourceMapInfo>[];
- List<SourceMapInfo> failureList = <SourceMapInfo>[];
- for (SourceMapInfo info in infoList) {
- if (info.element.library.isPlatformLibrary) continue;
- userInfoList.add(info);
- Iterable<CodePoint> missingCodePoints =
- info.codePoints.where((c) => c.isMissing);
+ List<Measurement> measurements = <Measurement>[];
+ for (String config in configurations) {
+ List<String> options = TEST_CONFIGURATIONS[config];
+ Measurement measurement = await runTests(
+ config,
+ options,
+ showAll: showAll,
+ measure: measure,
+ outputUri: outputConfig == config ? outputUri : null);
+ if (measurement != null) {
+ measurements.add(measurement);
+ }
+ }
+ for (Measurement measurement in measurements) {
+ print(measurement);
+ }
+ });
+}
+
+const Map<String, List<String>> TEST_CONFIGURATIONS = const {
+ 'old': const [],
+ 'ssa': const ['--use-new-source-info', ],
+ 'cps': const ['--use-new-source-info', '--use-cps-ir'],
+};
+
+Future<Measurement> runTests(
+ String config,
+ List<String> options,
+ {bool showAll: false,
+ Uri outputUri,
+ bool measure: false}) async {
+ if (config == 'old' && !measure) return null;
+
+ String filename =
+ 'tests/compiler/dart2js/sourcemaps/invokes_test_file.dart';
+ SourceMapProcessor processor = new SourceMapProcessor(filename);
+ List<SourceMapInfo> infoList = await processor.process(
+ ['--csp', '--disable-inlining']
+ ..addAll(options),
+ verbose: !measure);
+ List<SourceMapInfo> userInfoList = <SourceMapInfo>[];
+ List<SourceMapInfo> failureList = <SourceMapInfo>[];
+ Measurement measurement = new Measurement(config);
+ for (SourceMapInfo info in infoList) {
+ if (info.element.library.isPlatformLibrary) continue;
+ userInfoList.add(info);
+ Iterable<CodePoint> missingCodePoints =
+ info.codePoints.where((c) => c.isMissing);
+ measurement.missing += missingCodePoints.length;
+ measurement.count += info.codePoints.length;
+ if (!measure) {
if (!missingCodePoints.isEmpty) {
- print('Missing code points ${missingCodePoints} for '
- '${info.element} in $filename');
+ print("Missing code points for ${info.element} in '$filename':");
+ for (CodePoint codePoint in missingCodePoints) {
+ print(" $codePoint");
+ }
failureList.add(info);
}
}
- if (failureList.isNotEmpty) {
- if (outputUri == null) {
+ }
+ if (failureList.isNotEmpty) {
+ if (outputUri == null) {
+ if (!measure) {
Expect.fail(
"Missing code points found. "
- "Run the test with a URI option, `source_mapping_test <uri>`, to "
+ "Run the test with a URI option, "
+ "`source_mapping_test --out=<uri> $config`, to "
"create a html visualization of the missing code points.");
- } else {
- createTraceSourceMapHtml(outputUri, processor,
- showAll ? userInfoList : failureList);
}
- } else if (outputUri != null) {
- createTraceSourceMapHtml(outputUri, processor, userInfoList);
+ } else {
+ createTraceSourceMapHtml(outputUri, processor,
+ showAll ? userInfoList : failureList);
}
- });
+ } else if (outputUri != null) {
+ createTraceSourceMapHtml(outputUri, processor, userInfoList);
+ }
+ return measurement;
+}
+
+class Measurement {
+ final String config;
+ int missing = 0;
+ int count = 0;
+
+ Measurement(this.config);
+
+ String toString() {
+ double percentage = 100 * missing / count;
+ return "Config '${config}': $missing of $count ($percentage%) missing";
+ }
}
« no previous file with comments | « tests/compiler/dart2js/sourcemaps/invokes_test_file.dart ('k') | tests/compiler/dart2js/sourcemaps/sourcemap_helper.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698