| OLD | NEW |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 } |
| OLD | NEW |