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

Side by Side 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file.
4
5 // Helper file that can be used to manually test the stability of incremental
6 // compilation. Currently this test is not run automatically.
7
8 import 'dart:async';
9
10 import 'dart:io';
11
12 import 'dart:profiler' show
13 UserTag;
14
15 import '../memory_source_file_helper.dart' show
16 Compiler;
17
18 import '../memory_compiler.dart' show
19 compilerFor;
20
21 import '../../../../site/try/src/caching_compiler.dart' show
22 reuseCompiler;
23
24 const bool verbose = false;
25
26 main(List<String> arguments) {
27 Stopwatch sw = new Stopwatch()..start();
28 Map<String, String> sources = <String, String>{};
29 for (String argument in arguments) {
30 Uri uri = new Uri(scheme: 'memory', path: argument);
31 String source =
32 new File.fromUri(Uri.base.resolve(argument)).readAsStringSync();
33 sources['${uri.path}'] = source;
34 }
35 sw.stop();
36 print(sw.elapsedMilliseconds);
37 compileTests(sources);
38 }
39
40 void compileTests(Map<String, String> sources) {
41 int cancellations = 0;
42 int testCount = 0;
43 int skipCount = 0;
44 Set<String> crashes = new Set<String>();
45 Compiler memoryCompiler = compilerFor(sources);
46 memoryCompiler.handler.verbose = verbose;
47 Compiler compiler;
48 var options = [
49 '--disable-type-inference',
50 '--analyze-main',
51 '--no-source-maps',
52 ];
53 if (true || verbose) options.add('--verbose');
54 Future.forEach(sources.keys, (String path) {
55 UserTag.defaultTag.makeCurrent();
56 if (!path.endsWith('_test.dart')) return new Future.value(null);
57 testCount++;
58 for (String brokenTest in brokenTests) {
59 if (path.endsWith(brokenTest)) {
60 print('Skipped broken test $path');
61 skipCount++;
62 return new Future.value(null);
63 }
64 }
65 Stopwatch sw = new Stopwatch()..start();
66 compiler = reuseCompiler(
67 libraryRoot: memoryCompiler.libraryRoot,
68 inputProvider: memoryCompiler.provider,
69 outputProvider: memoryCompiler.outputProvider,
70 diagnosticHandler: memoryCompiler.handler,
71 packageRoot: memoryCompiler.packageRoot,
72 cachedCompiler: compiler,
73 options: options);
74 return compiler.run(Uri.parse('memory:$path')).then((bool success) {
75 UserTag.defaultTag.makeCurrent();
76 sw.stop();
77 print('Compiled $path in ${sw.elapsedMilliseconds}');
78 if (compiler.compilerWasCancelled) cancellations++;
79 sw..reset()..start();
80 }).catchError((error, trace) {
81 sw.stop();
82 print('$error\n$trace');
83 print('Crash when compiling $path after ${sw.elapsedMilliseconds}');
84 sw..reset()..start();
85 crashes.add(path);
86 });
87 }).then((_) {
88 percent(i) => '${(i/testCount*100).toStringAsFixed(3)}%';
89 print('''
90
91 Total: $testCount tests
92 * $cancellations tests (${percent(cancellations)}) cancelled the compiler
93 * ${crashes.length} tests (${percent(crashes.length)}) crashed the compiler
94 * $skipCount tests (${percent(skipCount)}) were skipped
95 ''');
96 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
97 print('Crashed: $crash');
98 }
99 if (!crashes.isEmpty) {
100 throw 'Test had crashes';
101 }
102 });
103 }
104
105 Set<String> brokenTests = new Set<String>.from([
106 // TODO(ahe): Fix the outputProvider to not throw an error.
107 "/dart2js_extra/deferred/deferred_class_library.dart",
108 "/dart2js_extra/deferred/deferred_class_library2.dart",
109 "/dart2js_extra/deferred/deferred_class_test.dart",
110 "/dart2js_extra/deferred/deferred_constant2_test.dart",
111 "/dart2js_extra/deferred/deferred_constant3_test.dart",
112 "/dart2js_extra/deferred/deferred_constant4_test.dart",
113 "/dart2js_extra/deferred/deferred_constant_test.dart",
114 "/dart2js_extra/deferred/deferred_function_library.dart",
115 "/dart2js_extra/deferred/deferred_function_test.dart",
116 "/dart2js_extra/deferred/deferred_overlapping_lib1.dart",
117 "/dart2js_extra/deferred/deferred_overlapping_lib2.dart",
118 "/dart2js_extra/deferred/deferred_overlapping_lib3.dart",
119 "/dart2js_extra/deferred/deferred_overlapping_test.dart",
120 "/dart2js_extra/deferred/deferred_unused_classes_test.dart",
121 "/language/deferred_closurize_load_library_lib.dart",
122 "/language/deferred_closurize_load_library_test.dart",
123 "/language/deferred_constraints_constants_lib.dart",
124 "/language/deferred_constraints_constants_old_syntax_lib.dart",
125 "/language/deferred_constraints_constants_old_syntax_test.dart",
126 "/language/deferred_constraints_constants_test.dart",
127 "/language/deferred_constraints_lib.dart",
128 "/language/deferred_constraints_lib2.dart",
129 "/language/deferred_constraints_old_syntax_lib.dart",
130 "/language/deferred_constraints_type_annotation_old_syntax_test.dart",
131 "/language/deferred_constraints_type_annotation_test.dart",
132 "/language/deferred_duplicate_prefix1_test.dart",
133 "/language/deferred_duplicate_prefix2_test.dart",
134 "/language/deferred_duplicate_prefix3_test.dart",
135 "/language/deferred_load_inval_code_lib.dart",
136 "/language/deferred_load_inval_code_test.dart",
137 "/language/deferred_load_library_wrong_args_lib.dart",
138 "/language/deferred_load_library_wrong_args_test.dart",
139 "/language/deferred_no_prefix_test.dart",
140 "/language/deferred_no_such_method_lib.dart",
141 "/language/deferred_no_such_method_test.dart",
142 "/language/deferred_not_loaded_check_lib.dart",
143 "/language/deferred_not_loaded_check_test.dart",
144 "/language/deferred_prefix_constraints_lib.dart",
145 "/language/deferred_prefix_constraints_lib2.dart",
146 "/language/deferred_shadow_load_library_lib.dart",
147 "/language/deferred_shadow_load_library_test.dart",
148
149 "/language/bad_constructor_test.dart",
150 "/language/black_listed_test.dart",
151 "/language/built_in_identifier_illegal_test.dart",
152 "/language/built_in_identifier_prefix_test.dart",
153 "/language/built_in_identifier_test.dart",
154 "/language/class_cycle2_test.dart",
155 "/language/class_syntax_test.dart",
156 "/language/cyclic_typedef_test.dart",
157 "/language/external_test.dart",
158 "/language/factory3_negative_test.dart",
159 "/language/generic_field_mixin4_test.dart",
160 "/language/generic_field_mixin5_test.dart",
161 "/language/interface_cycle_test.dart",
162 "/language/interface_injection1_negative_test.dart",
163 "/language/interface_injection2_negative_test.dart",
164 "/language/internal_library_test.dart",
165 "/language/malformed_inheritance_test.dart",
166 "/language/metadata_test.dart",
167 "/language/method_override2_test.dart",
168 "/language/mixin_illegal_syntax_test.dart",
169 "/language/mixin_invalid_inheritance1_test.dart",
170 "/language/null_test.dart",
171 "/language/override_inheritance_generic_test.dart",
172 "/language/prefix18_negative_test.dart",
173 "/language/prefix3_negative_test.dart",
174 "/language/script2_negative_test.dart",
175 "/language/setter_declaration2_negative_test.dart",
176 "/language/source_self_negative_test.dart",
177 "/language/syntax_test.dart",
178 "/language/type_variable_bounds2_test.dart",
179 "/language/type_variable_conflict2_test.dart",
180 "/language/type_variable_field_initializer_test.dart",
181 "/language/type_variable_nested_test.dart",
182 "/language/vm/reflect_core_vm_test.dart",
183 "/language/vm/regress_14903_test.dart",
184 ]);
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698