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

Unified Diff: pkg/compiler/lib/src/js_emitter/type_test_registry.dart

Issue 2884233002: Use entities in runtime_types (Closed)
Patch Set: Updated cf. comments Created 3 years, 7 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
Index: pkg/compiler/lib/src/js_emitter/type_test_registry.dart
diff --git a/pkg/compiler/lib/src/js_emitter/type_test_registry.dart b/pkg/compiler/lib/src/js_emitter/type_test_registry.dart
index bf79f29a1af5b4366551c916bfe8f30b40d31d78..2df546a49bc23eb36f3ee27ddd0a282af50af692 100644
--- a/pkg/compiler/lib/src/js_emitter/type_test_registry.dart
+++ b/pkg/compiler/lib/src/js_emitter/type_test_registry.dart
@@ -5,6 +5,7 @@
library dart2js.js_emitter.type_test_registry;
import '../common.dart';
+import '../common_elements.dart';
import '../elements/elements.dart'
show ClassElement, Element, ElementKind, MemberElement, MethodElement;
import '../elements/entities.dart';
@@ -15,7 +16,8 @@ import '../elements/resolution_types.dart'
ResolutionInterfaceType,
Types,
ResolutionTypeVariableType;
-import '../js_backend/js_backend.dart'
+import '../elements/types.dart';
+import '../js_backend/runtime_types.dart'
show
RuntimeTypesChecks,
RuntimeTypesChecksBuilder,
@@ -26,6 +28,8 @@ import '../universe/world_builder.dart';
import '../world.dart' show ClosedWorld;
class TypeTestRegistry {
+ final ElementEnvironment _elementEnvironment;
+
/**
* Raw ClassElement symbols occurring in is-checks and type assertions. If the
* program contains parameterized checks `x is Set<int>` and
@@ -61,7 +65,8 @@ class TypeTestRegistry {
RuntimeTypesChecks _rtiChecks;
- TypeTestRegistry(this._codegenWorldBuilder, this._closedWorld);
+ TypeTestRegistry(
+ this._codegenWorldBuilder, this._closedWorld, this._elementEnvironment);
RuntimeTypesChecks get rtiChecks {
assert(invariant(NO_LOCATION_SPANNABLE, _rtiChecks != null,
@@ -104,8 +109,8 @@ class TypeTestRegistry {
}
}
- void addClassesWithSuperclasses(Iterable<ClassElement> classes) {
- for (ClassElement cls in classes) {
+ void addClassesWithSuperclasses(Iterable<ClassEntity> classes) {
+ for (ClassEntity cls in classes) {
addClassWithSuperclasses(cls);
}
}
@@ -120,7 +125,7 @@ class TypeTestRegistry {
// their superclasses.
TypeChecks requiredChecks =
rtiSubstitutions.computeChecks(rtiNeededClasses, checkedClasses);
- Set<ClassElement> classesUsedInSubstitutions =
+ Set<ClassEntity> classesUsedInSubstitutions =
rtiSubstitutions.getClassesUsedInSubstitutions(requiredChecks);
addClassesWithSuperclasses(classesUsedInSubstitutions);
@@ -163,11 +168,11 @@ class TypeTestRegistry {
liveMembers.where((MemberElement element) {
return canBeReflectedAsFunction(element) && canBeReified(element);
}).forEach((MethodElement function) {
- ResolutionDartType type = function.type;
- for (ClassElement cls in _rtiChecks.getReferencedClasses(type)) {
+ FunctionType type = function.type;
+ for (ClassEntity cls in _rtiChecks.getReferencedClasses(type)) {
while (cls != null) {
_rtiNeededClasses.add(cls);
- cls = cls.superclass;
+ cls = _elementEnvironment.getSuperClass(cls);
}
}
});
@@ -178,7 +183,7 @@ class TypeTestRegistry {
rtiChecksBuilder.registerImplicitChecks(
_codegenWorldBuilder, classesUsingTypeVariableTests);
- _rtiChecks = rtiChecksBuilder.computeRequiredChecks();
+ _rtiChecks = rtiChecksBuilder.computeRequiredChecks(_codegenWorldBuilder);
checkedClasses = new Set<ClassElement>();
checkedFunctionTypes = new Set<ResolutionFunctionType>();
« no previous file with comments | « pkg/compiler/lib/src/js_emitter/runtime_type_generator.dart ('k') | pkg/compiler/lib/src/kernel/kernel_strategy.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698