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

Unified Diff: pkg/compiler/lib/src/inferrer/concrete_types_inferrer.dart

Issue 1182053010: Revert "Split TypedSelector into Selector and TypeMask." (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Created 5 years, 6 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/inferrer/concrete_types_inferrer.dart
diff --git a/pkg/compiler/lib/src/inferrer/concrete_types_inferrer.dart b/pkg/compiler/lib/src/inferrer/concrete_types_inferrer.dart
index 9369d1def75adfd38a67745050625a8b004259d1..298e97e41fbfd6066b299c717dcdc69f53f58b3d 100644
--- a/pkg/compiler/lib/src/inferrer/concrete_types_inferrer.dart
+++ b/pkg/compiler/lib/src/inferrer/concrete_types_inferrer.dart
@@ -517,8 +517,9 @@ class ConcreteTypeSystem extends TypeSystem<ConcreteType> {
}
@override
- TypeMask newTypedSelector(ConcreteType receiver, TypeMask mask) {
- return concreteTypeToTypeMask(receiver);
+ Selector newTypedSelector(ConcreteType receiver, Selector selector) {
+ return new TypedSelector(concreteTypeToTypeMask(receiver), selector,
+ compiler.world);
}
@override
@@ -573,14 +574,12 @@ class ConcreteTypeSystem extends TypeSystem<ConcreteType> {
}
@override
- bool selectorNeedsUpdate(ConcreteType type, TypeMask mask) {
- return concreteTypeToTypeMask(type) != mask;
+ bool selectorNeedsUpdate(ConcreteType type, Selector selector) {
+ return concreteTypeToTypeMask(type) != selector.mask;
}
@override
- ConcreteType refineReceiver(Selector selector,
- TypeMask mask,
- ConcreteType receiverType,
+ ConcreteType refineReceiver(Selector selector, ConcreteType receiverType,
bool isConditional) {
if (isConditional) {
throw new UnimplementedError("isConditional in concrete type inferrer");
@@ -993,9 +992,7 @@ class DynamicTypeMask implements TypeMask {
throw new UnsupportedError("");
}
- Element locateSingleElement(Selector selector,
- TypeMask mask,
- Compiler compiler) {
+ Element locateSingleElement(Selector selector, Compiler compiler) {
throw new UnsupportedError("");
}
@@ -1281,12 +1278,12 @@ class ConcreteTypesInferrer
*
* Precondition: [:(typeOfThis != null) && (returnType != null):]
*/
- void augmentInferredSelectorType(Selector selector,
- TypeMask typeOfThis,
+ void augmentInferredSelectorType(Selector selector, TypeMask typeOfThis,
TypeMask returnType) {
assert(returnType != null);
assert(typeOfThis != null);
+ selector = selector.asUntyped;
Map<TypeMask, TypeMask> currentMap = inferredSelectorTypes.putIfAbsent(
selector, () => new Map<TypeMask, TypeMask>());
TypeMask currentReturnType = currentMap[typeOfThis];
@@ -1495,19 +1492,21 @@ class ConcreteTypesInferrer
* "I don't know".
*/
@override
- TypeMask getTypeOfSelector(Selector selector, TypeMask mask) {
- Map<TypeMask, TypeMask> candidates = inferredSelectorTypes[selector];
+ TypeMask getTypeOfSelector(Selector selector) {
+ Map<TypeMask, TypeMask> candidates =
+ inferredSelectorTypes[selector.asUntyped];
if (candidates == null) {
return null;
}
TypeMask result = new TypeMask.nonNullEmpty();
- if (mask == null) {
+ if (selector.mask == null) {
candidates.forEach((TypeMask receiverType, TypeMask returnType) {
result = typeMaskUnion(result, returnType);
});
} else {
candidates.forEach((TypeMask receiverType, TypeMask returnType) {
- TypeMask intersection = receiverType.intersection(mask, compiler.world);
+ TypeMask intersection =
+ receiverType.intersection(selector.mask, compiler.world);
if (!intersection.isEmpty || intersection.isNullable) {
result = typeMaskUnion(result, returnType);
}
@@ -1919,9 +1918,7 @@ class ConcreteTypesInferrer
}
@override
- void forEachElementMatching(Selector selector,
- TypeMask mask,
- bool f(Element element)) {
+ void forEachElementMatching(Selector selector, bool f(Element element)) {
getMembersBySelector(selector).forEach(f);
}
@@ -1991,7 +1988,6 @@ class ConcreteTypesInferrer
@override
ConcreteType registerCalledElement(Spannable node,
Selector selector,
- TypeMask mask,
Element caller,
Element callee,
ArgumentsTypes<ConcreteType> arguments,
@@ -2071,7 +2067,6 @@ class ConcreteTypesInferrer
@override
ConcreteType registerCalledSelector(Node node,
Selector selector,
- TypeMask mask,
ConcreteType receiverType,
Element caller,
ArgumentsTypes<ConcreteType> arguments,
@@ -2259,7 +2254,6 @@ class ConcreteTypesInferrer
@override
ConcreteType registerCalledClosure(Node node,
Selector selector,
- TypeMask mask,
ConcreteType closure,
Element caller,
ArgumentsTypes<ConcreteType> arguments,
« no previous file with comments | « pkg/compiler/lib/src/inferrer/closure_tracer.dart ('k') | pkg/compiler/lib/src/inferrer/inferrer_visitor.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698