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

Side by Side Diff: tests/compiler/dart2js/kernel/closed_world_test.dart

Issue 2975433002: Assert that we don't mix K and J elements (Closed)
Patch Set: Updated cf. comments Created 3 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2016, 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 // Tests that the closed world computed from [WorldImpact]s derived from kernel 5 // Tests that the closed world computed from [WorldImpact]s derived from kernel
6 // is equivalent to the original computed from resolution. 6 // is equivalent to the original computed from resolution.
7 library dart2js.kernel.closed_world_test; 7 library dart2js.kernel.closed_world_test;
8 8
9 import 'package:async_helper/async_helper.dart'; 9 import 'package:async_helper/async_helper.dart';
10 import 'package:compiler/src/commandline_options.dart'; 10 import 'package:compiler/src/commandline_options.dart';
11 import 'package:compiler/src/common.dart'; 11 import 'package:compiler/src/common.dart';
12 import 'package:compiler/src/common_elements.dart'; 12 import 'package:compiler/src/common_elements.dart';
13 import 'package:compiler/src/common/work.dart'; 13 import 'package:compiler/src/common/work.dart';
14 import 'package:compiler/src/compiler.dart'; 14 import 'package:compiler/src/compiler.dart';
15 import 'package:compiler/src/enqueue.dart'; 15 import 'package:compiler/src/enqueue.dart';
16 import 'package:compiler/src/js_backend/backend.dart'; 16 import 'package:compiler/src/js_backend/backend.dart';
17 import 'package:compiler/src/js_backend/backend_impact.dart';
17 import 'package:compiler/src/js_backend/backend_usage.dart'; 18 import 'package:compiler/src/js_backend/backend_usage.dart';
18 import 'package:compiler/src/js_backend/interceptor_data.dart'; 19 import 'package:compiler/src/js_backend/interceptor_data.dart';
19 import 'package:compiler/src/js_backend/resolution_listener.dart'; 20 import 'package:compiler/src/js_backend/resolution_listener.dart';
21 import 'package:compiler/src/js_backend/runtime_types.dart';
20 import 'package:compiler/src/js_backend/type_variable_handler.dart'; 22 import 'package:compiler/src/js_backend/type_variable_handler.dart';
21 import 'package:compiler/src/serialization/equivalence.dart'; 23 import 'package:compiler/src/serialization/equivalence.dart';
22 import 'package:compiler/src/universe/world_builder.dart'; 24 import 'package:compiler/src/universe/world_builder.dart';
23 import 'package:compiler/src/universe/world_impact.dart'; 25 import 'package:compiler/src/universe/world_impact.dart';
24 import 'package:compiler/src/world.dart'; 26 import 'package:compiler/src/world.dart';
25 import '../memory_compiler.dart'; 27 import '../memory_compiler.dart';
26 import '../serialization/helper.dart'; 28 import '../serialization/helper.dart';
27 import '../equivalence/check_functions.dart'; 29 import '../equivalence/check_functions.dart';
28 import 'test_helpers.dart'; 30 import 'test_helpers.dart';
29 31
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
81 await compiler.run(entryPoint); 83 await compiler.run(entryPoint);
82 compiler.resolutionWorldBuilder.closeWorld(); 84 compiler.resolutionWorldBuilder.closeWorld();
83 85
84 JavaScriptBackend backend = compiler.backend; 86 JavaScriptBackend backend = compiler.backend;
85 // Create a new resolution enqueuer and feed it with the [WorldImpact]s 87 // Create a new resolution enqueuer and feed it with the [WorldImpact]s
86 // computed from kernel through the [build] in `kernel_impact.dart`. 88 // computed from kernel through the [build] in `kernel_impact.dart`.
87 List list = createResolutionEnqueuerListener(compiler); 89 List list = createResolutionEnqueuerListener(compiler);
88 ResolutionEnqueuerListener resolutionEnqueuerListener = list[0]; 90 ResolutionEnqueuerListener resolutionEnqueuerListener = list[0];
89 BackendUsageBuilder backendUsageBuilder = list[1]; 91 BackendUsageBuilder backendUsageBuilder = list[1];
90 InterceptorDataBuilder interceptorDataBuilder = list[2]; 92 InterceptorDataBuilder interceptorDataBuilder = list[2];
93 RuntimeTypesNeedBuilder rtiNeedBuilder = list[3];
91 ResolutionEnqueuer enqueuer = new ResolutionEnqueuer( 94 ResolutionEnqueuer enqueuer = new ResolutionEnqueuer(
92 compiler.enqueuer, 95 compiler.enqueuer,
93 compiler.options, 96 compiler.options,
94 compiler.reporter, 97 compiler.reporter,
95 const TreeShakingEnqueuerStrategy(), 98 const TreeShakingEnqueuerStrategy(),
96 resolutionEnqueuerListener, 99 resolutionEnqueuerListener,
97 new ElementResolutionWorldBuilder( 100 new ElementResolutionWorldBuilder(
98 backend, 101 backend,
99 compiler.resolution, 102 compiler.resolution,
100 backend.nativeBasicData, 103 compiler.frontendStrategy.nativeBasicData,
101 backend.nativeDataBuilder, 104 backend.nativeDataBuilder,
102 interceptorDataBuilder, 105 interceptorDataBuilder,
103 backendUsageBuilder, 106 backendUsageBuilder,
107 rtiNeedBuilder,
108 backend.nativeResolutionEnqueuerForTesting,
104 const OpenWorldStrategy()), 109 const OpenWorldStrategy()),
105 new KernelTestWorkItemBuilder(compiler), 110 new KernelTestWorkItemBuilder(compiler),
106 'enqueuer from kernel'); 111 'enqueuer from kernel');
107 ClosedWorld closedWorld = computeClosedWorld(compiler.reporter, enqueuer, 112 ClosedWorld closedWorld = computeClosedWorld(compiler.reporter, enqueuer,
108 compiler.frontendStrategy.elementEnvironment); 113 compiler.frontendStrategy.elementEnvironment);
109 BackendUsage backendUsage = backendUsageBuilder.close(); 114 BackendUsage backendUsage = backendUsageBuilder.close();
110 checkResolutionEnqueuers( 115 checkResolutionEnqueuers(
111 backendUsage, backendUsage, compiler.enqueuer.resolution, enqueuer, 116 backendUsage, backendUsage, compiler.enqueuer.resolution, enqueuer,
112 typeEquivalence: (a, b) => areTypesEquivalent(unalias(a), unalias(b)), 117 typeEquivalence: (a, b) => areTypesEquivalent(unalias(a), unalias(b)),
113 elementFilter: elementFilter, 118 elementFilter: elementFilter,
114 verbose: arguments.verbose, 119 verbose: arguments.verbose,
115 // TODO(johnniwinther): Support class usage testing in presence of 120 // TODO(johnniwinther): Support class usage testing in presence of
116 // redirecting constructors. 121 // redirecting constructors.
117 skipClassUsageTesting: true); 122 skipClassUsageTesting: true);
118 checkClosedWorlds( 123 checkClosedWorlds(
119 compiler.resolutionWorldBuilder.closedWorldForTesting, closedWorld, 124 compiler.resolutionWorldBuilder.closedWorldForTesting, closedWorld,
120 verbose: arguments.verbose); 125 verbose: arguments.verbose);
121 }); 126 });
122 } 127 }
123 128
124 List createResolutionEnqueuerListener(Compiler compiler) { 129 List createResolutionEnqueuerListener(Compiler compiler) {
125 JavaScriptBackend backend = compiler.backend; 130 JavaScriptBackend backend = compiler.backend;
126 BackendUsageBuilder backendUsageBuilder = 131 BackendUsageBuilder backendUsageBuilder =
127 new BackendUsageBuilderImpl(compiler.frontendStrategy.commonElements); 132 new BackendUsageBuilderImpl(compiler.frontendStrategy.commonElements);
128 InterceptorDataBuilder interceptorDataBuilder = 133 InterceptorDataBuilder interceptorDataBuilder =
129 new InterceptorDataBuilderImpl( 134 new InterceptorDataBuilderImpl(
130 backend.nativeBasicData, 135 compiler.frontendStrategy.nativeBasicData,
131 compiler.frontendStrategy.elementEnvironment, 136 compiler.frontendStrategy.elementEnvironment,
132 compiler.frontendStrategy.commonElements); 137 compiler.frontendStrategy.commonElements);
138 RuntimeTypesNeedBuilder rtiNeedBuilder =
139 compiler.frontendStrategy.createRuntimeTypesNeedBuilder();
140 BackendImpacts impacts = new BackendImpacts(
141 compiler.options, compiler.frontendStrategy.commonElements);
133 ResolutionEnqueuerListener listener = new ResolutionEnqueuerListener( 142 ResolutionEnqueuerListener listener = new ResolutionEnqueuerListener(
134 compiler.options, 143 compiler.options,
135 compiler.frontendStrategy.elementEnvironment, 144 compiler.frontendStrategy.elementEnvironment,
136 compiler.frontendStrategy.commonElements, 145 compiler.frontendStrategy.commonElements,
137 backend.impacts, 146 impacts,
138 backend.nativeBasicData, 147 compiler.frontendStrategy.nativeBasicData,
139 interceptorDataBuilder, 148 interceptorDataBuilder,
140 backendUsageBuilder, 149 backendUsageBuilder,
141 backend.rtiNeedBuilder, 150 rtiNeedBuilder,
142 backend.mirrorsDataBuilder, 151 backend.mirrorsDataBuilder,
143 backend.noSuchMethodRegistry, 152 backend.noSuchMethodRegistry,
144 backend.customElementsResolutionAnalysis, 153 backend.customElementsResolutionAnalysis,
145 backend.lookupMapResolutionAnalysis, 154 backend.lookupMapResolutionAnalysis,
146 backend.mirrorsResolutionAnalysis, 155 backend.mirrorsResolutionAnalysis,
147 new TypeVariableResolutionAnalysis( 156 new TypeVariableResolutionAnalysis(
148 compiler.frontendStrategy.elementEnvironment, 157 compiler.frontendStrategy.elementEnvironment,
149 backend.impacts, 158 impacts,
150 backendUsageBuilder), 159 backendUsageBuilder),
151 backend.nativeResolutionEnqueuerForTesting, 160 backend.nativeResolutionEnqueuerForTesting,
152 compiler.deferredLoadTask, 161 compiler.deferredLoadTask,
153 backend.kernelTask); 162 backend.kernelTask);
154 return [listener, backendUsageBuilder, interceptorDataBuilder]; 163 return [
164 listener,
165 backendUsageBuilder,
166 interceptorDataBuilder,
167 rtiNeedBuilder
168 ];
155 } 169 }
156 170
157 ClosedWorld computeClosedWorld(DiagnosticReporter reporter, 171 ClosedWorld computeClosedWorld(DiagnosticReporter reporter,
158 ResolutionEnqueuer enqueuer, ElementEnvironment elementEnvironment) { 172 ResolutionEnqueuer enqueuer, ElementEnvironment elementEnvironment) {
159 enqueuer.open(const ImpactStrategy(), elementEnvironment.mainFunction, 173 enqueuer.open(const ImpactStrategy(), elementEnvironment.mainFunction,
160 elementEnvironment.libraries); 174 elementEnvironment.libraries);
161 enqueuer.forEach((WorkItem work) { 175 enqueuer.forEach((WorkItem work) {
162 enqueuer.applyImpact(work.run(), impactSource: work.element); 176 enqueuer.applyImpact(work.run(), impactSource: work.element);
163 }); 177 });
164 return enqueuer.worldBuilder.closeWorld(); 178 return enqueuer.worldBuilder.closeWorld();
165 } 179 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698