| Index: sdk/lib/_internal/compiler/implementation/js_backend/backend.dart
|
| ===================================================================
|
| --- sdk/lib/_internal/compiler/implementation/js_backend/backend.dart (revision 15190)
|
| +++ sdk/lib/_internal/compiler/implementation/js_backend/backend.dart (working copy)
|
| @@ -655,6 +655,9 @@
|
| ClassElement jsNullClass;
|
| ClassElement jsBoolClass;
|
| ClassElement objectInterceptorClass;
|
| + ClassElement listImplementation;
|
| + Element jsArrayLength;
|
| + Element jsStringLength;
|
| Element getInterceptorMethod;
|
| bool _interceptorsAreInitialized = false;
|
|
|
| @@ -771,6 +774,14 @@
|
| compiler.findInterceptor(const SourceString('JSFunction'));
|
| jsBoolClass =
|
| compiler.findInterceptor(const SourceString('JSBool'));
|
| + jsArrayClass.ensureResolved(compiler);
|
| + jsArrayLength =
|
| + jsArrayClass.lookupLocalMember(const SourceString('length'));
|
| + jsStringClass.ensureResolved(compiler);
|
| + jsStringLength =
|
| + jsStringClass.lookupLocalMember(const SourceString('length'));
|
| + listImplementation =
|
| + compiler.coreLibrary.find(const SourceString('ListImplementation'));
|
| }
|
|
|
| void addInterceptors(ClassElement cls) {
|
| @@ -804,7 +815,7 @@
|
| }
|
| if (cls == compiler.stringClass) {
|
| result = jsStringClass;
|
| - } else if (cls == compiler.listClass) {
|
| + } else if (cls == compiler.listClass || cls == listImplementation) {
|
| result = jsArrayClass;
|
| } else if (cls == compiler.intClass) {
|
| result = jsIntClass;
|
|
|