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

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

Issue 11348281: Put back manual inlining of List.add, List.removeLast, String.split and String.concat. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 8 years 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
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 616 matching lines...) Expand 10 before | Expand all | Expand 10 after
627 ClassElement jsArrayClass; 627 ClassElement jsArrayClass;
628 ClassElement jsNumberClass; 628 ClassElement jsNumberClass;
629 ClassElement jsIntClass; 629 ClassElement jsIntClass;
630 ClassElement jsDoubleClass; 630 ClassElement jsDoubleClass;
631 ClassElement jsFunctionClass; 631 ClassElement jsFunctionClass;
632 ClassElement jsNullClass; 632 ClassElement jsNullClass;
633 ClassElement jsBoolClass; 633 ClassElement jsBoolClass;
634 ClassElement objectInterceptorClass; 634 ClassElement objectInterceptorClass;
635 Element jsArrayLength; 635 Element jsArrayLength;
636 Element jsStringLength; 636 Element jsStringLength;
637 Element jsArrayRemoveLast;
638 Element jsArrayAdd;
639 Element jsStringSplit;
640 Element jsStringConcat;
637 Element getInterceptorMethod; 641 Element getInterceptorMethod;
638 bool _interceptorsAreInitialized = false; 642 bool _interceptorsAreInitialized = false;
639 643
640 final Namer namer; 644 final Namer namer;
641 645
642 /** 646 /**
643 * Interface used to determine if an object has the JavaScript 647 * Interface used to determine if an object has the JavaScript
644 * indexing behavior. The interface is only visible to specific 648 * indexing behavior. The interface is only visible to specific
645 * libraries. 649 * libraries.
646 */ 650 */
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after
765 jsIntClass = compiler.findInterceptor(const SourceString('JSInt')), 769 jsIntClass = compiler.findInterceptor(const SourceString('JSInt')),
766 jsDoubleClass = compiler.findInterceptor(const SourceString('JSDouble')), 770 jsDoubleClass = compiler.findInterceptor(const SourceString('JSDouble')),
767 jsNullClass = compiler.findInterceptor(const SourceString('JSNull')), 771 jsNullClass = compiler.findInterceptor(const SourceString('JSNull')),
768 jsFunctionClass = 772 jsFunctionClass =
769 compiler.findInterceptor(const SourceString('JSFunction')), 773 compiler.findInterceptor(const SourceString('JSFunction')),
770 jsBoolClass = compiler.findInterceptor(const SourceString('JSBool'))]; 774 jsBoolClass = compiler.findInterceptor(const SourceString('JSBool'))];
771 775
772 jsArrayClass.ensureResolved(compiler); 776 jsArrayClass.ensureResolved(compiler);
773 jsArrayLength = 777 jsArrayLength =
774 jsArrayClass.lookupLocalMember(const SourceString('length')); 778 jsArrayClass.lookupLocalMember(const SourceString('length'));
779 jsArrayRemoveLast =
780 jsArrayClass.lookupLocalMember(const SourceString('removeLast'));
ahe 2012/11/30 08:11:42 I think you need to check that you can actually fi
781 jsArrayAdd =
782 jsArrayClass.lookupLocalMember(const SourceString('add'));
775 783
776 jsStringClass.ensureResolved(compiler); 784 jsStringClass.ensureResolved(compiler);
777 jsStringLength = 785 jsStringLength =
778 jsStringClass.lookupLocalMember(const SourceString('length')); 786 jsStringClass.lookupLocalMember(const SourceString('length'));
787 jsStringSplit =
788 jsStringClass.lookupLocalMember(const SourceString('split'));
789 jsStringConcat =
790 jsStringClass.lookupLocalMember(const SourceString('concat'));
779 791
780 for (ClassElement cls in classes) { 792 for (ClassElement cls in classes) {
781 if (cls != null) interceptedClasses[cls] = null; 793 if (cls != null) interceptedClasses[cls] = null;
782 } 794 }
783 } 795 }
784 796
785 void addInterceptors(ClassElement cls) { 797 void addInterceptors(ClassElement cls) {
786 cls.ensureResolved(compiler); 798 cls.ensureResolved(compiler);
787 cls.forEachMember((ClassElement classElement, Element member) { 799 cls.forEachMember((ClassElement classElement, Element member) {
788 Set<Element> set = interceptedElements.putIfAbsent( 800 Set<Element> set = interceptedElements.putIfAbsent(
(...skipping 315 matching lines...) Expand 10 before | Expand all | Expand 10 after
1104 print("Inferred return types:"); 1116 print("Inferred return types:");
1105 print("----------------------"); 1117 print("----------------------");
1106 dumpReturnTypes(); 1118 dumpReturnTypes();
1107 print(""); 1119 print("");
1108 print("Inferred field types:"); 1120 print("Inferred field types:");
1109 print("------------------------"); 1121 print("------------------------");
1110 fieldTypes.dump(); 1122 fieldTypes.dump();
1111 print(""); 1123 print("");
1112 } 1124 }
1113 } 1125 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698