| Index: pkg/compiler/lib/src/js_model/js_strategy.dart
|
| diff --git a/pkg/compiler/lib/src/js_model/js_strategy.dart b/pkg/compiler/lib/src/js_model/js_strategy.dart
|
| index 43a2a78b5cbfd4123e0b6d91c2491d8cfab53c7b..aef74210117f49af1b08409fa7c1440e40ef423f 100644
|
| --- a/pkg/compiler/lib/src/js_model/js_strategy.dart
|
| +++ b/pkg/compiler/lib/src/js_model/js_strategy.dart
|
| @@ -19,6 +19,7 @@ import '../js_backend/backend_usage.dart';
|
| import '../js_backend/constant_system_javascript.dart';
|
| import '../js_backend/interceptor_data.dart';
|
| import '../js_backend/native_data.dart';
|
| +import '../js_backend/runtime_types.dart';
|
| import '../kernel/element_map.dart';
|
| import '../kernel/element_map_impl.dart';
|
| import '../kernel/kernel_backend_strategy.dart';
|
| @@ -142,6 +143,12 @@ class JsBackendStrategy implements KernelBackendStrategy {
|
| Iterable<MemberEntity> assignedInstanceMembers =
|
| closedWorld.assignedInstanceMembers.map(_map.toBackendMember).toList();
|
|
|
| + Iterable<ClassEntity> liveNativeClasses =
|
| + closedWorld.liveNativeClasses.map(_map.toBackendClass).toList();
|
| +
|
| + RuntimeTypesNeed rtiNeed =
|
| + new JsRuntimeTypesNeed(_map, closedWorld.rtiNeed);
|
| +
|
| return new JsClosedWorld(_elementMap,
|
| elementEnvironment: _elementEnvironment,
|
| dartTypes: _elementMap.types,
|
| @@ -150,9 +157,11 @@ class JsBackendStrategy implements KernelBackendStrategy {
|
| backendUsage: backendUsage,
|
| nativeData: nativeData,
|
| interceptorData: interceptorData,
|
| + rtiNeed: rtiNeed,
|
| classHierarchyNodes: classHierarchyNodes,
|
| classSets: classSets,
|
| implementedClasses: implementedClasses,
|
| + liveNativeClasses: liveNativeClasses,
|
| liveInstanceMembers: liveInstanceMembers,
|
| assignedInstanceMembers: assignedInstanceMembers,
|
| mixinUses: mixinUses,
|
| @@ -200,3 +209,35 @@ class JsBackendStrategy implements KernelBackendStrategy {
|
| selectorConstraintsStrategy);
|
| }
|
| }
|
| +
|
| +class JsRuntimeTypesNeed implements RuntimeTypesNeed {
|
| + final JsToFrontendMap _map;
|
| + final RuntimeTypesNeed _rtiNeed;
|
| +
|
| + JsRuntimeTypesNeed(this._map, this._rtiNeed);
|
| +
|
| + @override
|
| + bool classNeedsRti(ClassEntity cls) {
|
| + return _rtiNeed.classNeedsRti(_map.toFrontendClass(cls));
|
| + }
|
| +
|
| + @override
|
| + bool classUsesTypeVariableExpression(ClassEntity cls) {
|
| + return _rtiNeed.classUsesTypeVariableExpression(_map.toFrontendClass(cls));
|
| + }
|
| +
|
| + @override
|
| + bool localFunctionNeedsRti(Local function) {
|
| + throw new UnimplementedError('JsRuntimeTypesNeed.localFunctionNeedsRti');
|
| + }
|
| +
|
| + @override
|
| + bool methodNeedsRti(FunctionEntity function) {
|
| + return _rtiNeed.methodNeedsRti(_map.toFrontendMember(function));
|
| + }
|
| +
|
| + @override
|
| + bool classNeedsRtiField(ClassEntity cls) {
|
| + return _rtiNeed.classNeedsRtiField(_map.toFrontendClass(cls));
|
| + }
|
| +}
|
|
|