| 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 'dart:async' show Future; | 7 import 'dart:async' show Future; |
| 8 | 8 |
| 9 import 'package:js_runtime/shared/embedded_names.dart' as embeddedNames; | 9 import 'package:js_runtime/shared/embedded_names.dart' as embeddedNames; |
| 10 | 10 |
| (...skipping 813 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 824 // constant emitter will generate a call to the createRuntimeType | 824 // constant emitter will generate a call to the createRuntimeType |
| 825 // helper so we register a use of that. | 825 // helper so we register a use of that. |
| 826 impactBuilder.registerStaticUse(new StaticUse.staticInvoke( | 826 impactBuilder.registerStaticUse(new StaticUse.staticInvoke( |
| 827 // TODO(johnniwinther): Find the right [CallStructure]. | 827 // TODO(johnniwinther): Find the right [CallStructure]. |
| 828 helpers.createRuntimeType, | 828 helpers.createRuntimeType, |
| 829 null)); | 829 null)); |
| 830 } | 830 } |
| 831 } | 831 } |
| 832 } | 832 } |
| 833 | 833 |
| 834 void onResolutionStart(ResolutionEnqueuer enqueuer) { |
| 835 helpers.onResolutionStart(); |
| 836 |
| 837 validateInterceptorImplementsAllObjectMethods(helpers.jsInterceptorClass); |
| 838 // The null-interceptor must also implement *all* methods. |
| 839 validateInterceptorImplementsAllObjectMethods(helpers.jsNullClass); |
| 840 } |
| 841 |
| 834 void onResolutionComplete( | 842 void onResolutionComplete( |
| 835 ClosedWorld closedWorld, ClosedWorldRefiner closedWorldRefiner) { | 843 ClosedWorld closedWorld, ClosedWorldRefiner closedWorldRefiner) { |
| 836 for (Entity entity in compiler.enqueuer.resolution.processedEntities) { | 844 for (Entity entity in compiler.enqueuer.resolution.processedEntities) { |
| 837 processAnnotations(entity, closedWorldRefiner); | 845 processAnnotations(entity, closedWorldRefiner); |
| 838 } | 846 } |
| 839 mirrorsData.computeMembersNeededForReflection( | 847 mirrorsData.computeMembersNeededForReflection( |
| 840 compiler.enqueuer.resolution.worldBuilder, closedWorld); | 848 compiler.enqueuer.resolution.worldBuilder, closedWorld); |
| 841 _backendUsage = _backendUsageBuilder.close(); | 849 _backendUsage = _backendUsageBuilder.close(); |
| 842 _rtiNeed = rtiNeedBuilder.computeRuntimeTypesNeed( | 850 _rtiNeed = rtiNeedBuilder.computeRuntimeTypesNeed( |
| 843 compiler.enqueuer.resolution.worldBuilder, | 851 compiler.enqueuer.resolution.worldBuilder, |
| (...skipping 326 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1170 | 1178 |
| 1171 // These methods are overwritten with generated versions. | 1179 // These methods are overwritten with generated versions. |
| 1172 inlineCache.markAsNonInlinable(helpers.getInterceptorMethod, | 1180 inlineCache.markAsNonInlinable(helpers.getInterceptorMethod, |
| 1173 insideLoop: true); | 1181 insideLoop: true); |
| 1174 | 1182 |
| 1175 specialOperatorEqClasses | 1183 specialOperatorEqClasses |
| 1176 ..add(commonElements.objectClass) | 1184 ..add(commonElements.objectClass) |
| 1177 ..add(helpers.jsInterceptorClass) | 1185 ..add(helpers.jsInterceptorClass) |
| 1178 ..add(helpers.jsNullClass); | 1186 ..add(helpers.jsNullClass); |
| 1179 | 1187 |
| 1180 validateInterceptorImplementsAllObjectMethods(helpers.jsInterceptorClass); | |
| 1181 // The null-interceptor must also implement *all* methods. | |
| 1182 validateInterceptorImplementsAllObjectMethods(helpers.jsNullClass); | |
| 1183 | |
| 1184 return new Future.value(); | 1188 return new Future.value(); |
| 1185 } | 1189 } |
| 1186 | 1190 |
| 1187 jsAst.Call generateIsJsIndexableCall( | 1191 jsAst.Call generateIsJsIndexableCall( |
| 1188 jsAst.Expression use1, jsAst.Expression use2) { | 1192 jsAst.Expression use1, jsAst.Expression use2) { |
| 1189 String dispatchPropertyName = embeddedNames.DISPATCH_PROPERTY_NAME; | 1193 String dispatchPropertyName = embeddedNames.DISPATCH_PROPERTY_NAME; |
| 1190 jsAst.Expression dispatchProperty = | 1194 jsAst.Expression dispatchProperty = |
| 1191 emitter.generateEmbeddedGlobalAccess(dispatchPropertyName); | 1195 emitter.generateEmbeddedGlobalAccess(dispatchPropertyName); |
| 1192 | 1196 |
| 1193 // We pass the dispatch property record to the isJsIndexable | 1197 // We pass the dispatch property record to the isJsIndexable |
| (...skipping 429 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1623 return _backend.defaultSuperclass(element); | 1627 return _backend.defaultSuperclass(element); |
| 1624 } | 1628 } |
| 1625 | 1629 |
| 1626 @override | 1630 @override |
| 1627 bool isNativeClass(ClassEntity element) => | 1631 bool isNativeClass(ClassEntity element) => |
| 1628 _backend.nativeClassData.isNativeClass(element); | 1632 _backend.nativeClassData.isNativeClass(element); |
| 1629 | 1633 |
| 1630 @override | 1634 @override |
| 1631 bool isForeign(Element element) => _backend.isForeign(element); | 1635 bool isForeign(Element element) => _backend.isForeign(element); |
| 1632 } | 1636 } |
| OLD | NEW |