| 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 424 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 435 /// Interface for serialization of backend specific data. | 435 /// Interface for serialization of backend specific data. |
| 436 JavaScriptBackendSerialization serialization; | 436 JavaScriptBackendSerialization serialization; |
| 437 | 437 |
| 438 NativeDataBuilderImpl _nativeDataBuilder; | 438 NativeDataBuilderImpl _nativeDataBuilder; |
| 439 final NativeBasicDataBuilderImpl _nativeBasicDataBuilder = | 439 final NativeBasicDataBuilderImpl _nativeBasicDataBuilder = |
| 440 new NativeBasicDataBuilderImpl(); | 440 new NativeBasicDataBuilderImpl(); |
| 441 NativeBasicDataImpl _nativeBasicData; | 441 NativeBasicDataImpl _nativeBasicData; |
| 442 NativeDataBuilder get nativeDataBuilder => _nativeDataBuilder; | 442 NativeDataBuilder get nativeDataBuilder => _nativeDataBuilder; |
| 443 final NativeDataResolver _nativeDataResolver; | 443 final NativeDataResolver _nativeDataResolver; |
| 444 OneShotInterceptorData _oneShotInterceptorData; | 444 OneShotInterceptorData _oneShotInterceptorData; |
| 445 BackendUsage _backendUsage; | |
| 446 BackendUsageBuilder _backendUsageBuilder; | 445 BackendUsageBuilder _backendUsageBuilder; |
| 447 MirrorsDataImpl _mirrorsData; | 446 MirrorsDataImpl _mirrorsData; |
| 448 CheckedModeHelpers _checkedModeHelpers; | 447 CheckedModeHelpers _checkedModeHelpers; |
| 449 | 448 |
| 450 final SuperMemberData superMemberData = new SuperMemberData(); | 449 final SuperMemberData superMemberData = new SuperMemberData(); |
| 451 | 450 |
| 452 native.NativeResolutionEnqueuer _nativeResolutionEnqueuer; | 451 native.NativeResolutionEnqueuer _nativeResolutionEnqueuer; |
| 453 native.NativeCodegenEnqueuer _nativeCodegenEnqueuer; | 452 native.NativeCodegenEnqueuer _nativeCodegenEnqueuer; |
| 454 | 453 |
| 455 BackendImpacts impacts; | 454 BackendImpacts impacts; |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 501 compiler.frontEndStrategy.createRuntimeTypesNeedBuilder() { | 500 compiler.frontEndStrategy.createRuntimeTypesNeedBuilder() { |
| 502 _target = new JavaScriptBackendTarget(this); | 501 _target = new JavaScriptBackendTarget(this); |
| 503 impacts = new BackendImpacts(compiler.options, commonElements); | 502 impacts = new BackendImpacts(compiler.options, commonElements); |
| 504 _mirrorsData = compiler.frontEndStrategy.createMirrorsDataBuilder(); | 503 _mirrorsData = compiler.frontEndStrategy.createMirrorsDataBuilder(); |
| 505 _backendUsageBuilder = new BackendUsageBuilderImpl(commonElements); | 504 _backendUsageBuilder = new BackendUsageBuilderImpl(commonElements); |
| 506 _checkedModeHelpers = new CheckedModeHelpers(commonElements); | 505 _checkedModeHelpers = new CheckedModeHelpers(commonElements); |
| 507 emitter = | 506 emitter = |
| 508 new CodeEmitterTask(compiler, generateSourceMap, useStartupEmitter); | 507 new CodeEmitterTask(compiler, generateSourceMap, useStartupEmitter); |
| 509 | 508 |
| 510 _typeVariableResolutionAnalysis = new TypeVariableResolutionAnalysis( | 509 _typeVariableResolutionAnalysis = new TypeVariableResolutionAnalysis( |
| 511 compiler.elementEnvironment, impacts, backendUsageBuilder); | 510 compiler.elementEnvironment, impacts, _backendUsageBuilder); |
| 512 jsInteropAnalysis = new JsInteropAnalysis(this); | 511 jsInteropAnalysis = new JsInteropAnalysis(this); |
| 513 _mirrorsResolutionAnalysis = | 512 _mirrorsResolutionAnalysis = |
| 514 compiler.frontEndStrategy.createMirrorsResolutionAnalysis(this); | 513 compiler.frontEndStrategy.createMirrorsResolutionAnalysis(this); |
| 515 lookupMapResolutionAnalysis = | 514 lookupMapResolutionAnalysis = |
| 516 new LookupMapResolutionAnalysis(reporter, compiler.elementEnvironment); | 515 new LookupMapResolutionAnalysis(reporter, compiler.elementEnvironment); |
| 517 | 516 |
| 518 noSuchMethodRegistry = new NoSuchMethodRegistry( | 517 noSuchMethodRegistry = new NoSuchMethodRegistry( |
| 519 commonElements, compiler.frontEndStrategy.createNoSuchMethodResolver()); | 518 commonElements, compiler.frontEndStrategy.createNoSuchMethodResolver()); |
| 520 kernelTask = new KernelTask(compiler); | 519 kernelTask = new KernelTask(compiler); |
| 521 patchResolverTask = new PatchResolverTask(compiler); | 520 patchResolverTask = new PatchResolverTask(compiler); |
| (...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 599 message: "LookupMapAnalysis has not been created yet.")); | 598 message: "LookupMapAnalysis has not been created yet.")); |
| 600 return _lookupMapAnalysis; | 599 return _lookupMapAnalysis; |
| 601 } | 600 } |
| 602 | 601 |
| 603 OneShotInterceptorData get oneShotInterceptorData { | 602 OneShotInterceptorData get oneShotInterceptorData { |
| 604 assert(invariant(NO_LOCATION_SPANNABLE, _oneShotInterceptorData != null, | 603 assert(invariant(NO_LOCATION_SPANNABLE, _oneShotInterceptorData != null, |
| 605 message: "OneShotInterceptorData has not been prepared yet.")); | 604 message: "OneShotInterceptorData has not been prepared yet.")); |
| 606 return _oneShotInterceptorData; | 605 return _oneShotInterceptorData; |
| 607 } | 606 } |
| 608 | 607 |
| 609 BackendUsage get backendUsage { | |
| 610 assert(invariant(NO_LOCATION_SPANNABLE, _backendUsage != null, | |
| 611 message: "BackendUsage has not been computed yet.")); | |
| 612 return _backendUsage; | |
| 613 } | |
| 614 | |
| 615 BackendUsageBuilder get backendUsageBuilder { | |
| 616 assert(invariant(NO_LOCATION_SPANNABLE, _backendUsage == null, | |
| 617 message: "BackendUsage has already been computed.")); | |
| 618 return _backendUsageBuilder; | |
| 619 } | |
| 620 | |
| 621 RuntimeTypesNeed get rtiNeed { | 608 RuntimeTypesNeed get rtiNeed { |
| 622 assert(invariant(NO_LOCATION_SPANNABLE, _rtiNeed != null, | 609 assert(invariant(NO_LOCATION_SPANNABLE, _rtiNeed != null, |
| 623 message: "RuntimeTypesNeed has not been computed yet.")); | 610 message: "RuntimeTypesNeed has not been computed yet.")); |
| 624 return _rtiNeed; | 611 return _rtiNeed; |
| 625 } | 612 } |
| 626 | 613 |
| 627 RuntimeTypesNeedBuilder get rtiNeedBuilder { | 614 RuntimeTypesNeedBuilder get rtiNeedBuilder { |
| 628 assert(invariant(NO_LOCATION_SPANNABLE, _rtiNeed == null, | 615 assert(invariant(NO_LOCATION_SPANNABLE, _rtiNeed == null, |
| 629 message: "RuntimeTypesNeed has already been computed.")); | 616 message: "RuntimeTypesNeed has already been computed.")); |
| 630 return _rtiNeedBuilder; | 617 return _rtiNeedBuilder; |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 684 ? new FrequencyBasedNamer(closedWorld, codegenWorldBuilder) | 671 ? new FrequencyBasedNamer(closedWorld, codegenWorldBuilder) |
| 685 : new MinifyNamer(closedWorld, codegenWorldBuilder) | 672 : new MinifyNamer(closedWorld, codegenWorldBuilder) |
| 686 : new Namer(closedWorld, codegenWorldBuilder); | 673 : new Namer(closedWorld, codegenWorldBuilder); |
| 687 } | 674 } |
| 688 | 675 |
| 689 /// Returns true if global optimizations such as type inferencing can apply to | 676 /// Returns true if global optimizations such as type inferencing can apply to |
| 690 /// the field [element]. | 677 /// the field [element]. |
| 691 /// | 678 /// |
| 692 /// One category of elements that do not apply is runtime helpers that the | 679 /// One category of elements that do not apply is runtime helpers that the |
| 693 /// backend calls, but the optimizations don't see those calls. | 680 /// backend calls, but the optimizations don't see those calls. |
| 694 bool canFieldBeUsedForGlobalOptimizations(FieldElement element) { | 681 bool canFieldBeUsedForGlobalOptimizations( |
| 695 return !backendUsage.isFieldUsedByBackend(element) && | 682 FieldElement element, ClosedWorld closedWorld) { |
| 683 return !closedWorld.backendUsage.isFieldUsedByBackend(element) && |
| 696 !mirrorsData.invokedReflectively(element); | 684 !mirrorsData.invokedReflectively(element); |
| 697 } | 685 } |
| 698 | 686 |
| 699 /// Returns true if global optimizations such as type inferencing can apply to | 687 /// Returns true if global optimizations such as type inferencing can apply to |
| 700 /// the parameter [element]. | 688 /// the parameter [element]. |
| 701 /// | 689 /// |
| 702 /// One category of elements that do not apply is runtime helpers that the | 690 /// One category of elements that do not apply is runtime helpers that the |
| 703 /// backend calls, but the optimizations don't see those calls. | 691 /// backend calls, but the optimizations don't see those calls. |
| 704 bool canFunctionParametersBeUsedForGlobalOptimizations( | 692 bool canFunctionParametersBeUsedForGlobalOptimizations( |
| 705 FunctionElement element) { | 693 FunctionElement element, ClosedWorld closedWorld) { |
| 706 if (element.isLocal) return true; | 694 if (element.isLocal) return true; |
| 707 MethodElement method = element; | 695 MethodElement method = element; |
| 708 return !backendUsage.isFunctionUsedByBackend(method) && | 696 return !closedWorld.backendUsage.isFunctionUsedByBackend(method) && |
| 709 !mirrorsData.invokedReflectively(method); | 697 !mirrorsData.invokedReflectively(method); |
| 710 } | 698 } |
| 711 | 699 |
| 712 /// Maps compile-time classes to their runtime class. The runtime class is | 700 /// Maps compile-time classes to their runtime class. The runtime class is |
| 713 /// always a superclass or the class itself. | 701 /// always a superclass or the class itself. |
| 714 ClassElement getRuntimeClass(ClassElement class_) { | 702 ClassElement getRuntimeClass(ClassElement class_) { |
| 715 if (class_.isSubclassOf(commonElements.jsIntClass)) | 703 if (class_.isSubclassOf(commonElements.jsIntClass)) |
| 716 return commonElements.jsIntClass; | 704 return commonElements.jsIntClass; |
| 717 if (class_.isSubclassOf(commonElements.jsArrayClass)) | 705 if (class_.isSubclassOf(commonElements.jsArrayClass)) |
| 718 return commonElements.jsArrayClass; | 706 return commonElements.jsArrayClass; |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 755 validateInterceptorImplementsAllObjectMethods( | 743 validateInterceptorImplementsAllObjectMethods( |
| 756 commonElements.jsInterceptorClass); | 744 commonElements.jsInterceptorClass); |
| 757 // The null-interceptor must also implement *all* methods. | 745 // The null-interceptor must also implement *all* methods. |
| 758 validateInterceptorImplementsAllObjectMethods(commonElements.jsNullClass); | 746 validateInterceptorImplementsAllObjectMethods(commonElements.jsNullClass); |
| 759 } | 747 } |
| 760 | 748 |
| 761 /// Called when the resolution queue has been closed. | 749 /// Called when the resolution queue has been closed. |
| 762 void onResolutionEnd() { | 750 void onResolutionEnd() { |
| 763 compiler.frontEndStrategy.annotationProcesser | 751 compiler.frontEndStrategy.annotationProcesser |
| 764 .processJsInteropAnnotations(nativeBasicData, nativeDataBuilder); | 752 .processJsInteropAnnotations(nativeBasicData, nativeDataBuilder); |
| 765 _backendUsage = backendUsageBuilder.close(); | |
| 766 } | 753 } |
| 767 | 754 |
| 768 /// Called when the closed world from resolution has been computed. | 755 /// Called when the closed world from resolution has been computed. |
| 769 void onResolutionClosedWorld( | 756 void onResolutionClosedWorld( |
| 770 ClosedWorld closedWorld, ClosedWorldRefiner closedWorldRefiner) { | 757 ClosedWorld closedWorld, ClosedWorldRefiner closedWorldRefiner) { |
| 771 for (MemberEntity entity | 758 for (MemberEntity entity |
| 772 in compiler.enqueuer.resolution.processedEntities) { | 759 in compiler.enqueuer.resolution.processedEntities) { |
| 773 processAnnotations(entity, closedWorldRefiner); | 760 processAnnotations(entity, closedWorldRefiner); |
| 774 } | 761 } |
| 775 mirrorsDataBuilder.computeMembersNeededForReflection( | 762 mirrorsDataBuilder.computeMembersNeededForReflection( |
| 776 compiler.enqueuer.resolution.worldBuilder, closedWorld); | 763 compiler.enqueuer.resolution.worldBuilder, closedWorld); |
| 777 _rtiNeed = rtiNeedBuilder.computeRuntimeTypesNeed( | 764 _rtiNeed = rtiNeedBuilder.computeRuntimeTypesNeed( |
| 778 compiler.enqueuer.resolution.worldBuilder, | 765 compiler.enqueuer.resolution.worldBuilder, closedWorld, compiler.types, |
| 779 closedWorld, | |
| 780 compiler.types, | |
| 781 commonElements, | |
| 782 _backendUsage, | |
| 783 enableTypeAssertions: compiler.options.enableTypeAssertions); | 766 enableTypeAssertions: compiler.options.enableTypeAssertions); |
| 784 mirrorsResolutionAnalysis.onResolutionComplete(); | 767 mirrorsResolutionAnalysis.onResolutionComplete(); |
| 785 } | 768 } |
| 786 | 769 |
| 787 void onTypeInferenceComplete(GlobalTypeInferenceResults results) { | 770 void onTypeInferenceComplete(GlobalTypeInferenceResults results) { |
| 788 noSuchMethodRegistry.onTypeInferenceComplete(results); | 771 noSuchMethodRegistry.onTypeInferenceComplete(results); |
| 789 } | 772 } |
| 790 | 773 |
| 791 /// Called when resolving a call to a foreign function. | 774 /// Called when resolving a call to a foreign function. |
| 792 native.NativeBehavior resolveForeignCall(Send node, Element element, | 775 native.NativeBehavior resolveForeignCall(Send node, Element element, |
| (...skipping 29 matching lines...) Expand all Loading... |
| 822 | 805 |
| 823 ResolutionEnqueuer createResolutionEnqueuer( | 806 ResolutionEnqueuer createResolutionEnqueuer( |
| 824 CompilerTask task, Compiler compiler) { | 807 CompilerTask task, Compiler compiler) { |
| 825 _nativeBasicData = | 808 _nativeBasicData = |
| 826 nativeBasicDataBuilder.close(compiler.elementEnvironment); | 809 nativeBasicDataBuilder.close(compiler.elementEnvironment); |
| 827 _nativeResolutionEnqueuer = new native.NativeResolutionEnqueuer( | 810 _nativeResolutionEnqueuer = new native.NativeResolutionEnqueuer( |
| 828 compiler.options, | 811 compiler.options, |
| 829 compiler.elementEnvironment, | 812 compiler.elementEnvironment, |
| 830 commonElements, | 813 commonElements, |
| 831 compiler.frontEndStrategy.dartTypes, | 814 compiler.frontEndStrategy.dartTypes, |
| 832 backendUsageBuilder, | 815 _backendUsageBuilder, |
| 833 compiler.frontEndStrategy.createNativeClassFinder(nativeBasicData)); | 816 compiler.frontEndStrategy.createNativeClassFinder(nativeBasicData)); |
| 834 _nativeDataBuilder = new NativeDataBuilderImpl(nativeBasicData); | 817 _nativeDataBuilder = new NativeDataBuilderImpl(nativeBasicData); |
| 835 _customElementsResolutionAnalysis = compiler.frontEndStrategy | 818 _customElementsResolutionAnalysis = compiler.frontEndStrategy |
| 836 .createCustomElementsResolutionAnalysis( | 819 .createCustomElementsResolutionAnalysis( |
| 837 nativeBasicData, backendUsageBuilder); | 820 nativeBasicData, _backendUsageBuilder); |
| 838 impactTransformer = new JavaScriptImpactTransformer( | 821 impactTransformer = new JavaScriptImpactTransformer( |
| 839 compiler.options, | 822 compiler.options, |
| 840 compiler.elementEnvironment, | 823 compiler.elementEnvironment, |
| 841 commonElements, | 824 commonElements, |
| 842 impacts, | 825 impacts, |
| 843 nativeBasicData, | 826 nativeBasicData, |
| 844 _nativeResolutionEnqueuer, | 827 _nativeResolutionEnqueuer, |
| 845 backendUsageBuilder, | 828 _backendUsageBuilder, |
| 846 mirrorsDataBuilder, | 829 mirrorsDataBuilder, |
| 847 customElementsResolutionAnalysis, | 830 customElementsResolutionAnalysis, |
| 848 rtiNeedBuilder); | 831 rtiNeedBuilder); |
| 849 InterceptorDataBuilder interceptorDataBuilder = | 832 InterceptorDataBuilder interceptorDataBuilder = |
| 850 new InterceptorDataBuilderImpl( | 833 new InterceptorDataBuilderImpl( |
| 851 nativeBasicData, compiler.elementEnvironment, commonElements); | 834 nativeBasicData, compiler.elementEnvironment, commonElements); |
| 852 return new ResolutionEnqueuer( | 835 return new ResolutionEnqueuer( |
| 853 task, | 836 task, |
| 854 compiler.options, | 837 compiler.options, |
| 855 compiler.reporter, | 838 compiler.reporter, |
| 856 compiler.options.analyzeOnly && compiler.options.analyzeMain | 839 compiler.options.analyzeOnly && compiler.options.analyzeMain |
| 857 ? const DirectEnqueuerStrategy() | 840 ? const DirectEnqueuerStrategy() |
| 858 : const TreeShakingEnqueuerStrategy(), | 841 : const TreeShakingEnqueuerStrategy(), |
| 859 new ResolutionEnqueuerListener( | 842 new ResolutionEnqueuerListener( |
| 860 compiler.options, | 843 compiler.options, |
| 861 compiler.elementEnvironment, | 844 compiler.elementEnvironment, |
| 862 commonElements, | 845 commonElements, |
| 863 impacts, | 846 impacts, |
| 864 nativeBasicData, | 847 nativeBasicData, |
| 865 interceptorDataBuilder, | 848 interceptorDataBuilder, |
| 866 backendUsageBuilder, | 849 _backendUsageBuilder, |
| 867 rtiNeedBuilder, | 850 rtiNeedBuilder, |
| 868 mirrorsDataBuilder, | 851 mirrorsDataBuilder, |
| 869 noSuchMethodRegistry, | 852 noSuchMethodRegistry, |
| 870 customElementsResolutionAnalysis, | 853 customElementsResolutionAnalysis, |
| 871 lookupMapResolutionAnalysis, | 854 lookupMapResolutionAnalysis, |
| 872 mirrorsResolutionAnalysis, | 855 mirrorsResolutionAnalysis, |
| 873 typeVariableResolutionAnalysis, | 856 typeVariableResolutionAnalysis, |
| 874 _nativeResolutionEnqueuer, | 857 _nativeResolutionEnqueuer, |
| 875 compiler.deferredLoadTask, | 858 compiler.deferredLoadTask, |
| 876 kernelTask), | 859 kernelTask), |
| 877 compiler.frontEndStrategy.createResolutionWorldBuilder( | 860 compiler.frontEndStrategy.createResolutionWorldBuilder( |
| 878 nativeBasicData, | 861 nativeBasicData, |
| 879 _nativeDataBuilder, | 862 _nativeDataBuilder, |
| 880 interceptorDataBuilder, | 863 interceptorDataBuilder, |
| 864 _backendUsageBuilder, |
| 881 const OpenWorldStrategy()), | 865 const OpenWorldStrategy()), |
| 882 compiler.frontEndStrategy.createResolutionWorkItemBuilder( | 866 compiler.frontEndStrategy.createResolutionWorkItemBuilder( |
| 883 nativeBasicData, _nativeDataBuilder, impactTransformer)); | 867 nativeBasicData, _nativeDataBuilder, impactTransformer)); |
| 884 } | 868 } |
| 885 | 869 |
| 886 /// Creates an [Enqueuer] for code generation specific to this backend. | 870 /// Creates an [Enqueuer] for code generation specific to this backend. |
| 887 CodegenEnqueuer createCodegenEnqueuer( | 871 CodegenEnqueuer createCodegenEnqueuer( |
| 888 CompilerTask task, Compiler compiler, ClosedWorld closedWorld) { | 872 CompilerTask task, Compiler compiler, ClosedWorld closedWorld) { |
| 889 _typeVariableCodegenAnalysis = new TypeVariableCodegenAnalysis( | 873 _typeVariableCodegenAnalysis = new TypeVariableCodegenAnalysis( |
| 890 compiler.elementEnvironment, this, commonElements, mirrorsData); | 874 compiler.elementEnvironment, this, commonElements, mirrorsData); |
| (...skipping 19 matching lines...) Expand all Loading... |
| 910 task, | 894 task, |
| 911 compiler.options, | 895 compiler.options, |
| 912 const TreeShakingEnqueuerStrategy(), | 896 const TreeShakingEnqueuerStrategy(), |
| 913 new CodegenWorldBuilderImpl( | 897 new CodegenWorldBuilderImpl( |
| 914 nativeBasicData, closedWorld, constants, const TypeMaskStrategy()), | 898 nativeBasicData, closedWorld, constants, const TypeMaskStrategy()), |
| 915 new CodegenWorkItemBuilder(this, closedWorld, compiler.options), | 899 new CodegenWorkItemBuilder(this, closedWorld, compiler.options), |
| 916 new CodegenEnqueuerListener( | 900 new CodegenEnqueuerListener( |
| 917 compiler.elementEnvironment, | 901 compiler.elementEnvironment, |
| 918 commonElements, | 902 commonElements, |
| 919 impacts, | 903 impacts, |
| 920 backendUsage, | 904 closedWorld.backendUsage, |
| 921 rtiNeed, | 905 rtiNeed, |
| 922 customElementsCodegenAnalysis, | 906 customElementsCodegenAnalysis, |
| 923 typeVariableCodegenAnalysis, | 907 typeVariableCodegenAnalysis, |
| 924 lookupMapAnalysis, | 908 lookupMapAnalysis, |
| 925 mirrorsCodegenAnalysis, | 909 mirrorsCodegenAnalysis, |
| 926 nativeCodegenEnqueuer)); | 910 nativeCodegenEnqueuer)); |
| 927 } | 911 } |
| 928 | 912 |
| 929 WorldImpact codegen(CodegenWorkItem work, ClosedWorld closedWorld) { | 913 WorldImpact codegen(CodegenWorkItem work, ClosedWorld closedWorld) { |
| 930 MemberElement element = work.element; | 914 MemberElement element = work.element; |
| (...skipping 195 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1126 _rtiEncoder = | 1110 _rtiEncoder = |
| 1127 _namer.rtiEncoder = new _RuntimeTypesEncoder(namer, commonElements); | 1111 _namer.rtiEncoder = new _RuntimeTypesEncoder(namer, commonElements); |
| 1128 emitter.createEmitter(namer, closedWorld, codegenWorldBuilder); | 1112 emitter.createEmitter(namer, closedWorld, codegenWorldBuilder); |
| 1129 _codegenImpactTransformer = new CodegenImpactTransformer( | 1113 _codegenImpactTransformer = new CodegenImpactTransformer( |
| 1130 compiler.options, | 1114 compiler.options, |
| 1131 compiler.elementEnvironment, | 1115 compiler.elementEnvironment, |
| 1132 commonElements, | 1116 commonElements, |
| 1133 impacts, | 1117 impacts, |
| 1134 checkedModeHelpers, | 1118 checkedModeHelpers, |
| 1135 closedWorld.nativeData, | 1119 closedWorld.nativeData, |
| 1136 backendUsage, | 1120 closedWorld.backendUsage, |
| 1137 rtiNeed, | 1121 rtiNeed, |
| 1138 nativeCodegenEnqueuer, | 1122 nativeCodegenEnqueuer, |
| 1139 namer, | 1123 namer, |
| 1140 oneShotInterceptorData, | 1124 oneShotInterceptorData, |
| 1141 lookupMapAnalysis, | 1125 lookupMapAnalysis, |
| 1142 rtiChecksBuilder); | 1126 rtiChecksBuilder); |
| 1143 return const WorldImpact(); | 1127 return const WorldImpact(); |
| 1144 } | 1128 } |
| 1145 | 1129 |
| 1146 /// Called when code generation has been completed. | 1130 /// Called when code generation has been completed. |
| (...skipping 302 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1449 | 1433 |
| 1450 bool canUseAliasedSuperMember(MemberEntity member, Selector selector) { | 1434 bool canUseAliasedSuperMember(MemberEntity member, Selector selector) { |
| 1451 return !selector.isGetter; | 1435 return !selector.isGetter; |
| 1452 } | 1436 } |
| 1453 | 1437 |
| 1454 /// Returns `true` if [member] is called from a subclass via `super`. | 1438 /// Returns `true` if [member] is called from a subclass via `super`. |
| 1455 bool isAliasedSuperMember(MemberEntity member) { | 1439 bool isAliasedSuperMember(MemberEntity member) { |
| 1456 return _aliasedSuperMembers.contains(member); | 1440 return _aliasedSuperMembers.contains(member); |
| 1457 } | 1441 } |
| 1458 } | 1442 } |
| OLD | NEW |