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

Side by Side Diff: sdk/lib/_internal/compiler/implementation/js_backend/backend.dart

Issue 11413139: Put back optimization on fixed-size array. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 8 years, 1 month 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 | Annotate | Revision Log
« no previous file with comments | « no previous file | sdk/lib/_internal/compiler/implementation/ssa/optimize.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 part of js_backend; 5 part of js_backend;
6 6
7 typedef void Recompile(Element element); 7 typedef void Recompile(Element element);
8 8
9 class ReturnInfo { 9 class ReturnInfo {
10 HType returnType; 10 HType returnType;
(...skipping 637 matching lines...) Expand 10 before | Expand all | Expand 10 after
648 648
649 ClassElement jsStringClass; 649 ClassElement jsStringClass;
650 ClassElement jsArrayClass; 650 ClassElement jsArrayClass;
651 ClassElement jsNumberClass; 651 ClassElement jsNumberClass;
652 ClassElement jsIntClass; 652 ClassElement jsIntClass;
653 ClassElement jsDoubleClass; 653 ClassElement jsDoubleClass;
654 ClassElement jsFunctionClass; 654 ClassElement jsFunctionClass;
655 ClassElement jsNullClass; 655 ClassElement jsNullClass;
656 ClassElement jsBoolClass; 656 ClassElement jsBoolClass;
657 ClassElement objectInterceptorClass; 657 ClassElement objectInterceptorClass;
658 ClassElement listImplementation;
659 Element jsArrayLength; 658 Element jsArrayLength;
660 Element jsStringLength; 659 Element jsStringLength;
661 Element getInterceptorMethod; 660 Element getInterceptorMethod;
662 bool _interceptorsAreInitialized = false; 661 bool _interceptorsAreInitialized = false;
663 662
664 final Namer namer; 663 final Namer namer;
665 664
666 /** 665 /**
667 * Interface used to determine if an object has the JavaScript 666 * Interface used to determine if an object has the JavaScript
668 * indexing behavior. The interface is only visible to specific 667 * indexing behavior. The interface is only visible to specific
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after
782 jsFunctionClass = 781 jsFunctionClass =
783 compiler.findInterceptor(const SourceString('JSFunction')); 782 compiler.findInterceptor(const SourceString('JSFunction'));
784 jsBoolClass = 783 jsBoolClass =
785 compiler.findInterceptor(const SourceString('JSBool')); 784 compiler.findInterceptor(const SourceString('JSBool'));
786 jsArrayClass.ensureResolved(compiler); 785 jsArrayClass.ensureResolved(compiler);
787 jsArrayLength = 786 jsArrayLength =
788 jsArrayClass.lookupLocalMember(const SourceString('length')); 787 jsArrayClass.lookupLocalMember(const SourceString('length'));
789 jsStringClass.ensureResolved(compiler); 788 jsStringClass.ensureResolved(compiler);
790 jsStringLength = 789 jsStringLength =
791 jsStringClass.lookupLocalMember(const SourceString('length')); 790 jsStringClass.lookupLocalMember(const SourceString('length'));
792 listImplementation =
793 compiler.coreLibrary.find(const SourceString('ListImplementation'));
794 } 791 }
795 792
796 void addInterceptors(ClassElement cls) { 793 void addInterceptors(ClassElement cls) {
797 cls.ensureResolved(compiler); 794 cls.ensureResolved(compiler);
798 cls.forEachMember((ClassElement classElement, Element member) { 795 cls.forEachMember((ClassElement classElement, Element member) {
799 Set<Element> set = interceptedElements.putIfAbsent( 796 Set<Element> set = interceptedElements.putIfAbsent(
800 member.name, () => new Set<Element>()); 797 member.name, () => new Set<Element>());
801 set.add(member); 798 set.add(member);
802 }, 799 },
803 includeSuperMembers: true); 800 includeSuperMembers: true);
(...skipping 13 matching lines...) Expand all
817 enqueuer.registerInstantiatedClass(jsNullClass); 814 enqueuer.registerInstantiatedClass(jsNullClass);
818 } 815 }
819 if (jsFunctionClass != null) { 816 if (jsFunctionClass != null) {
820 addInterceptors(jsFunctionClass); 817 addInterceptors(jsFunctionClass);
821 enqueuer.registerInstantiatedClass(jsFunctionClass); 818 enqueuer.registerInstantiatedClass(jsFunctionClass);
822 } 819 }
823 enqueuer.addToWorkList(getInterceptorMethod); 820 enqueuer.addToWorkList(getInterceptorMethod);
824 } 821 }
825 if (cls == compiler.stringClass) { 822 if (cls == compiler.stringClass) {
826 result = jsStringClass; 823 result = jsStringClass;
827 } else if (cls == compiler.listClass || cls == listImplementation) { 824 } else if (cls == compiler.listClass) {
828 result = jsArrayClass; 825 result = jsArrayClass;
829 } else if (cls == compiler.intClass) { 826 } else if (cls == compiler.intClass) {
830 result = jsIntClass; 827 result = jsIntClass;
831 } else if (cls == compiler.doubleClass) { 828 } else if (cls == compiler.doubleClass) {
832 result = jsDoubleClass; 829 result = jsDoubleClass;
833 } else if (cls == compiler.functionClass) { 830 } else if (cls == compiler.functionClass) {
834 result = jsFunctionClass; 831 result = jsFunctionClass;
835 } else if (cls == compiler.boolClass) { 832 } else if (cls == compiler.boolClass) {
836 result = jsBoolClass; 833 result = jsBoolClass;
837 } 834 }
(...skipping 265 matching lines...) Expand 10 before | Expand all | Expand 10 after
1103 print("Inferred return types:"); 1100 print("Inferred return types:");
1104 print("----------------------"); 1101 print("----------------------");
1105 dumpReturnTypes(); 1102 dumpReturnTypes();
1106 print(""); 1103 print("");
1107 print("Inferred field types:"); 1104 print("Inferred field types:");
1108 print("------------------------"); 1105 print("------------------------");
1109 fieldTypes.dump(); 1106 fieldTypes.dump();
1110 print(""); 1107 print("");
1111 } 1108 }
1112 } 1109 }
OLDNEW
« no previous file with comments | « no previous file | sdk/lib/_internal/compiler/implementation/ssa/optimize.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698