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

Side by Side Diff: pkg/compiler/lib/src/native/enqueue.dart

Issue 2836993003: Handle instantiation of native classes in closed_world2_test (Closed)
Patch Set: Fixes Created 3 years, 8 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) 2014, the Dart project authors. Please see the AUTHORS file 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 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 import '../common_elements.dart' show CommonElements, ElementEnvironment; 5 import '../common_elements.dart' show CommonElements, ElementEnvironment;
6 import '../elements/elements.dart'; 6 import '../elements/elements.dart';
7 import '../elements/entities.dart'; 7 import '../elements/entities.dart';
8 import '../elements/resolution_types.dart'; 8 import '../elements/resolution_types.dart';
9 import '../elements/types.dart'; 9 import '../elements/types.dart';
10 import '../js_backend/backend_usage.dart' show BackendUsageBuilder; 10 import '../js_backend/backend_usage.dart' show BackendUsageBuilder;
11 import '../js_backend/native_data.dart' show NativeData; 11 import '../js_backend/native_data.dart' show NativeData;
12 import '../js_emitter/js_emitter.dart' show CodeEmitterTask, NativeEmitter; 12 import '../js_emitter/js_emitter.dart' show CodeEmitterTask, NativeEmitter;
13 import '../options.dart'; 13 import '../options.dart';
14 import '../universe/use.dart' show StaticUse, TypeUse; 14 import '../universe/use.dart' show StaticUse, TypeUse;
15 import '../universe/world_impact.dart' 15 import '../universe/world_impact.dart'
16 show WorldImpact, WorldImpactBuilder, WorldImpactBuilderImpl; 16 show WorldImpact, WorldImpactBuilder, WorldImpactBuilderImpl;
17 import 'behavior.dart'; 17 import 'behavior.dart';
18 import 'resolver.dart' show NativeClassResolver; 18 import 'resolver.dart' show NativeClassFinder;
19 19
20 /** 20 /**
21 * This could be an abstract class but we use it as a stub for the dart_backend. 21 * This could be an abstract class but we use it as a stub for the dart_backend.
22 */ 22 */
23 class NativeEnqueuer { 23 class NativeEnqueuer {
24 /// Called when a [type] has been instantiated natively. 24 /// Called when a [type] has been instantiated natively.
25 void onInstantiatedType(InterfaceType type) {} 25 void onInstantiatedType(InterfaceType type) {}
26 26
27 /// Initial entry point to native enqueuer. 27 /// Initial entry point to native enqueuer.
28 WorldImpact processNativeClasses(Iterable<LibraryEntity> libraries) => 28 WorldImpact processNativeClasses(Iterable<LibraryEntity> libraries) =>
(...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after
177 } 177 }
178 178
179 void logSummary(void log(String message)) { 179 void logSummary(void log(String message)) {
180 if (_allUsedMessage != null) { 180 if (_allUsedMessage != null) {
181 log(_allUsedMessage); 181 log(_allUsedMessage);
182 } 182 }
183 } 183 }
184 } 184 }
185 185
186 class NativeResolutionEnqueuer extends NativeEnqueuerBase { 186 class NativeResolutionEnqueuer extends NativeEnqueuerBase {
187 final NativeClassResolver _nativeClassResolver; 187 final NativeClassFinder _nativeClassFinder;
188 final BackendUsageBuilder _backendUsageBuilder; 188 final BackendUsageBuilder _backendUsageBuilder;
189 189
190 /// The set of all native classes. Each native class is in [nativeClasses] 190 /// The set of all native classes. Each native class is in [nativeClasses]
191 /// and exactly one of [unusedClasses] and [registeredClasses]. 191 /// and exactly one of [unusedClasses] and [registeredClasses].
192 final Set<ClassEntity> _nativeClasses = new Set<ClassEntity>(); 192 final Set<ClassEntity> _nativeClasses = new Set<ClassEntity>();
193 193
194 NativeResolutionEnqueuer( 194 NativeResolutionEnqueuer(
195 CompilerOptions options, 195 CompilerOptions options,
196 ElementEnvironment elementEnvironment, 196 ElementEnvironment elementEnvironment,
197 CommonElements commonElements, 197 CommonElements commonElements,
198 this._backendUsageBuilder, 198 this._backendUsageBuilder,
199 this._nativeClassResolver) 199 this._nativeClassFinder)
200 : super(options, elementEnvironment, commonElements); 200 : super(options, elementEnvironment, commonElements);
201 201
202 void _registerBackendUse(FunctionEntity element) { 202 void _registerBackendUse(FunctionEntity element) {
203 _backendUsageBuilder.registerBackendFunctionUse(element); 203 _backendUsageBuilder.registerBackendFunctionUse(element);
204 _backendUsageBuilder.registerGlobalFunctionDependency(element); 204 _backendUsageBuilder.registerGlobalFunctionDependency(element);
205 } 205 }
206 206
207 WorldImpact processNativeClasses(Iterable<LibraryEntity> libraries) { 207 WorldImpact processNativeClasses(Iterable<LibraryEntity> libraries) {
208 WorldImpactBuilderImpl impactBuilder = new WorldImpactBuilderImpl(); 208 WorldImpactBuilderImpl impactBuilder = new WorldImpactBuilderImpl();
209 Iterable<ClassEntity> nativeClasses = 209 Iterable<ClassEntity> nativeClasses =
210 _nativeClassResolver.computeNativeClasses(libraries); 210 _nativeClassFinder.computeNativeClasses(libraries);
211 _nativeClasses.addAll(nativeClasses); 211 _nativeClasses.addAll(nativeClasses);
212 _unusedClasses.addAll(nativeClasses); 212 _unusedClasses.addAll(nativeClasses);
213 if (!enableLiveTypeAnalysis) { 213 if (!enableLiveTypeAnalysis) {
214 _registerTypeUses(impactBuilder, _nativeClasses, 'forced'); 214 _registerTypeUses(impactBuilder, _nativeClasses, 'forced');
215 } 215 }
216 return impactBuilder; 216 return impactBuilder;
217 } 217 }
218 218
219 void logSummary(void log(String message)) { 219 void logSummary(void log(String message)) {
220 super.logSummary(log); 220 super.logSummary(log);
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
301 emitter.directSubtypes.putIfAbsent(superclass, () => <ClassEntity>[]); 301 emitter.directSubtypes.putIfAbsent(superclass, () => <ClassEntity>[]);
302 directSubtypes.add(cls); 302 directSubtypes.add(cls);
303 } 303 }
304 304
305 void logSummary(void log(String message)) { 305 void logSummary(void log(String message)) {
306 super.logSummary(log); 306 super.logSummary(log);
307 log('Compiled ${_registeredClasses.length} native classes, ' 307 log('Compiled ${_registeredClasses.length} native classes, '
308 '${_unusedClasses.length} native classes omitted.'); 308 '${_unusedClasses.length} native classes omitted.');
309 } 309 }
310 } 310 }
OLDNEW
« no previous file with comments | « pkg/compiler/lib/src/kernel/native_class_resolver.dart ('k') | pkg/compiler/lib/src/native/resolver.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698