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

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

Issue 2871583002: Pass InterceptorData through ResolutionWorldBuilder and access it through ClosedWorld (Closed)
Patch Set: Created 3 years, 7 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/exit_code_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) 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';
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
86 compiler.resolution.retainCachesForTesting = true; 86 compiler.resolution.retainCachesForTesting = true;
87 await compiler.run(entryPoint); 87 await compiler.run(entryPoint);
88 compiler.resolutionWorldBuilder.closeWorld(); 88 compiler.resolutionWorldBuilder.closeWorld();
89 89
90 JavaScriptBackend backend = compiler.backend; 90 JavaScriptBackend backend = compiler.backend;
91 // Create a new resolution enqueuer and feed it with the [WorldImpact]s 91 // Create a new resolution enqueuer and feed it with the [WorldImpact]s
92 // computed from kernel through the [build] in `kernel_impact.dart`. 92 // computed from kernel through the [build] in `kernel_impact.dart`.
93 List list = createResolutionEnqueuerListener(compiler); 93 List list = createResolutionEnqueuerListener(compiler);
94 ResolutionEnqueuerListener resolutionEnqueuerListener = list[0]; 94 ResolutionEnqueuerListener resolutionEnqueuerListener = list[0];
95 BackendUsageBuilder backendUsageBuilder = list[1]; 95 BackendUsageBuilder backendUsageBuilder = list[1];
96 InterceptorDataBuilder interceptorDataBuilder = list[2];
96 ResolutionEnqueuer enqueuer = new ResolutionEnqueuer( 97 ResolutionEnqueuer enqueuer = new ResolutionEnqueuer(
97 compiler.enqueuer, 98 compiler.enqueuer,
98 compiler.options, 99 compiler.options,
99 compiler.reporter, 100 compiler.reporter,
100 const TreeShakingEnqueuerStrategy(), 101 const TreeShakingEnqueuerStrategy(),
101 resolutionEnqueuerListener, 102 resolutionEnqueuerListener,
102 new ElementResolutionWorldBuilder( 103 new ElementResolutionWorldBuilder(
103 backend, 104 backend,
104 compiler.resolution, 105 compiler.resolution,
105 backend.nativeBasicData, 106 backend.nativeBasicData,
106 backend.nativeDataBuilder, 107 backend.nativeDataBuilder,
108 interceptorDataBuilder,
107 const OpenWorldStrategy()), 109 const OpenWorldStrategy()),
108 new KernelWorkItemBuilder(compiler), 110 new KernelWorkItemBuilder(compiler),
109 'enqueuer from kernel'); 111 'enqueuer from kernel');
110 ClosedWorld closedWorld = computeClosedWorld( 112 ClosedWorld closedWorld = computeClosedWorld(
111 compiler.reporter, enqueuer, compiler.elementEnvironment); 113 compiler.reporter, enqueuer, compiler.elementEnvironment);
112 BackendUsage backendUsage = backendUsageBuilder.close(); 114 BackendUsage backendUsage = backendUsageBuilder.close();
113 checkResolutionEnqueuers( 115 checkResolutionEnqueuers(
114 backendUsage, backendUsage, compiler.enqueuer.resolution, enqueuer, 116 backendUsage, backendUsage, compiler.enqueuer.resolution, enqueuer,
115 typeEquivalence: (ResolutionDartType a, ResolutionDartType b) { 117 typeEquivalence: (ResolutionDartType a, ResolutionDartType b) {
116 return areTypesEquivalent(unalias(a), unalias(b)); 118 return areTypesEquivalent(unalias(a), unalias(b));
(...skipping 18 matching lines...) Expand all
135 // The class cannot itself be instantiated. 137 // The class cannot itself be instantiated.
136 return false; 138 return false;
137 } 139 }
138 return true; 140 return true;
139 } 141 }
140 142
141 List createResolutionEnqueuerListener(Compiler compiler) { 143 List createResolutionEnqueuerListener(Compiler compiler) {
142 JavaScriptBackend backend = compiler.backend; 144 JavaScriptBackend backend = compiler.backend;
143 BackendUsageBuilder backendUsageBuilder = 145 BackendUsageBuilder backendUsageBuilder =
144 new BackendUsageBuilderImpl(compiler.commonElements); 146 new BackendUsageBuilderImpl(compiler.commonElements);
147 InterceptorDataBuilder interceptorDataBuilder =
148 new InterceptorDataBuilderImpl(backend.nativeBasicData,
149 compiler.elementEnvironment, compiler.commonElements);
145 ResolutionEnqueuerListener listener = new ResolutionEnqueuerListener( 150 ResolutionEnqueuerListener listener = new ResolutionEnqueuerListener(
146 compiler.options, 151 compiler.options,
147 compiler.elementEnvironment, 152 compiler.elementEnvironment,
148 compiler.commonElements, 153 compiler.commonElements,
149 backend.impacts, 154 backend.impacts,
150 backend.nativeBasicData, 155 backend.nativeBasicData,
151 new InterceptorDataBuilderImpl(backend.nativeBasicData, 156 interceptorDataBuilder,
152 compiler.elementEnvironment, compiler.commonElements),
153 backendUsageBuilder, 157 backendUsageBuilder,
154 backend.rtiNeedBuilder, 158 backend.rtiNeedBuilder,
155 backend.mirrorsDataBuilder, 159 backend.mirrorsDataBuilder,
156 backend.noSuchMethodRegistry, 160 backend.noSuchMethodRegistry,
157 backend.customElementsResolutionAnalysis, 161 backend.customElementsResolutionAnalysis,
158 backend.lookupMapResolutionAnalysis, 162 backend.lookupMapResolutionAnalysis,
159 backend.mirrorsResolutionAnalysis, 163 backend.mirrorsResolutionAnalysis,
160 new TypeVariableResolutionAnalysis( 164 new TypeVariableResolutionAnalysis(
161 compiler.elementEnvironment, backend.impacts, backendUsageBuilder), 165 compiler.elementEnvironment, backend.impacts, backendUsageBuilder),
162 backend.nativeResolutionEnqueuerForTesting, 166 backend.nativeResolutionEnqueuerForTesting,
163 compiler.deferredLoadTask, 167 compiler.deferredLoadTask,
164 backend.kernelTask); 168 backend.kernelTask);
165 return [listener, backendUsageBuilder]; 169 return [listener, backendUsageBuilder, interceptorDataBuilder];
166 } 170 }
167 171
168 ClosedWorld computeClosedWorld(DiagnosticReporter reporter, 172 ClosedWorld computeClosedWorld(DiagnosticReporter reporter,
169 ResolutionEnqueuer enqueuer, ElementEnvironment elementEnvironment) { 173 ResolutionEnqueuer enqueuer, ElementEnvironment elementEnvironment) {
170 enqueuer.open(const ImpactStrategy(), elementEnvironment.mainFunction, 174 enqueuer.open(const ImpactStrategy(), elementEnvironment.mainFunction,
171 elementEnvironment.libraries); 175 elementEnvironment.libraries);
172 enqueuer.forEach((WorkItem work) { 176 enqueuer.forEach((WorkItem work) {
173 enqueuer.applyImpact(work.run(), impactSource: work.element); 177 enqueuer.applyImpact(work.run(), impactSource: work.element);
174 }); 178 });
175 return enqueuer.worldBuilder.closeWorld(); 179 return enqueuer.worldBuilder.closeWorld();
(...skipping 17 matching lines...) Expand all
193 final MemberElement element; 197 final MemberElement element;
194 198
195 KernelWorkItem(this._compiler, this._impactTransformer, this.element); 199 KernelWorkItem(this._compiler, this._impactTransformer, this.element);
196 200
197 @override 201 @override
198 WorldImpact run() { 202 WorldImpact run() {
199 ResolutionImpact resolutionImpact = build(_compiler, element.resolvedAst); 203 ResolutionImpact resolutionImpact = build(_compiler, element.resolvedAst);
200 return _impactTransformer.transformResolutionImpact(resolutionImpact); 204 return _impactTransformer.transformResolutionImpact(resolutionImpact);
201 } 205 }
202 } 206 }
OLDNEW
« no previous file with comments | « tests/compiler/dart2js/exit_code_test.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698