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

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

Issue 12908006: Fix registering on interceptor classes: the resolution queue register abstract classes (Sring, List… (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 7 years, 9 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 | Annotate | Revision Log
« no previous file with comments | « no previous file | tests/language/interceptor8_test.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 974 matching lines...) Expand 10 before | Expand all | Expand 10 after
985 enqueuer.registerInstantiatedClass(compiler.closureClass, elements); 985 enqueuer.registerInstantiatedClass(compiler.closureClass, elements);
986 } else if (cls == compiler.mapClass) { 986 } else if (cls == compiler.mapClass) {
987 // The backend will use a literal list to initialize the entries 987 // The backend will use a literal list to initialize the entries
988 // of the map. 988 // of the map.
989 enqueuer.registerInstantiatedClass(compiler.listClass, elements); 989 enqueuer.registerInstantiatedClass(compiler.listClass, elements);
990 enqueuer.registerInstantiatedClass(mapLiteralClass, elements); 990 enqueuer.registerInstantiatedClass(mapLiteralClass, elements);
991 enqueueInResolution(getMapMaker(), elements); 991 enqueueInResolution(getMapMaker(), elements);
992 } 992 }
993 } 993 }
994 ClassElement result = null; 994 ClassElement result = null;
995 if (cls == compiler.stringClass) { 995 if (cls == compiler.stringClass || cls == jsStringClass) {
996 addInterceptors(jsStringClass, enqueuer, elements); 996 addInterceptors(jsStringClass, enqueuer, elements);
997 } else if (cls == compiler.listClass) { 997 } else if (cls == compiler.listClass
998 || cls == jsArrayClass
999 || cls == jsFixedArrayClass
1000 || cls == jsExtendableArrayClass) {
998 addInterceptors(jsArrayClass, enqueuer, elements); 1001 addInterceptors(jsArrayClass, enqueuer, elements);
999 enqueuer.registerInstantiatedClass(jsFixedArrayClass, elements); 1002 enqueuer.registerInstantiatedClass(jsFixedArrayClass, elements);
1000 enqueuer.registerInstantiatedClass(jsExtendableArrayClass, elements); 1003 enqueuer.registerInstantiatedClass(jsExtendableArrayClass, elements);
1001 } else if (cls == compiler.intClass) { 1004 } else if (cls == compiler.intClass || cls == jsIntClass) {
1002 addInterceptors(jsIntClass, enqueuer, elements); 1005 addInterceptors(jsIntClass, enqueuer, elements);
1003 addInterceptors(jsNumberClass, enqueuer, elements); 1006 addInterceptors(jsNumberClass, enqueuer, elements);
1004 } else if (cls == compiler.doubleClass) { 1007 } else if (cls == compiler.doubleClass || cls == jsDoubleClass) {
1005 addInterceptors(jsDoubleClass, enqueuer, elements); 1008 addInterceptors(jsDoubleClass, enqueuer, elements);
1006 addInterceptors(jsNumberClass, enqueuer, elements); 1009 addInterceptors(jsNumberClass, enqueuer, elements);
1007 } else if (cls == compiler.functionClass) { 1010 } else if (cls == compiler.functionClass || cls == jsFunctionClass) {
1008 addInterceptors(jsFunctionClass, enqueuer, elements); 1011 addInterceptors(jsFunctionClass, enqueuer, elements);
1009 } else if (cls == compiler.boolClass) { 1012 } else if (cls == compiler.boolClass || cls == jsBoolClass) {
1010 addInterceptors(jsBoolClass, enqueuer, elements); 1013 addInterceptors(jsBoolClass, enqueuer, elements);
1011 } else if (cls == compiler.nullClass) { 1014 } else if (cls == compiler.nullClass || cls == jsNullClass) {
1012 addInterceptors(jsNullClass, enqueuer, elements); 1015 addInterceptors(jsNullClass, enqueuer, elements);
1013 } else if (cls == compiler.numClass) { 1016 } else if (cls == compiler.numClass || cls == jsNumberClass) {
1014 addInterceptors(jsIntClass, enqueuer, elements); 1017 addInterceptors(jsIntClass, enqueuer, elements);
1015 addInterceptors(jsDoubleClass, enqueuer, elements); 1018 addInterceptors(jsDoubleClass, enqueuer, elements);
1016 addInterceptors(jsNumberClass, enqueuer, elements); 1019 addInterceptors(jsNumberClass, enqueuer, elements);
1017 } else if (cls == compiler.mapClass) {
1018 } else if (cls.isNative()) { 1020 } else if (cls.isNative()) {
1019 addInterceptorsForNativeClassMembers(cls, enqueuer); 1021 addInterceptorsForNativeClassMembers(cls, enqueuer);
1020 } 1022 }
1021 1023
1022 if (compiler.enableTypeAssertions) { 1024 if (compiler.enableTypeAssertions) {
1023 // We need to register is checks for assignments to fields. 1025 // We need to register is checks for assignments to fields.
1024 cls.forEachLocalMember((Element member) { 1026 cls.forEachLocalMember((Element member) {
1025 if (!member.isInstanceMember() || !member.isField()) return; 1027 if (!member.isInstanceMember() || !member.isField()) return;
1026 DartType type = member.computeType(compiler); 1028 DartType type = member.computeType(compiler);
1027 enqueuer.registerIsCheck(type, elements); 1029 enqueuer.registerIsCheck(type, elements);
(...skipping 639 matching lines...) Expand 10 before | Expand all | Expand 10 after
1667 ClassElement get constListImplementation => jsArrayClass; 1669 ClassElement get constListImplementation => jsArrayClass;
1668 ClassElement get fixedListImplementation => jsFixedArrayClass; 1670 ClassElement get fixedListImplementation => jsFixedArrayClass;
1669 ClassElement get growableListImplementation => jsExtendableArrayClass; 1671 ClassElement get growableListImplementation => jsExtendableArrayClass;
1670 ClassElement get mapImplementation => mapLiteralClass; 1672 ClassElement get mapImplementation => mapLiteralClass;
1671 ClassElement get constMapImplementation => constMapLiteralClass; 1673 ClassElement get constMapImplementation => constMapLiteralClass;
1672 ClassElement get functionImplementation => jsFunctionClass; 1674 ClassElement get functionImplementation => jsFunctionClass;
1673 ClassElement get typeImplementation => typeLiteralClass; 1675 ClassElement get typeImplementation => typeLiteralClass;
1674 ClassElement get boolImplementation => jsBoolClass; 1676 ClassElement get boolImplementation => jsBoolClass;
1675 ClassElement get nullImplementation => jsNullClass; 1677 ClassElement get nullImplementation => jsNullClass;
1676 } 1678 }
OLDNEW
« no previous file with comments | « no previous file | tests/language/interceptor8_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698