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

Unified Diff: dart/tests/compiler/dart2js/incremental/compile_all.dart

Issue 344203004: Improve incremental compilation. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 6 years, 6 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: dart/tests/compiler/dart2js/incremental/compile_all.dart
diff --git a/dart/tests/compiler/dart2js/incremental/compile_all.dart b/dart/tests/compiler/dart2js/incremental/compile_all.dart
new file mode 100644
index 0000000000000000000000000000000000000000..7811465151f59d1729991f17f63dfb43614be259
--- /dev/null
+++ b/dart/tests/compiler/dart2js/incremental/compile_all.dart
@@ -0,0 +1,184 @@
+// Copyright (c) 2014, 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.
+
+// Helper file that can be used to manually test the stability of incremental
+// compilation. Currently this test is not run automatically.
+
+import 'dart:async';
+
+import 'dart:io';
+
+import 'dart:profiler' show
+ UserTag;
+
+import '../memory_source_file_helper.dart' show
+ Compiler;
+
+import '../memory_compiler.dart' show
+ compilerFor;
+
+import '../../../../site/try/src/caching_compiler.dart' show
+ reuseCompiler;
+
+const bool verbose = false;
+
+main(List<String> arguments) {
+ Stopwatch sw = new Stopwatch()..start();
+ Map<String, String> sources = <String, String>{};
+ for (String argument in arguments) {
+ Uri uri = new Uri(scheme: 'memory', path: argument);
+ String source =
+ new File.fromUri(Uri.base.resolve(argument)).readAsStringSync();
+ sources['${uri.path}'] = source;
+ }
+ sw.stop();
+ print(sw.elapsedMilliseconds);
+ compileTests(sources);
+}
+
+void compileTests(Map<String, String> sources) {
+ int cancellations = 0;
+ int testCount = 0;
+ int skipCount = 0;
+ Set<String> crashes = new Set<String>();
+ Compiler memoryCompiler = compilerFor(sources);
+ memoryCompiler.handler.verbose = verbose;
+ Compiler compiler;
+ var options = [
+ '--disable-type-inference',
+ '--analyze-main',
+ '--no-source-maps',
+ ];
+ if (true || verbose) options.add('--verbose');
+ Future.forEach(sources.keys, (String path) {
+ UserTag.defaultTag.makeCurrent();
+ if (!path.endsWith('_test.dart')) return new Future.value(null);
+ testCount++;
+ for (String brokenTest in brokenTests) {
+ if (path.endsWith(brokenTest)) {
+ print('Skipped broken test $path');
+ skipCount++;
+ return new Future.value(null);
+ }
+ }
+ Stopwatch sw = new Stopwatch()..start();
+ compiler = reuseCompiler(
+ libraryRoot: memoryCompiler.libraryRoot,
+ inputProvider: memoryCompiler.provider,
+ outputProvider: memoryCompiler.outputProvider,
+ diagnosticHandler: memoryCompiler.handler,
+ packageRoot: memoryCompiler.packageRoot,
+ cachedCompiler: compiler,
+ options: options);
+ return compiler.run(Uri.parse('memory:$path')).then((bool success) {
+ UserTag.defaultTag.makeCurrent();
+ sw.stop();
+ print('Compiled $path in ${sw.elapsedMilliseconds}');
+ if (compiler.compilerWasCancelled) cancellations++;
+ sw..reset()..start();
+ }).catchError((error, trace) {
+ sw.stop();
+ print('$error\n$trace');
+ print('Crash when compiling $path after ${sw.elapsedMilliseconds}');
+ sw..reset()..start();
+ crashes.add(path);
+ });
+ }).then((_) {
+ percent(i) => '${(i/testCount*100).toStringAsFixed(3)}%';
+ print('''
+
+Total: $testCount tests
+ * $cancellations tests (${percent(cancellations)}) cancelled the compiler
+ * ${crashes.length} tests (${percent(crashes.length)}) crashed the compiler
+ * $skipCount tests (${percent(skipCount)}) were skipped
+''');
+ for (String crash in crashes) {
kasperl 2014/06/23 12:15:06 Clearly you meant: crashes.map((e) => 'Crashed:
ahe 2014/06/23 12:33:28 Did you mean: print(crashes.map((e) => 'Crashed
+ print('Crashed: $crash');
+ }
+ if (!crashes.isEmpty) {
+ throw 'Test had crashes';
+ }
+ });
+}
+
+Set<String> brokenTests = new Set<String>.from([
+ // TODO(ahe): Fix the outputProvider to not throw an error.
+ "/dart2js_extra/deferred/deferred_class_library.dart",
+ "/dart2js_extra/deferred/deferred_class_library2.dart",
+ "/dart2js_extra/deferred/deferred_class_test.dart",
+ "/dart2js_extra/deferred/deferred_constant2_test.dart",
+ "/dart2js_extra/deferred/deferred_constant3_test.dart",
+ "/dart2js_extra/deferred/deferred_constant4_test.dart",
+ "/dart2js_extra/deferred/deferred_constant_test.dart",
+ "/dart2js_extra/deferred/deferred_function_library.dart",
+ "/dart2js_extra/deferred/deferred_function_test.dart",
+ "/dart2js_extra/deferred/deferred_overlapping_lib1.dart",
+ "/dart2js_extra/deferred/deferred_overlapping_lib2.dart",
+ "/dart2js_extra/deferred/deferred_overlapping_lib3.dart",
+ "/dart2js_extra/deferred/deferred_overlapping_test.dart",
+ "/dart2js_extra/deferred/deferred_unused_classes_test.dart",
+ "/language/deferred_closurize_load_library_lib.dart",
+ "/language/deferred_closurize_load_library_test.dart",
+ "/language/deferred_constraints_constants_lib.dart",
+ "/language/deferred_constraints_constants_old_syntax_lib.dart",
+ "/language/deferred_constraints_constants_old_syntax_test.dart",
+ "/language/deferred_constraints_constants_test.dart",
+ "/language/deferred_constraints_lib.dart",
+ "/language/deferred_constraints_lib2.dart",
+ "/language/deferred_constraints_old_syntax_lib.dart",
+ "/language/deferred_constraints_type_annotation_old_syntax_test.dart",
+ "/language/deferred_constraints_type_annotation_test.dart",
+ "/language/deferred_duplicate_prefix1_test.dart",
+ "/language/deferred_duplicate_prefix2_test.dart",
+ "/language/deferred_duplicate_prefix3_test.dart",
+ "/language/deferred_load_inval_code_lib.dart",
+ "/language/deferred_load_inval_code_test.dart",
+ "/language/deferred_load_library_wrong_args_lib.dart",
+ "/language/deferred_load_library_wrong_args_test.dart",
+ "/language/deferred_no_prefix_test.dart",
+ "/language/deferred_no_such_method_lib.dart",
+ "/language/deferred_no_such_method_test.dart",
+ "/language/deferred_not_loaded_check_lib.dart",
+ "/language/deferred_not_loaded_check_test.dart",
+ "/language/deferred_prefix_constraints_lib.dart",
+ "/language/deferred_prefix_constraints_lib2.dart",
+ "/language/deferred_shadow_load_library_lib.dart",
+ "/language/deferred_shadow_load_library_test.dart",
+
+ "/language/bad_constructor_test.dart",
+ "/language/black_listed_test.dart",
+ "/language/built_in_identifier_illegal_test.dart",
+ "/language/built_in_identifier_prefix_test.dart",
+ "/language/built_in_identifier_test.dart",
+ "/language/class_cycle2_test.dart",
+ "/language/class_syntax_test.dart",
+ "/language/cyclic_typedef_test.dart",
+ "/language/external_test.dart",
+ "/language/factory3_negative_test.dart",
+ "/language/generic_field_mixin4_test.dart",
+ "/language/generic_field_mixin5_test.dart",
+ "/language/interface_cycle_test.dart",
+ "/language/interface_injection1_negative_test.dart",
+ "/language/interface_injection2_negative_test.dart",
+ "/language/internal_library_test.dart",
+ "/language/malformed_inheritance_test.dart",
+ "/language/metadata_test.dart",
+ "/language/method_override2_test.dart",
+ "/language/mixin_illegal_syntax_test.dart",
+ "/language/mixin_invalid_inheritance1_test.dart",
+ "/language/null_test.dart",
+ "/language/override_inheritance_generic_test.dart",
+ "/language/prefix18_negative_test.dart",
+ "/language/prefix3_negative_test.dart",
+ "/language/script2_negative_test.dart",
+ "/language/setter_declaration2_negative_test.dart",
+ "/language/source_self_negative_test.dart",
+ "/language/syntax_test.dart",
+ "/language/type_variable_bounds2_test.dart",
+ "/language/type_variable_conflict2_test.dart",
+ "/language/type_variable_field_initializer_test.dart",
+ "/language/type_variable_nested_test.dart",
+ "/language/vm/reflect_core_vm_test.dart",
+ "/language/vm/regress_14903_test.dart",
+]);

Powered by Google App Engine
This is Rietveld 408576698