| 631 | } |
| 632 | |
| 633 | void PropagatorState::FrameState::AddLoopInv(const NodeItem* item, |
| 634 | const Entry& entry, |
| 635 | TaggedNodeSeq* ready) { |
| 636 | // Store this value. |
| 637 | inv_values.push_back({item, entry}); |
| 638 | |
| 639 | // Make this value available to all iterations. |
| 640 | const bool is_dead = entry.state == Entry::State::NO_VALUE; |
| 641 | for (int i = 0; i <= iteration_count; ++i) { |
| 642 | EntryVector outputs{entry}; |
| 643 | IterationState* iter_state = GetIteration(i); |
| 644 | int activated = |
| 645 | ActivateNodesLocked(item, is_dead, iter_state, &outputs, ready); |
| 646 | AdjustOutstandingOpsLocked(iter_state, activated, ready); |
| 647 | } |
| 648 | } |
| 649 | |
| 650 | bool PropagatorState::FrameState::IsIterationDone(IterationState* iter_state) { |
| 651 | if (iter_state->outstanding_ops == 0 && |
no test coverage detected