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

Side by Side Diff: tests/compiler/dart2js/serialization/model_test_helper.dart

Issue 2314703002: Split World usage into open, inference, and closed world. (Closed)
Patch Set: Updated cf. comments. Created 4 years, 3 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
OLDNEW
1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 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. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 library dart2js.serialization_model_test; 5 library dart2js.serialization_model_test;
6 6
7 import 'dart:async'; 7 import 'dart:async';
8 import 'dart:io'; 8 import 'dart:io';
9 import 'package:async_helper/async_helper.dart'; 9 import 'package:async_helper/async_helper.dart';
10 import 'package:expect/expect.dart'; 10 import 'package:expect/expect.dart';
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
70 String id = index != null ? '$index: ' : ''; 70 String id = index != null ? '$index: ' : '';
71 String title = '${id}${testDescription}'; 71 String title = '${id}${testDescription}';
72 Compiler compilerNormal = await measure( 72 Compiler compilerNormal = await measure(
73 title, 'compile normal', () async { 73 title, 'compile normal', () async {
74 Compiler compilerNormal = compilerFor( 74 Compiler compilerNormal = compilerFor(
75 memorySourceFiles: sourceFiles, 75 memorySourceFiles: sourceFiles,
76 options: [Flags.analyzeOnly]); 76 options: [Flags.analyzeOnly]);
77 compilerNormal.resolution.retainCachesForTesting = true; 77 compilerNormal.resolution.retainCachesForTesting = true;
78 await compilerNormal.run(entryPoint); 78 await compilerNormal.run(entryPoint);
79 compilerNormal.phase = Compiler.PHASE_DONE_RESOLVING; 79 compilerNormal.phase = Compiler.PHASE_DONE_RESOLVING;
80 compilerNormal.world.populate(); 80 compilerNormal.openWorld.populate();
81 compilerNormal.backend.onResolutionComplete(); 81 compilerNormal.backend.onResolutionComplete();
82 compilerNormal.deferredLoadTask.onResolutionComplete( 82 compilerNormal.deferredLoadTask.onResolutionComplete(
83 compilerNormal.mainFunction); 83 compilerNormal.mainFunction);
84 return compilerNormal; 84 return compilerNormal;
85 }); 85 });
86 86
87 Compiler compilerDeserialized = await measure( 87 Compiler compilerDeserialized = await measure(
88 title, 'compile deserialized', () async { 88 title, 'compile deserialized', () async {
89 Compiler compilerDeserialized = compilerFor( 89 Compiler compilerDeserialized = compilerFor(
90 memorySourceFiles: sourceFiles, 90 memorySourceFiles: sourceFiles,
91 resolutionInputs: resolutionInputs, 91 resolutionInputs: resolutionInputs,
92 options: [Flags.analyzeOnly]); 92 options: [Flags.analyzeOnly]);
93 compilerDeserialized.resolution.retainCachesForTesting = true; 93 compilerDeserialized.resolution.retainCachesForTesting = true;
94 await compilerDeserialized.run(entryPoint); 94 await compilerDeserialized.run(entryPoint);
95 compilerDeserialized.phase = Compiler.PHASE_DONE_RESOLVING; 95 compilerDeserialized.phase = Compiler.PHASE_DONE_RESOLVING;
96 compilerDeserialized.world.populate(); 96 compilerDeserialized.openWorld.populate();
97 compilerDeserialized.backend.onResolutionComplete(); 97 compilerDeserialized.backend.onResolutionComplete();
98 compilerDeserialized.deferredLoadTask.onResolutionComplete( 98 compilerDeserialized.deferredLoadTask.onResolutionComplete(
99 compilerDeserialized.mainFunction); 99 compilerDeserialized.mainFunction);
100 return compilerDeserialized; 100 return compilerDeserialized;
101 }); 101 });
102 102
103 return measure(title, 'check models', () async { 103 return measure(title, 'check models', () async {
104 checkAllImpacts( 104 checkAllImpacts(
105 compilerNormal, compilerDeserialized, 105 compilerNormal, compilerDeserialized,
106 verbose: verbose); 106 verbose: verbose);
(...skipping 26 matching lines...) Expand all
133 areElementsEquivalent, 133 areElementsEquivalent,
134 onSameElement: (a, b) { 134 onSameElement: (a, b) {
135 checkElements( 135 checkElements(
136 compilerNormal, compilerDeserialized, a, b, verbose: verbose); 136 compilerNormal, compilerDeserialized, a, b, verbose: verbose);
137 }, 137 },
138 verbose: verbose); 138 verbose: verbose);
139 139
140 checkClassHierarchyNodes( 140 checkClassHierarchyNodes(
141 compilerNormal, 141 compilerNormal,
142 compilerDeserialized, 142 compilerDeserialized,
143 compilerNormal.world.getClassHierarchyNode( 143 compilerNormal.closedWorld.getClassHierarchyNode(
144 compilerNormal.coreClasses.objectClass), 144 compilerNormal.coreClasses.objectClass),
145 compilerDeserialized.world.getClassHierarchyNode( 145 compilerDeserialized.closedWorld.getClassHierarchyNode(
146 compilerDeserialized.coreClasses.objectClass), 146 compilerDeserialized.coreClasses.objectClass),
147 verbose: verbose); 147 verbose: verbose);
148 148
149 Expect.equals(compilerNormal.enabledInvokeOn, 149 Expect.equals(compilerNormal.enabledInvokeOn,
150 compilerDeserialized.enabledInvokeOn, 150 compilerDeserialized.enabledInvokeOn,
151 "Compiler.enabledInvokeOn mismatch"); 151 "Compiler.enabledInvokeOn mismatch");
152 Expect.equals(compilerNormal.enabledFunctionApply, 152 Expect.equals(compilerNormal.enabledFunctionApply,
153 compilerDeserialized.enabledFunctionApply, 153 compilerDeserialized.enabledFunctionApply,
154 "Compiler.enabledFunctionApply mismatch"); 154 "Compiler.enabledFunctionApply mismatch");
155 Expect.equals(compilerNormal.enabledRuntimeType, 155 Expect.equals(compilerNormal.enabledRuntimeType,
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after
279 279
280 checkElementOutputUnits(compiler1, compiler2, element1, element2); 280 checkElementOutputUnits(compiler1, compiler2, element1, element2);
281 } 281 }
282 282
283 void checkMixinUses( 283 void checkMixinUses(
284 Compiler compiler1, Compiler compiler2, 284 Compiler compiler1, Compiler compiler2,
285 ClassElement class1, ClassElement class2, 285 ClassElement class1, ClassElement class2,
286 {bool verbose: false}) { 286 {bool verbose: false}) {
287 287
288 checkSets( 288 checkSets(
289 compiler1.world.mixinUsesOf(class1), 289 compiler1.closedWorld.mixinUsesOf(class1),
290 compiler2.world.mixinUsesOf(class2), 290 compiler2.closedWorld.mixinUsesOf(class2),
291 "Mixin uses of $class1 vs $class2", 291 "Mixin uses of $class1 vs $class2",
292 areElementsEquivalent, 292 areElementsEquivalent,
293 verbose: verbose); 293 verbose: verbose);
294 294
295 } 295 }
296 296
297 void checkClassHierarchyNodes( 297 void checkClassHierarchyNodes(
298 Compiler compiler1, 298 Compiler compiler1,
299 Compiler compiler2, 299 Compiler compiler2,
300 ClassHierarchyNode node1, ClassHierarchyNode node2, 300 ClassHierarchyNode node1, ClassHierarchyNode node2,
(...skipping 23 matching lines...) Expand all
324 checkClassHierarchyNodes(compiler1, compiler2, 324 checkClassHierarchyNodes(compiler1, compiler2,
325 child, other, verbose: verbose); 325 child, other, verbose: verbose);
326 found = true; 326 found = true;
327 break; 327 break;
328 } 328 }
329 } 329 }
330 if (!found) { 330 if (!found) {
331 if (child.isInstantiated) { 331 if (child.isInstantiated) {
332 print('Missing subclass ${child.cls} of ${node1.cls} ' 332 print('Missing subclass ${child.cls} of ${node1.cls} '
333 'in ${node2.directSubclasses}'); 333 'in ${node2.directSubclasses}');
334 print(compiler1.world.dump( 334 print(compiler1.closedWorld.dump(
335 verbose ? compiler1.coreClasses.objectClass : node1.cls)); 335 verbose ? compiler1.coreClasses.objectClass : node1.cls));
336 print(compiler2.world.dump( 336 print(compiler2.closedWorld.dump(
337 verbose ? compiler2.coreClasses.objectClass : node2.cls)); 337 verbose ? compiler2.coreClasses.objectClass : node2.cls));
338 } 338 }
339 Expect.isFalse(child.isInstantiated, 339 Expect.isFalse(child.isInstantiated,
340 'Missing subclass ${child.cls} of ${node1.cls} in ' 340 'Missing subclass ${child.cls} of ${node1.cls} in '
341 '${node2.directSubclasses}'); 341 '${node2.directSubclasses}');
342 } 342 }
343 } 343 }
344 checkMixinUses(compiler1, compiler2, node1.cls, node2.cls, verbose: verbose); 344 checkMixinUses(compiler1, compiler2, node1.cls, node2.cls, verbose: verbose);
345 } 345 }
346 346
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
407 OutputUnit outputUnit1, OutputUnit outputUnit2, String message) { 407 OutputUnit outputUnit1, OutputUnit outputUnit2, String message) {
408 if (outputUnit1 == null && outputUnit2 == null) return; 408 if (outputUnit1 == null && outputUnit2 == null) return;
409 check(outputUnit1, outputUnit2, 409 check(outputUnit1, outputUnit2,
410 'OutputUnit.isMainOutput $message', 410 'OutputUnit.isMainOutput $message',
411 outputUnit1.isMainOutput, outputUnit2.isMainOutput); 411 outputUnit1.isMainOutput, outputUnit2.isMainOutput);
412 checkSetEquivalence(outputUnit1, outputUnit2, 412 checkSetEquivalence(outputUnit1, outputUnit2,
413 'OutputUnit.imports $message', 413 'OutputUnit.imports $message',
414 outputUnit1.imports, outputUnit2.imports, 414 outputUnit1.imports, outputUnit2.imports,
415 (a, b) => areElementsEquivalent(a.declaration, b.declaration)); 415 (a, b) => areElementsEquivalent(a.declaration, b.declaration));
416 } 416 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698