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

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

Issue 2693163002: Split backend implementation of EnqueuerListener (Closed)
Patch Set: Updated cf. comments Created 3 years, 10 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
« no previous file with comments | « tests/compiler/dart2js/kernel/closed_world_test.dart ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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';
11 import 'package:compiler/src/closure.dart'; 11 import 'package:compiler/src/closure.dart';
12 import 'package:compiler/src/commandline_options.dart'; 12 import 'package:compiler/src/commandline_options.dart';
13 import 'package:compiler/src/common.dart'; 13 import 'package:compiler/src/common.dart';
14 import 'package:compiler/src/constants/values.dart'; 14 import 'package:compiler/src/constants/values.dart';
15 import 'package:compiler/src/compiler.dart'; 15 import 'package:compiler/src/compiler.dart';
16 import 'package:compiler/src/elements/resolution_types.dart'; 16 import 'package:compiler/src/elements/resolution_types.dart';
17 import 'package:compiler/src/deferred_load.dart'; 17 import 'package:compiler/src/deferred_load.dart';
18 import 'package:compiler/src/elements/elements.dart'; 18 import 'package:compiler/src/elements/elements.dart';
19 import 'package:compiler/src/elements/entities.dart'; 19 import 'package:compiler/src/elements/entities.dart';
20 import 'package:compiler/src/enqueue.dart'; 20 import 'package:compiler/src/enqueue.dart';
21 import 'package:compiler/src/filenames.dart'; 21 import 'package:compiler/src/filenames.dart';
22 import 'package:compiler/src/js_backend/js_backend.dart'; 22 import 'package:compiler/src/js_backend/js_backend.dart';
23 import 'package:compiler/src/js_backend/backend_usage.dart';
23 import 'package:compiler/src/serialization/equivalence.dart'; 24 import 'package:compiler/src/serialization/equivalence.dart';
24 import 'package:compiler/src/tree/nodes.dart'; 25 import 'package:compiler/src/tree/nodes.dart';
25 import 'package:compiler/src/universe/class_set.dart'; 26 import 'package:compiler/src/universe/class_set.dart';
26 import 'package:compiler/src/universe/world_builder.dart'; 27 import 'package:compiler/src/universe/world_builder.dart';
27 import 'package:compiler/src/util/enumset.dart'; 28 import 'package:compiler/src/util/enumset.dart';
28 import 'package:compiler/src/world.dart' show ClosedWorld; 29 import 'package:compiler/src/world.dart' show ClosedWorld;
29 import '../memory_compiler.dart'; 30 import '../memory_compiler.dart';
30 import 'helper.dart'; 31 import 'helper.dart';
31 import 'test_data.dart'; 32 import 'test_data.dart';
32 import 'test_helper.dart'; 33 import 'test_helper.dart';
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
90 options: [Flags.analyzeOnly]); 91 options: [Flags.analyzeOnly]);
91 compilerDeserialized.resolution.retainCachesForTesting = true; 92 compilerDeserialized.resolution.retainCachesForTesting = true;
92 await compilerDeserialized.run(entryPoint); 93 await compilerDeserialized.run(entryPoint);
93 compilerDeserialized.closeResolution(); 94 compilerDeserialized.closeResolution();
94 return compilerDeserialized; 95 return compilerDeserialized;
95 }); 96 });
96 97
97 return measure(title, 'check models', () async { 98 return measure(title, 'check models', () async {
98 checkAllImpacts(compilerNormal, compilerDeserialized, verbose: verbose); 99 checkAllImpacts(compilerNormal, compilerDeserialized, verbose: verbose);
99 checkResolutionEnqueuers( 100 checkResolutionEnqueuers(
100 compilerNormal.backend, 101 compilerNormal.backend.backendUsage,
101 compilerDeserialized.backend, 102 compilerDeserialized.backend.backendUsage,
102 compilerNormal.enqueuer.resolution, 103 compilerNormal.enqueuer.resolution,
103 compilerDeserialized.enqueuer.resolution, 104 compilerDeserialized.enqueuer.resolution,
104 verbose: verbose); 105 verbose: verbose);
105 checkClosedWorlds( 106 checkClosedWorlds(
106 compilerNormal.resolutionWorldBuilder.closedWorldForTesting, 107 compilerNormal.resolutionWorldBuilder.closedWorldForTesting,
107 compilerDeserialized.resolutionWorldBuilder.closedWorldForTesting, 108 compilerDeserialized.resolutionWorldBuilder.closedWorldForTesting,
108 verbose: verbose); 109 verbose: verbose);
109 checkBackendInfo(compilerNormal, compilerDeserialized, verbose: verbose); 110 checkBackendInfo(compilerNormal, compilerDeserialized, verbose: verbose);
110 }); 111 });
111 } 112 }
112 113
113 void checkResolutionEnqueuers( 114 void checkResolutionEnqueuers(
114 JavaScriptBackend backend1, 115 BackendUsage backendUsage1,
115 JavaScriptBackend backend2, 116 BackendUsage backendUsage2,
116 ResolutionEnqueuer enqueuer1, 117 ResolutionEnqueuer enqueuer1,
117 ResolutionEnqueuer enqueuer2, 118 ResolutionEnqueuer enqueuer2,
118 {bool typeEquivalence(ResolutionDartType a, ResolutionDartType b): 119 {bool typeEquivalence(ResolutionDartType a, ResolutionDartType b):
119 areTypesEquivalent, 120 areTypesEquivalent,
120 bool elementFilter(Element element), 121 bool elementFilter(Element element),
121 bool verbose: false}) { 122 bool verbose: false}) {
122 checkSets(enqueuer1.processedEntities, enqueuer2.processedEntities, 123 checkSets(enqueuer1.processedEntities, enqueuer2.processedEntities,
123 "Processed element mismatch", areElementsEquivalent, 124 "Processed element mismatch", areElementsEquivalent,
124 elementFilter: elementFilter, verbose: verbose); 125 elementFilter: elementFilter, verbose: verbose);
125 126
(...skipping 19 matching lines...) Expand all
145 enqueuer1.worldBuilder.instantiatedTypes, 146 enqueuer1.worldBuilder.instantiatedTypes,
146 enqueuer2.worldBuilder.instantiatedTypes, 147 enqueuer2.worldBuilder.instantiatedTypes,
147 "Instantiated types mismatch", 148 "Instantiated types mismatch",
148 typeEquivalence, 149 typeEquivalence,
149 verbose: verbose); 150 verbose: verbose);
150 151
151 checkSets(enqueuer1.worldBuilder.isChecks, enqueuer2.worldBuilder.isChecks, 152 checkSets(enqueuer1.worldBuilder.isChecks, enqueuer2.worldBuilder.isChecks,
152 "Is-check mismatch", typeEquivalence, 153 "Is-check mismatch", typeEquivalence,
153 verbose: verbose); 154 verbose: verbose);
154 155
155 Expect.equals(backend1.hasInvokeOnSupport, backend2.hasInvokeOnSupport, 156 Expect.equals(backendUsage1.isInvokeOnUsed, backendUsage2.isInvokeOnUsed,
156 "JavaScriptBackend.hasInvokeOnSupport mismatch"); 157 "JavaScriptBackend.hasInvokeOnSupport mismatch");
157 Expect.equals( 158 Expect.equals(
158 backend1.hasFunctionApplySupport, 159 backendUsage1.isFunctionApplyUsed,
159 backend2.hasFunctionApplySupport, 160 backendUsage1.isFunctionApplyUsed,
160 "JavaScriptBackend.hasFunctionApplySupport mismatch"); 161 "JavaScriptBackend.hasFunctionApplySupport mismatch");
161 Expect.equals(backend1.hasRuntimeTypeSupport, backend2.hasRuntimeTypeSupport, 162 Expect.equals(
163 backendUsage1.isRuntimeTypeUsed,
164 backendUsage2.isRuntimeTypeUsed,
162 "JavaScriptBackend.hasRuntimeTypeSupport mismatch"); 165 "JavaScriptBackend.hasRuntimeTypeSupport mismatch");
163 Expect.equals(backend1.hasIsolateSupport, backend2.hasIsolateSupport, 166 Expect.equals(backendUsage1.isIsolateInUse, backendUsage2.isIsolateInUse,
164 "JavaScriptBackend.hasIsolateSupport mismatch"); 167 "JavaScriptBackend.hasIsolateSupport mismatch");
165 } 168 }
166 169
167 void checkClosedWorlds(ClosedWorld closedWorld1, ClosedWorld closedWorld2, 170 void checkClosedWorlds(ClosedWorld closedWorld1, ClosedWorld closedWorld2,
168 {bool verbose: false}) { 171 {bool verbose: false}) {
169 checkClassHierarchyNodes( 172 checkClassHierarchyNodes(
170 closedWorld1, 173 closedWorld1,
171 closedWorld2, 174 closedWorld2,
172 closedWorld1 175 closedWorld1
173 .getClassHierarchyNode(closedWorld1.commonElements.objectClass), 176 .getClassHierarchyNode(closedWorld1.commonElements.objectClass),
(...skipping 271 matching lines...) Expand 10 before | Expand all | Expand 10 after
445 a, b, (a, b) => areInstancesEquivalent(a, b, typeEquivalence))); 448 a, b, (a, b) => areInstancesEquivalent(a, b, typeEquivalence)));
446 return true; 449 return true;
447 } 450 }
448 451
449 bool areInstancesEquivalent(Instance instance1, Instance instance2, 452 bool areInstancesEquivalent(Instance instance1, Instance instance2,
450 bool typeEquivalence(ResolutionDartType a, ResolutionDartType b)) { 453 bool typeEquivalence(ResolutionDartType a, ResolutionDartType b)) {
451 return typeEquivalence(instance1.type, instance2.type) && 454 return typeEquivalence(instance1.type, instance2.type) &&
452 instance1.kind == instance2.kind && 455 instance1.kind == instance2.kind &&
453 instance1.isRedirection == instance2.isRedirection; 456 instance1.isRedirection == instance2.isRedirection;
454 } 457 }
OLDNEW
« no previous file with comments | « tests/compiler/dart2js/kernel/closed_world_test.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698