| 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 974e2d89d039f4677862f8bc8f9011fae6bb0339..98a9309d35567c9fd3ce8f42a27751f82b804289 100644
|
| --- a/pkg/compiler/lib/src/inferrer/type_graph_nodes.dart
|
| +++ b/pkg/compiler/lib/src/inferrer/type_graph_nodes.dart
|
| @@ -237,12 +237,6 @@ abstract class TypeInformation {
|
| abandonInferencing = false;
|
| doNotEnqueue = false;
|
| }
|
| -
|
| - /// Destroys information not needed after type inference.
|
| - void cleanup() {
|
| - users = null;
|
| - _assignments = null;
|
| - }
|
| }
|
|
|
| abstract class ApplyableTypeInformation implements TypeInformation {
|
| @@ -391,10 +385,6 @@ class MemberTypeInformation extends ElementTypeInformation
|
| */
|
| int closurizedCount = 0;
|
|
|
| - // Strict `bool` value is computed in cleanup(). Also used as a flag to see if
|
| - // cleanup has been called.
|
| - bool _isCalledOnce = null;
|
| -
|
| /**
|
| * This map contains the callers of [element]. It stores all unique call sites
|
| * to enable counting the global number of call sites of [element].
|
| @@ -402,23 +392,18 @@ class MemberTypeInformation extends ElementTypeInformation
|
| * A call site is either an AST [ast.Node], a [cps_ir.Node] or in the case of
|
| * synthesized calls, an [Element] (see uses of [synthesizeForwardingCall]
|
| * in [SimpleTypeInferrerVisitor]).
|
| - *
|
| - * The global information is summarized in [cleanup], after which [_callers]
|
| - * is set to `null`.
|
| */
|
| - Map<Element, Setlet<Spannable>> _callers;
|
| + final Map<Element, Setlet<Spannable>> _callers = new Map<Element, Setlet>();
|
|
|
| MemberTypeInformation._internal(Element element)
|
| : super._internal(null, element);
|
|
|
| void addCall(Element caller, Spannable node) {
|
| assert(node is ast.Node || node is cps_ir.Node || node is Element);
|
| - _callers ??= <Element, Setlet>{};
|
| _callers.putIfAbsent(caller, () => new Setlet()).add(node);
|
| }
|
|
|
| void removeCall(Element caller, node) {
|
| - if (_callers == null) return;
|
| Setlet calls = _callers[caller];
|
| if (calls == null) return;
|
| calls.remove(node);
|
| @@ -427,20 +412,9 @@ class MemberTypeInformation extends ElementTypeInformation
|
| }
|
| }
|
|
|
| - Iterable<Element> get callers {
|
| - // TODO(sra): This is called only from an unused API. If it becomes used,
|
| - // [cleanup] will need to copy `_caller.keys`.
|
| - assert(false); // Unused.
|
| - return _callers.keys;
|
| - }
|
| + Iterable<Element> get callers => _callers.keys;
|
|
|
| bool isCalledOnce() {
|
| - assert(_isCalledOnce != null);
|
| - return _isCalledOnce;
|
| - }
|
| -
|
| - bool _computeIsCalledOnce() {
|
| - if (_callers == null) return false;
|
| int count = 0;
|
| for (var set in _callers.values) {
|
| count += set.length;
|
| @@ -556,13 +530,6 @@ class MemberTypeInformation extends ElementTypeInformation
|
|
|
| return super.hasStableType(inferrer);
|
| }
|
| -
|
| - void cleanup() {
|
| - if (_isCalledOnce != null) return;
|
| - _isCalledOnce = _computeIsCalledOnce();
|
| - _callers = null;
|
| - super.cleanup();
|
| - }
|
| }
|
|
|
| /**
|
| @@ -1352,12 +1319,6 @@ class ListTypeInformation extends TypeInformation
|
| }
|
|
|
| TypeMask safeType(TypeGraphInferrerEngine inferrer) => originalType;
|
| -
|
| - void cleanup() {
|
| - super.cleanup();
|
| - elementType.cleanup();
|
| - _flowsInto = null;
|
| - }
|
| }
|
|
|
| /**
|
| @@ -1521,16 +1482,6 @@ class MapTypeInformation extends TypeInformation
|
| super.hasStableType(inferrer);
|
| }
|
|
|
| - void cleanup() {
|
| - super.cleanup();
|
| - keyType.cleanup();
|
| - valueType.cleanup();
|
| - for (TypeInformation info in typeInfoMap.values) {
|
| - info.cleanup();
|
| - }
|
| - _flowsInto = null;
|
| - }
|
| -
|
| String toString() {
|
| return 'Map $type (K:$keyType, V:$valueType) contents $typeInfoMap';
|
| }
|
|
|