Lines Matching full:effects
14 // A simple struct to represent (write) effects. A write is represented as a
19 // effects.
21 // There are two ways to compose effects: sequentially (they happen one after
60 // Classes encapsulating sets of effects on variables.
62 // Effects maps variables to effects and supports sequential and alternative
73 // We also (ab)use Effects/NestedEffects as a representation for abstract
74 // store typings. In that case, only definite effects are of interest.
76 template<class Var, class Base, class Effects>
102 void Seq(Effects that) {
116 void Alt(Effects that) {
126 Effect::Forget(Base::zone()), Effects(Base::zone()) };
128 Seq(override.effects);
157 Effects other;
161 void Call(Var var, Effect effect) { effects.Seq(var, new_effect); }
163 Effects effects;
168 template<class Var, Var kNoVar> class Effects;
181 EffectsMixin<Var, NestedEffectsBase<Var, kNoVar>, Effects<Var, kNoVar> >;
221 class Effects: public
222 EffectsMixin<Var, EffectsBase<Var, kNoVar>, Effects<Var, kNoVar> > {
224 explicit Effects(Zone* zone)
225 : EffectsMixin<Var, EffectsBase<Var, kNoVar>, Effects<Var, kNoVar> >(zone)
238 node_->effects.ForEach(callback);
241 Effects<Var, kNoVar> Top() { return node_->effects; }
245 if (!node->effects.IsEmpty()) return false;
262 if (node->effects.Contains(var)) return true;
270 if (node->effects.Find(var, locator)) return true;
280 Effects<Var, kNoVar> effects;
283 : zone(zone), effects(zone), previous(previous) {}
295 if (!node_->effects.Insert(var, locator)) return false;
298 if (node->effects.Find(var, &shadowed)) {
310 EffectsMixin<Var, NestedEffectsBase<Var, kNoVar>, Effects<Var, kNoVar> > {
313 EffectsMixin<Var, NestedEffectsBase<Var, kNoVar>, Effects<Var, kNoVar> >(