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

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

Issue 2961313002: Always store GlobalTypeInferenceElementData on the member context (Closed)
Patch Set: Updated cf. comments. Created 3 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
« no previous file with comments | « pkg/compiler/lib/src/inferrer/type_graph_inferrer.dart ('k') | pkg/compiler/lib/src/types/types.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/compiler/lib/src/inferrer/type_graph_nodes.dart
diff --git a/pkg/compiler/lib/src/inferrer/type_graph_nodes.dart b/pkg/compiler/lib/src/inferrer/type_graph_nodes.dart
index 10d105240add8b9cbd4b775d346e3b37f8f2e36e..b7b1183fced1ee0034ddec6180a91ff59400de0a 100644
--- a/pkg/compiler/lib/src/inferrer/type_graph_nodes.dart
+++ b/pkg/compiler/lib/src/inferrer/type_graph_nodes.dart
@@ -409,7 +409,7 @@ class MemberTypeInformation extends ElementTypeInformation
* The global information is summarized in [cleanup], after which [_callers]
* is set to `null`.
*/
- Map<Element, Setlet<Spannable>> _callers;
+ Map<MemberElement, Setlet<Spannable>> _callers;
MemberTypeInformation._internal(Element element)
: super._internal(null, element);
@@ -424,31 +424,13 @@ class MemberTypeInformation extends ElementTypeInformation
String get debugName => '$member';
- void addCallFromMember(MemberElement caller, Spannable node) {
- _addCall(caller, node);
- }
-
- @deprecated
- void addCallFromLocalFunction(LocalFunctionElement caller, Spannable node) {
- _addCall(caller, node);
- }
-
- void _addCall(Element caller, Spannable node) {
+ void addCall(MemberElement caller, Spannable node) {
assert(node is ast.Node || node is Element);
- _callers ??= <Element, Setlet<Spannable>>{};
+ _callers ??= <MemberElement, Setlet<Spannable>>{};
_callers.putIfAbsent(caller, () => new Setlet()).add(node);
}
- void removeCallFromMember(MemberElement caller, node) {
- _removeCall(caller, node);
- }
-
- @deprecated
- void removeCallFromLocalFunction(LocalFunctionElement caller, node) {
- _removeCall(caller, node);
- }
-
- void _removeCall(Element caller, node) {
+ void removeCall(MemberElement caller, node) {
if (_callers == null) return;
Setlet calls = _callers[caller];
if (calls == null) return;
@@ -458,7 +440,7 @@ class MemberTypeInformation extends ElementTypeInformation
}
}
- Iterable<Element> get callers {
+ Iterable<MemberElement> get callers {
// TODO(sra): This is called only from an unused API and a test. If it
// becomes used, [cleanup] will need to copy `_caller.keys`.
@@ -796,8 +778,7 @@ class ParameterTypeInformation extends ElementTypeInformation {
abstract class CallSiteTypeInformation extends TypeInformation
with ApplyableTypeInformation {
final Spannable call;
- // TODO(johnniwinther): [caller] should always be a [MemberElement].
- final /*LocalFunctionElement|MemberElement*/ Element caller;
+ final MemberElement caller;
final Selector selector;
final TypeMask mask;
final ArgumentsTypes arguments;
@@ -822,7 +803,7 @@ class StaticCallSiteTypeInformation extends CallSiteTypeInformation {
StaticCallSiteTypeInformation(
MemberTypeInformation context,
Spannable call,
- Element enclosing,
+ MemberElement enclosing,
MemberElement calledElement,
Selector selector,
TypeMask mask,
@@ -834,7 +815,7 @@ class StaticCallSiteTypeInformation extends CallSiteTypeInformation {
StaticCallSiteTypeInformation.internal(
MemberTypeInformation context,
Spannable call,
- Element enclosing,
+ MemberElement enclosing,
this.calledElement,
Selector selector,
TypeMask mask,
@@ -848,11 +829,7 @@ class StaticCallSiteTypeInformation extends CallSiteTypeInformation {
void addToGraph(InferrerEngine inferrer) {
MemberTypeInformation callee = _getCalledTypeInfo(inferrer);
- if (caller.isLocal) {
- callee.addCallFromLocalFunction(caller, call);
- } else {
- callee.addCallFromMember(caller, call);
- }
+ callee.addCall(caller, call);
callee.addUser(this);
if (arguments != null) {
arguments.forEach((info) => info.addUser(this));
@@ -912,7 +889,7 @@ class LocalFunctionCallSiteTypeInformation
LocalFunctionCallSiteTypeInformation(
MemberTypeInformation context,
Spannable call,
- Element enclosing,
+ MemberElement enclosing,
LocalFunctionElement calledElement,
Selector selector,
TypeMask mask,
@@ -939,7 +916,7 @@ class DynamicCallSiteTypeInformation extends CallSiteTypeInformation {
DynamicCallSiteTypeInformation(
MemberTypeInformation context,
Spannable call,
- Element enclosing,
+ MemberElement enclosing,
Selector selector,
TypeMask mask,
this.receiver,
@@ -958,11 +935,7 @@ class DynamicCallSiteTypeInformation extends CallSiteTypeInformation {
for (MemberElement element in targets) {
MemberTypeInformation callee =
inferrer.types.getInferredTypeOfMember(element);
- if (caller.isLocal) {
- callee.addCallFromLocalFunction(caller, call);
- } else {
- callee.addCallFromMember(caller, call);
- }
+ callee.addCall(caller, call);
callee.addUser(this);
inferrer.updateParameterAssignments(
this, element, arguments, selector, typeMask,
@@ -1109,11 +1082,7 @@ class DynamicCallSiteTypeInformation extends CallSiteTypeInformation {
TypeMask computeType(InferrerEngine inferrer) {
Iterable<MemberEntity> oldTargets = targets;
TypeMask typeMask = computeTypedSelector(inferrer);
- if (caller.isLocal) {
- inferrer.updateSelectorInLocalFunction(caller, call, selector, typeMask);
- } else {
- inferrer.updateSelectorInMember(caller, call, selector, typeMask);
- }
+ inferrer.updateSelectorInMember(caller, call, selector, typeMask);
TypeMask maskToUse =
inferrer.closedWorld.extendMaskIfReachesAll(selector, typeMask);
@@ -1138,11 +1107,7 @@ class DynamicCallSiteTypeInformation extends CallSiteTypeInformation {
MemberElement element = _element;
MemberTypeInformation callee =
inferrer.types.getInferredTypeOfMember(element);
- if (caller.isLocal) {
- callee.addCallFromLocalFunction(caller, call);
- } else {
- callee.addCallFromMember(caller, call);
- }
+ callee.addCall(caller, call);
callee.addUser(this);
inferrer.updateParameterAssignments(
this, element, arguments, selector, typeMask,
@@ -1156,11 +1121,7 @@ class DynamicCallSiteTypeInformation extends CallSiteTypeInformation {
MemberElement element = _element;
MemberTypeInformation callee =
inferrer.types.getInferredTypeOfMember(element);
- if (caller.isLocal) {
- callee.removeCallFromLocalFunction(caller, call);
- } else {
- callee.removeCallFromMember(caller, call);
- }
+ callee.removeCall(caller, call);
callee.removeUser(this);
inferrer.updateParameterAssignments(
this, element, arguments, selector, typeMask,
@@ -1230,22 +1191,14 @@ class DynamicCallSiteTypeInformation extends CallSiteTypeInformation {
void giveUp(InferrerEngine inferrer, {bool clearAssignments: true}) {
if (!abandonInferencing) {
- if (caller.isLocal) {
- inferrer.updateSelectorInLocalFunction(caller, call, selector, mask);
- } else {
- inferrer.updateSelectorInMember(caller, call, selector, mask);
- }
+ inferrer.updateSelectorInMember(caller, call, selector, mask);
Iterable<MemberEntity> oldTargets = targets;
targets = inferrer.closedWorld.locateMembers(selector, mask);
for (MemberElement element in targets) {
if (!oldTargets.contains(element)) {
MemberTypeInformation callee =
inferrer.types.getInferredTypeOfMember(element);
- if (caller.isLocal) {
- callee.addCallFromLocalFunction(caller, call);
- } else {
- callee.addCallFromMember(caller, call);
- }
+ callee.addCall(caller, call);
inferrer.updateParameterAssignments(
this, element, arguments, selector, mask,
remove: false, addToQueue: true);
@@ -1290,7 +1243,7 @@ class ClosureCallSiteTypeInformation extends CallSiteTypeInformation {
ClosureCallSiteTypeInformation(
MemberTypeInformation context,
Spannable call,
- Element enclosing,
+ MemberElement enclosing,
Selector selector,
TypeMask mask,
this.closure,
« no previous file with comments | « pkg/compiler/lib/src/inferrer/type_graph_inferrer.dart ('k') | pkg/compiler/lib/src/types/types.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698