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

Unified Diff: pkg/compiler/lib/src/js_model/js_strategy.dart

Issue 2975433002: Assert that we don't mix K and J elements (Closed)
Patch Set: Updated cf. comments Created 3 years, 5 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « pkg/compiler/lib/src/js_model/elements.dart ('k') | pkg/compiler/lib/src/kernel/element_map_impl.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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));
+ }
+}
« no previous file with comments | « pkg/compiler/lib/src/js_model/elements.dart ('k') | pkg/compiler/lib/src/kernel/element_map_impl.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698