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

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

Issue 2863073003: Access NativeData only 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
OLDNEW
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, 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; 5 library js_backend.backend;
6 6
7 import '../common.dart'; 7 import '../common.dart';
8 import '../common/backend_api.dart' 8 import '../common/backend_api.dart'
9 show ForeignResolver, NativeRegistry, ImpactTransformer; 9 show ForeignResolver, NativeRegistry, ImpactTransformer;
10 import '../common/codegen.dart' show CodegenImpact, CodegenWorkItem; 10 import '../common/codegen.dart' show CodegenImpact, CodegenWorkItem;
(...skipping 416 matching lines...) Expand 10 before | Expand all | Expand 10 after
427 CodegenImpactTransformer _codegenImpactTransformer; 427 CodegenImpactTransformer _codegenImpactTransformer;
428 428
429 PatchResolverTask patchResolverTask; 429 PatchResolverTask patchResolverTask;
430 430
431 /// The strategy used for collecting and emitting source information. 431 /// The strategy used for collecting and emitting source information.
432 SourceInformationStrategy sourceInformationStrategy; 432 SourceInformationStrategy sourceInformationStrategy;
433 433
434 /// Interface for serialization of backend specific data. 434 /// Interface for serialization of backend specific data.
435 JavaScriptBackendSerialization serialization; 435 JavaScriptBackendSerialization serialization;
436 436
437 NativeDataImpl _nativeData; 437 NativeDataBuilderImpl _nativeDataBuilder;
438 final NativeBasicDataBuilderImpl _nativeBasicDataBuilder = 438 final NativeBasicDataBuilderImpl _nativeBasicDataBuilder =
439 new NativeBasicDataBuilderImpl(); 439 new NativeBasicDataBuilderImpl();
440 NativeBasicDataImpl _nativeBasicData; 440 NativeBasicDataImpl _nativeBasicData;
441 NativeData get nativeData => _nativeData; 441 //NativeData get nativeData => _nativeData;
442 NativeDataBuilder get nativeDataBuilder => _nativeData; 442 NativeDataBuilder get nativeDataBuilder => _nativeDataBuilder;
443 final NativeDataResolver _nativeDataResolver; 443 final NativeDataResolver _nativeDataResolver;
444 InterceptorDataBuilder _interceptorDataBuilder; 444 InterceptorDataBuilder _interceptorDataBuilder;
445 InterceptorData _interceptorData; 445 InterceptorData _interceptorData;
446 OneShotInterceptorData _oneShotInterceptorData; 446 OneShotInterceptorData _oneShotInterceptorData;
447 BackendUsage _backendUsage; 447 BackendUsage _backendUsage;
448 BackendUsageBuilder _backendUsageBuilder; 448 BackendUsageBuilder _backendUsageBuilder;
449 MirrorsDataImpl _mirrorsData; 449 MirrorsDataImpl _mirrorsData;
450 CheckedModeHelpers _checkedModeHelpers; 450 CheckedModeHelpers _checkedModeHelpers;
451 451
452 final SuperMemberData superMemberData = new SuperMemberData(); 452 final SuperMemberData superMemberData = new SuperMemberData();
(...skipping 235 matching lines...) Expand 10 before | Expand all | Expand 10 after
688 688
689 bool isBackendLibrary(LibraryElement library) { 689 bool isBackendLibrary(LibraryElement library) {
690 return library == commonElements.interceptorsLibrary || 690 return library == commonElements.interceptorsLibrary ||
691 library == compiler.commonElements.jsHelperLibrary; 691 library == compiler.commonElements.jsHelperLibrary;
692 } 692 }
693 693
694 Namer determineNamer( 694 Namer determineNamer(
695 ClosedWorld closedWorld, CodegenWorldBuilder codegenWorldBuilder) { 695 ClosedWorld closedWorld, CodegenWorldBuilder codegenWorldBuilder) {
696 return compiler.options.enableMinification 696 return compiler.options.enableMinification
697 ? compiler.options.useFrequencyNamer 697 ? compiler.options.useFrequencyNamer
698 ? new FrequencyBasedNamer( 698 ? new FrequencyBasedNamer(closedWorld, codegenWorldBuilder)
699 nativeData, closedWorld, codegenWorldBuilder) 699 : new MinifyNamer(closedWorld, codegenWorldBuilder)
700 : new MinifyNamer(nativeData, closedWorld, codegenWorldBuilder) 700 : new Namer(closedWorld, codegenWorldBuilder);
701 : new Namer(nativeData, closedWorld, codegenWorldBuilder);
702 } 701 }
703 702
704 /// Returns true if global optimizations such as type inferencing can apply to 703 /// Returns true if global optimizations such as type inferencing can apply to
705 /// the field [element]. 704 /// the field [element].
706 /// 705 ///
707 /// One category of elements that do not apply is runtime helpers that the 706 /// One category of elements that do not apply is runtime helpers that the
708 /// backend calls, but the optimizations don't see those calls. 707 /// backend calls, but the optimizations don't see those calls.
709 bool canFieldBeUsedForGlobalOptimizations(FieldElement element) { 708 bool canFieldBeUsedForGlobalOptimizations(FieldElement element) {
710 return !backendUsage.isFieldUsedByBackend(element) && 709 return !backendUsage.isFieldUsedByBackend(element) &&
711 !mirrorsData.invokedReflectively(element); 710 !mirrorsData.invokedReflectively(element);
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after
841 ResolutionEnqueuer createResolutionEnqueuer( 840 ResolutionEnqueuer createResolutionEnqueuer(
842 CompilerTask task, Compiler compiler) { 841 CompilerTask task, Compiler compiler) {
843 _nativeBasicData = 842 _nativeBasicData =
844 nativeBasicDataBuilder.close(compiler.elementEnvironment); 843 nativeBasicDataBuilder.close(compiler.elementEnvironment);
845 _nativeResolutionEnqueuer = new native.NativeResolutionEnqueuer( 844 _nativeResolutionEnqueuer = new native.NativeResolutionEnqueuer(
846 compiler.options, 845 compiler.options,
847 compiler.elementEnvironment, 846 compiler.elementEnvironment,
848 commonElements, 847 commonElements,
849 backendUsageBuilder, 848 backendUsageBuilder,
850 compiler.frontEndStrategy.createNativeClassFinder(nativeBasicData)); 849 compiler.frontEndStrategy.createNativeClassFinder(nativeBasicData));
851 _nativeData = new NativeDataImpl(nativeBasicData); 850 _nativeDataBuilder = new NativeDataBuilderImpl(nativeBasicData);
852 _customElementsResolutionAnalysis = compiler.frontEndStrategy 851 _customElementsResolutionAnalysis = compiler.frontEndStrategy
853 .createCustomElementsResolutionAnalysis( 852 .createCustomElementsResolutionAnalysis(
854 nativeBasicData, backendUsageBuilder); 853 nativeBasicData, backendUsageBuilder);
855 impactTransformer = new JavaScriptImpactTransformer( 854 impactTransformer = new JavaScriptImpactTransformer(
856 compiler.options, 855 compiler.options,
857 compiler.elementEnvironment, 856 compiler.elementEnvironment,
858 commonElements, 857 commonElements,
859 impacts, 858 impacts,
860 nativeBasicData, 859 nativeBasicData,
861 _nativeResolutionEnqueuer, 860 _nativeResolutionEnqueuer,
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
910 lookupMapResolutionAnalysis); 909 lookupMapResolutionAnalysis);
911 _mirrorsCodegenAnalysis = mirrorsResolutionAnalysis.close(); 910 _mirrorsCodegenAnalysis = mirrorsResolutionAnalysis.close();
912 _customElementsCodegenAnalysis = new CustomElementsCodegenAnalysis( 911 _customElementsCodegenAnalysis = new CustomElementsCodegenAnalysis(
913 compiler.resolution, constantSystem, commonElements, nativeBasicData); 912 compiler.resolution, constantSystem, commonElements, nativeBasicData);
914 _nativeCodegenEnqueuer = new native.NativeCodegenEnqueuer( 913 _nativeCodegenEnqueuer = new native.NativeCodegenEnqueuer(
915 compiler.options, 914 compiler.options,
916 compiler.elementEnvironment, 915 compiler.elementEnvironment,
917 commonElements, 916 commonElements,
918 emitter, 917 emitter,
919 _nativeResolutionEnqueuer, 918 _nativeResolutionEnqueuer,
920 nativeData); 919 closedWorld.nativeData);
921 return new CodegenEnqueuer( 920 return new CodegenEnqueuer(
922 task, 921 task,
923 compiler.options, 922 compiler.options,
924 const TreeShakingEnqueuerStrategy(), 923 const TreeShakingEnqueuerStrategy(),
925 new CodegenWorldBuilderImpl( 924 new CodegenWorldBuilderImpl(
926 nativeBasicData, closedWorld, constants, const TypeMaskStrategy()), 925 nativeBasicData, closedWorld, constants, const TypeMaskStrategy()),
927 new CodegenWorkItemBuilder(this, compiler.options), 926 new CodegenWorkItemBuilder(this, compiler.options),
928 new CodegenEnqueuerListener( 927 new CodegenEnqueuerListener(
929 compiler.elementEnvironment, 928 compiler.elementEnvironment,
930 commonElements, 929 commonElements,
(...skipping 218 matching lines...) Expand 10 before | Expand all | Expand 10 after
1149 tracer = new Tracer(closedWorld, namer, compiler); 1148 tracer = new Tracer(closedWorld, namer, compiler);
1150 _rtiEncoder = 1149 _rtiEncoder =
1151 _namer.rtiEncoder = new _RuntimeTypesEncoder(namer, commonElements); 1150 _namer.rtiEncoder = new _RuntimeTypesEncoder(namer, commonElements);
1152 emitter.createEmitter(namer, closedWorld, codegenWorldBuilder); 1151 emitter.createEmitter(namer, closedWorld, codegenWorldBuilder);
1153 _codegenImpactTransformer = new CodegenImpactTransformer( 1152 _codegenImpactTransformer = new CodegenImpactTransformer(
1154 compiler.options, 1153 compiler.options,
1155 compiler.elementEnvironment, 1154 compiler.elementEnvironment,
1156 commonElements, 1155 commonElements,
1157 impacts, 1156 impacts,
1158 checkedModeHelpers, 1157 checkedModeHelpers,
1159 nativeData, 1158 closedWorld.nativeData,
1160 backendUsage, 1159 backendUsage,
1161 rtiNeed, 1160 rtiNeed,
1162 nativeCodegenEnqueuer, 1161 nativeCodegenEnqueuer,
1163 namer, 1162 namer,
1164 oneShotInterceptorData, 1163 oneShotInterceptorData,
1165 lookupMapAnalysis, 1164 lookupMapAnalysis,
1166 rtiChecksBuilder); 1165 rtiChecksBuilder);
1167 return const WorldImpact(); 1166 return const WorldImpact();
1168 } 1167 }
1169 1168
(...skipping 303 matching lines...) Expand 10 before | Expand all | Expand 10 after
1473 1472
1474 bool canUseAliasedSuperMember(MemberEntity member, Selector selector) { 1473 bool canUseAliasedSuperMember(MemberEntity member, Selector selector) {
1475 return !selector.isGetter; 1474 return !selector.isGetter;
1476 } 1475 }
1477 1476
1478 /// Returns `true` if [member] is called from a subclass via `super`. 1477 /// Returns `true` if [member] is called from a subclass via `super`.
1479 bool isAliasedSuperMember(MemberEntity member) { 1478 bool isAliasedSuperMember(MemberEntity member) {
1480 return _aliasedSuperMembers.contains(member); 1479 return _aliasedSuperMembers.contains(member);
1481 } 1480 }
1482 } 1481 }
OLDNEW
« no previous file with comments | « pkg/compiler/lib/src/inferrer/type_graph_nodes.dart ('k') | pkg/compiler/lib/src/js_backend/backend_serialization.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698