Lines Matching full:effects
38 // An example implementation of effects that doesn't collect anything.
77 // by the type of the state and the effects collected while walking over the
81 // in control flow order, and the "Effects" collect summary information about
82 // which facts could be invalidated on other control flow paths. The effects
85 // each block at most twice; once for state, and optionally once for effects.
87 // The flow engine requires the State and Effects classes to implement methods
89 // an effects implementation for local analysis.
90 template <class State, class Effects>
114 // block, starting with the initial state. Computes effects for nested loops.
128 // Apply loop effects before analyzing loop body.
163 // Computes and caches the loop effects for the loop which has the given
165 Effects* ComputeLoopEffects(HBasicBlock* block) {
167 Effects* effects = loop_effects_[block->block_id()];
168 if (effects != NULL) return effects; // Already analyzed this loop.
170 effects = new(zone_) Effects(zone_);
171 loop_effects_[block->block_id()] = effects;
172 if (effects->Disabled()) return effects; // No effects for this analysis.
180 // Recursively compute and cache the effects of the nested loop.
182 Effects* nested = ComputeLoopEffects(member);
183 effects->Union(nested, zone_);
187 // Process all the effects of the block.
190 effects->Process(it.Current(), zone_);
194 return effects;
236 ZoneList<Effects*> loop_effects_; // Loop effects (by block id).