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

Side by Side Diff: pkg/compiler/lib/src/js_backend/impact_transformer.dart

Issue 2743243003: Split MirrorsData (Closed)
Patch Set: Created 3 years, 9 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) 2017, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2017, 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 js_backend.backend.impact_transformer; 5 library js_backend.backend.impact_transformer;
6 6
7 import '../common.dart'; 7 import '../common.dart';
8 import '../common_elements.dart'; 8 import '../common_elements.dart';
9 import '../common/backend_api.dart' show ImpactTransformer; 9 import '../common/backend_api.dart' show ImpactTransformer;
10 import '../common/codegen.dart' show CodegenImpact; 10 import '../common/codegen.dart' show CodegenImpact;
(...skipping 26 matching lines...) Expand all
37 37
38 class JavaScriptImpactTransformer extends ImpactTransformer { 38 class JavaScriptImpactTransformer extends ImpactTransformer {
39 final CompilerOptions _options; 39 final CompilerOptions _options;
40 final Resolution _resolution; 40 final Resolution _resolution;
41 final ElementEnvironment _elementEnvironment; 41 final ElementEnvironment _elementEnvironment;
42 final CommonElements _commonElements; 42 final CommonElements _commonElements;
43 final BackendImpacts _impacts; 43 final BackendImpacts _impacts;
44 final NativeClassData _nativeClassData; 44 final NativeClassData _nativeClassData;
45 final NativeResolutionEnqueuer _nativeResolutionEnqueuer; 45 final NativeResolutionEnqueuer _nativeResolutionEnqueuer;
46 final BackendUsageBuilder _backendUsageBuider; 46 final BackendUsageBuilder _backendUsageBuider;
47 final MirrorsData _mirrorsData; 47 final MirrorsDataBuilder _mirrorsDataBuilder;
48 final CustomElementsResolutionAnalysis _customElementsResolutionAnalysis; 48 final CustomElementsResolutionAnalysis _customElementsResolutionAnalysis;
49 final RuntimeTypesNeedBuilder _rtiNeedBuilder; 49 final RuntimeTypesNeedBuilder _rtiNeedBuilder;
50 50
51 JavaScriptImpactTransformer( 51 JavaScriptImpactTransformer(
52 this._options, 52 this._options,
53 this._resolution, 53 this._resolution,
54 this._elementEnvironment, 54 this._elementEnvironment,
55 this._commonElements, 55 this._commonElements,
56 this._impacts, 56 this._impacts,
57 this._nativeClassData, 57 this._nativeClassData,
58 this._nativeResolutionEnqueuer, 58 this._nativeResolutionEnqueuer,
59 this._backendUsageBuider, 59 this._backendUsageBuider,
60 this._mirrorsData, 60 this._mirrorsDataBuilder,
61 this._customElementsResolutionAnalysis, 61 this._customElementsResolutionAnalysis,
62 this._rtiNeedBuilder); 62 this._rtiNeedBuilder);
63 63
64 @override 64 @override
65 WorldImpact transformResolutionImpact( 65 WorldImpact transformResolutionImpact(
66 ResolutionEnqueuer enqueuer, ResolutionImpact worldImpact) { 66 ResolutionEnqueuer enqueuer, ResolutionImpact worldImpact) {
67 TransformedWorldImpact transformed = 67 TransformedWorldImpact transformed =
68 new TransformedWorldImpact(worldImpact); 68 new TransformedWorldImpact(worldImpact);
69 69
70 void registerImpact(BackendImpact impact) { 70 void registerImpact(BackendImpact impact) {
(...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after
219 // factory constructors are registered directly. 219 // factory constructors are registered directly.
220 transformed 220 transformed
221 .registerTypeUse(new TypeUse.instantiation(listLiteralUse.type)); 221 .registerTypeUse(new TypeUse.instantiation(listLiteralUse.type));
222 ResolutionInterfaceType type = listLiteralUse.type; 222 ResolutionInterfaceType type = listLiteralUse.type;
223 registerRequiredType(type); 223 registerRequiredType(type);
224 } 224 }
225 225
226 if (worldImpact.constSymbolNames.isNotEmpty) { 226 if (worldImpact.constSymbolNames.isNotEmpty) {
227 registerImpact(_impacts.constSymbol); 227 registerImpact(_impacts.constSymbol);
228 for (String constSymbolName in worldImpact.constSymbolNames) { 228 for (String constSymbolName in worldImpact.constSymbolNames) {
229 _mirrorsData.registerConstSymbol(constSymbolName); 229 _mirrorsDataBuilder.registerConstSymbol(constSymbolName);
230 } 230 }
231 } 231 }
232 232
233 for (StaticUse staticUse in worldImpact.staticUses) { 233 for (StaticUse staticUse in worldImpact.staticUses) {
234 switch (staticUse.kind) { 234 switch (staticUse.kind) {
235 case StaticUseKind.CLOSURE: 235 case StaticUseKind.CLOSURE:
236 registerImpact(_impacts.closure); 236 registerImpact(_impacts.closure);
237 LocalFunctionElement closure = staticUse.element; 237 LocalFunctionElement closure = staticUse.element;
238 if (closure.type.containsTypeVariables) { 238 if (closure.type.containsTypeVariables) {
239 registerImpact(_impacts.computeSignature); 239 registerImpact(_impacts.computeSignature);
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after
336 class CodegenImpactTransformer { 336 class CodegenImpactTransformer {
337 final CompilerOptions _options; 337 final CompilerOptions _options;
338 final ElementEnvironment _elementEnvironment; 338 final ElementEnvironment _elementEnvironment;
339 final BackendHelpers _helpers; 339 final BackendHelpers _helpers;
340 final BackendImpacts _impacts; 340 final BackendImpacts _impacts;
341 final CheckedModeHelpers _checkedModeHelpers; 341 final CheckedModeHelpers _checkedModeHelpers;
342 final NativeData _nativeData; 342 final NativeData _nativeData;
343 final RuntimeTypesNeed _rtiNeed; 343 final RuntimeTypesNeed _rtiNeed;
344 final NativeCodegenEnqueuer _nativeCodegenEnqueuer; 344 final NativeCodegenEnqueuer _nativeCodegenEnqueuer;
345 final Namer _namer; 345 final Namer _namer;
346 final MirrorsData _mirrorsData;
347 final OneShotInterceptorData _oneShotInterceptorData; 346 final OneShotInterceptorData _oneShotInterceptorData;
348 final LookupMapAnalysis _lookupMapAnalysis; 347 final LookupMapAnalysis _lookupMapAnalysis;
349 final RuntimeTypesChecksBuilder _rtiChecksBuilder; 348 final RuntimeTypesChecksBuilder _rtiChecksBuilder;
350 349
351 CodegenImpactTransformer( 350 CodegenImpactTransformer(
352 this._options, 351 this._options,
353 this._elementEnvironment, 352 this._elementEnvironment,
354 this._helpers, 353 this._helpers,
355 this._impacts, 354 this._impacts,
356 this._checkedModeHelpers, 355 this._checkedModeHelpers,
357 this._nativeData, 356 this._nativeData,
358 this._rtiNeed, 357 this._rtiNeed,
359 this._nativeCodegenEnqueuer, 358 this._nativeCodegenEnqueuer,
360 this._namer, 359 this._namer,
361 this._mirrorsData,
362 this._oneShotInterceptorData, 360 this._oneShotInterceptorData,
363 this._lookupMapAnalysis, 361 this._lookupMapAnalysis,
364 this._rtiChecksBuilder); 362 this._rtiChecksBuilder);
365 363
366 void onIsCheckForCodegen( 364 void onIsCheckForCodegen(
367 ResolutionDartType type, TransformedWorldImpact transformed) { 365 ResolutionDartType type, TransformedWorldImpact transformed) {
368 if (type.isDynamic) return; 366 if (type.isDynamic) return;
369 type = type.unaliased; 367 type = type.unaliased;
370 _impacts.typeCheck.registerImpact(transformed, _elementEnvironment); 368 _impacts.typeCheck.registerImpact(transformed, _elementEnvironment);
371 369
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
435 } 433 }
436 break; 434 break;
437 case StaticUseKind.CONST_CONSTRUCTOR_INVOKE: 435 case StaticUseKind.CONST_CONSTRUCTOR_INVOKE:
438 case StaticUseKind.CONSTRUCTOR_INVOKE: 436 case StaticUseKind.CONSTRUCTOR_INVOKE:
439 _lookupMapAnalysis.registerInstantiatedType(staticUse.type); 437 _lookupMapAnalysis.registerInstantiatedType(staticUse.type);
440 break; 438 break;
441 default: 439 default:
442 } 440 }
443 } 441 }
444 442
445 for (String name in impact.constSymbols) {
446 _mirrorsData.registerConstSymbol(name);
Siggi Cherem (dart-lang) 2017/03/14 05:52:14 was this and registerUsedMember in the listener no
Johnni Winther 2017/03/15 12:52:42 It's a subset of the registrations from resolution
447 }
448
449 for (Set<ClassElement> classes in impact.specializedGetInterceptors) { 443 for (Set<ClassElement> classes in impact.specializedGetInterceptors) {
450 _oneShotInterceptorData.registerSpecializedGetInterceptor( 444 _oneShotInterceptorData.registerSpecializedGetInterceptor(
451 classes, _namer); 445 classes, _namer);
452 } 446 }
453 447
454 if (impact.usesInterceptor) { 448 if (impact.usesInterceptor) {
455 if (_nativeCodegenEnqueuer.hasInstantiatedNativeClasses) { 449 if (_nativeCodegenEnqueuer.hasInstantiatedNativeClasses) {
456 _impacts.interceptorUse 450 _impacts.interceptorUse
457 .registerImpact(transformed, _elementEnvironment); 451 .registerImpact(transformed, _elementEnvironment);
458 } 452 }
(...skipping 12 matching lines...) Expand all
471 _impacts.asyncStarBody 465 _impacts.asyncStarBody
472 .registerImpact(transformed, _elementEnvironment); 466 .registerImpact(transformed, _elementEnvironment);
473 break; 467 break;
474 } 468 }
475 } 469 }
476 470
477 // TODO(johnniwinther): Remove eager registration. 471 // TODO(johnniwinther): Remove eager registration.
478 return transformed; 472 return transformed;
479 } 473 }
480 } 474 }
OLDNEW
« no previous file with comments | « pkg/compiler/lib/src/js_backend/codegen_listener.dart ('k') | pkg/compiler/lib/src/js_backend/mirrors_data.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698