| 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,
|
|
|