diff --git a/litho-core/src/main/java/com/facebook/litho/dataflow/DataFlowGraph.java b/litho-core/src/main/java/com/facebook/litho/dataflow/DataFlowGraph.java index 770ff124e28..1ba55750218 100644 --- a/litho-core/src/main/java/com/facebook/litho/dataflow/DataFlowGraph.java +++ b/litho-core/src/main/java/com/facebook/litho/dataflow/DataFlowGraph.java @@ -59,8 +59,6 @@ public static DataFlowGraph create(TimingSource timingSource) { private final CopyOnWriteArrayList mBindings = new CopyOnWriteArrayList<>(); private final ArrayList mSortedNodes = new ArrayList<>(); private final ArraySet mFinishedNodes = new ArraySet<>(); - private final SimpleArrayMap> mBindingToNodes = - new SimpleArrayMap<>(); private boolean mIsDirty = false; @@ -77,7 +75,6 @@ public void register(GraphBinding binding) { throw new RuntimeException("Expected added GraphBinding to be active: " + binding); } mBindings.add(binding); - mBindingToNodes.put(binding, binding.getAllNodes()); if (mBindings.size() == 1) { mTimingSource.start(); } @@ -92,7 +89,6 @@ public void unregister(GraphBinding binding) { if (!mBindings.remove(binding)) { throw new RuntimeException("Tried to unregister non-existent binding"); } - mBindingToNodes.remove(binding); if (mBindings.isEmpty()) { mTimingSource.stop(); } @@ -126,8 +122,8 @@ private void regenerateSortedNodes() { final ArraySet leafNodes = ComponentsPools.acquireArraySet(); final SimpleArrayMap nodesToOutputsLeft = new SimpleArrayMap<>(); - for (int i = 0, bindingsSize = mBindingToNodes.size(); i < bindingsSize; i++) { - final ArraySet nodes = mBindingToNodes.valueAt(i); + for (int i = 0, bindingsSize = mBindings.size(); i < bindingsSize; i++) { + final ArraySet nodes = mBindings.get(i).getAllNodes(); for (int j = 0, nodesSize = nodes.size(); j < nodesSize; j++) { final ValueNode node = nodes.valueAt(j); final int outputCount = node.getOutputCount(); @@ -208,10 +204,10 @@ private boolean areInputsFinished(ValueNode node) { private void notifyFinishedBindings() { // Iterate in reverse order since notifying that a binding is finished results in removing // that binding. - for (int i = mBindingToNodes.size() - 1; i >= 0; i--) { - final GraphBinding binding = mBindingToNodes.keyAt(i); + for (int i = mBindings.size() - 1; i >= 0; i--) { + final GraphBinding binding = mBindings.get(i); boolean allAreFinished = true; - final ArraySet nodesToCheck = mBindingToNodes.valueAt(i); + final ArraySet nodesToCheck = binding.getAllNodes(); for (int j = 0, nodesSize = nodesToCheck.size(); j < nodesSize; j++) { final ValueNode node = nodesToCheck.valueAt(j); if (!mFinishedNodes.contains(node)) {