| 4598 | |
| 4599 | template<class VIC> |
| 4600 | void |
| 4601 | VarImp<VIC>::_fail(Space& home) { |
| 4602 | /* |
| 4603 | * An advisor that is executed might remove itself due to subsumption. |
| 4604 | * As entries are removed from front to back, the advisors must |
| 4605 | * be iterated in forward direction. |
| 4606 | */ |
| 4607 | ActorLink** la = actorNonZero(pc_max+1); |
| 4608 | ActorLink** le = b.base+entries; |
| 4609 | if (la == le) |
| 4610 | return; |
| 4611 | // An advisor that is run, might be removed during execution. |
| 4612 | // As removal is done from the back the advisors have to be executed |
| 4613 | // in inverse order. |
| 4614 | do { |
| 4615 | if (Support::marked(*la)) { |
| 4616 | Advisor* a = Advisor::cast(static_cast<ActorLink*> |
| 4617 | (Support::unmark(*la))); |
| 4618 | assert(!a->disposed()); |
| 4619 | Propagator& p = a->propagator(); |
| 4620 | p.advise(home,*a); |
| 4621 | } |
| 4622 | } while (++la < le); |
| 4623 | } |
| 4624 | |
| 4625 | template<class VIC> |
| 4626 | ModEvent |
nothing calls this directly
no test coverage detected