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 '../common.dart'; | 7 import '../common.dart'; |
8 import '../common/backend_api.dart' | 8 import '../common/backend_api.dart' |
9 show ForeignResolver, NativeRegistry, ImpactTransformer; | 9 show ForeignResolver, NativeRegistry, ImpactTransformer; |
10 import '../common/codegen.dart' show CodegenWorkItem; | 10 import '../common/codegen.dart' show CodegenWorkItem; |
(...skipping 888 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
899 .transformCodegenImpact(work.registry.worldImpact); | 899 .transformCodegenImpact(work.registry.worldImpact); |
900 compiler.dumpInfoTask.registerImpact(element, worldImpact); | 900 compiler.dumpInfoTask.registerImpact(element, worldImpact); |
901 return worldImpact; | 901 return worldImpact; |
902 } | 902 } |
903 | 903 |
904 native.NativeResolutionEnqueuer get nativeResolutionEnqueuerForTesting => | 904 native.NativeResolutionEnqueuer get nativeResolutionEnqueuerForTesting => |
905 _nativeResolutionEnqueuer; | 905 _nativeResolutionEnqueuer; |
906 | 906 |
907 native.NativeEnqueuer get nativeCodegenEnqueuer => _nativeCodegenEnqueuer; | 907 native.NativeEnqueuer get nativeCodegenEnqueuer => _nativeCodegenEnqueuer; |
908 | 908 |
909 ClassElement defaultSuperclass(CommonElements commonElements, | |
910 NativeBasicData nativeBasicData, ClassElement element) { | |
911 if (nativeBasicData.isJsInteropClass(element)) { | |
912 return commonElements.jsJavaScriptObjectClass; | |
913 } | |
914 // Native classes inherit from Interceptor. | |
915 return nativeBasicData.isNativeClass(element) | |
916 ? commonElements.jsInterceptorClass | |
917 : commonElements.objectClass; | |
918 } | |
919 | |
920 /** | 909 /** |
921 * Unit test hook that returns code of an element as a String. | 910 * Unit test hook that returns code of an element as a String. |
922 * | 911 * |
923 * Invariant: [element] must be a declaration element. | 912 * Invariant: [element] must be a declaration element. |
924 */ | 913 */ |
925 String getGeneratedCode(Element element) { | 914 String getGeneratedCode(Element element) { |
926 assert(element.isDeclaration, failedAt(element)); | 915 assert(element.isDeclaration, failedAt(element)); |
927 return jsAst.prettyPrint(generatedCode[element], compiler.options); | 916 return jsAst.prettyPrint(generatedCode[element], compiler.options); |
928 } | 917 } |
929 | 918 |
(...skipping 399 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1329 return _backend.resolveForeignCall(node, element, callStructure, resolver); | 1318 return _backend.resolveForeignCall(node, element, callStructure, resolver); |
1330 } | 1319 } |
1331 | 1320 |
1332 @override | 1321 @override |
1333 bool isDefaultNoSuchMethod(MethodElement element) { | 1322 bool isDefaultNoSuchMethod(MethodElement element) { |
1334 return _commonElements.isDefaultNoSuchMethodImplementation(element); | 1323 return _commonElements.isDefaultNoSuchMethodImplementation(element); |
1335 } | 1324 } |
1336 | 1325 |
1337 @override | 1326 @override |
1338 ClassElement defaultSuperclass(ClassElement element) { | 1327 ClassElement defaultSuperclass(ClassElement element) { |
1339 return _backend.defaultSuperclass( | 1328 return _commonElements.getDefaultSuperclass( |
1340 _commonElements, _backend.frontendStrategy.nativeBasicData, element); | 1329 element, _backend.frontendStrategy.nativeBasicData); |
1341 } | 1330 } |
1342 | 1331 |
1343 @override | 1332 @override |
1344 bool isNativeClass(ClassEntity element) => | 1333 bool isNativeClass(ClassEntity element) => |
1345 _backend.compiler.frontendStrategy.nativeBasicData.isNativeClass(element); | 1334 _backend.compiler.frontendStrategy.nativeBasicData.isNativeClass(element); |
1346 | 1335 |
1347 @override | 1336 @override |
1348 bool isForeign(Element element) => | 1337 bool isForeign(Element element) => |
1349 _backend.isForeign(_commonElements, element); | 1338 _backend.isForeign(_commonElements, element); |
1350 } | 1339 } |
(...skipping 15 matching lines...) Expand all Loading... |
1366 | 1355 |
1367 bool canUseAliasedSuperMember(MemberEntity member, Selector selector) { | 1356 bool canUseAliasedSuperMember(MemberEntity member, Selector selector) { |
1368 return !selector.isGetter; | 1357 return !selector.isGetter; |
1369 } | 1358 } |
1370 | 1359 |
1371 /// Returns `true` if [member] is called from a subclass via `super`. | 1360 /// Returns `true` if [member] is called from a subclass via `super`. |
1372 bool isAliasedSuperMember(MemberEntity member) { | 1361 bool isAliasedSuperMember(MemberEntity member) { |
1373 return _aliasedSuperMembers.contains(member); | 1362 return _aliasedSuperMembers.contains(member); |
1374 } | 1363 } |
1375 } | 1364 } |
OLD | NEW |