- void reduce2(Pos r, int pos, GSS.Phase target, StateNode pred, Forest f) {
- Forest[] holder = r.holder;
- Forest old = pos >= holder.length ? null : holder[pos];
- if (pos < holder.length) holder[pos] = f;
- if (pos>0) pred.reduce(r, pos-1, target, null);
- else {
- Input.Region region = pred.phase().getLocation().createRegion(target.getLocation());
- new Reduction(pred, r, r.rewrite(region), target);
- }
- if (pos < holder.length) holder[pos] = old;
- }
-
- StateNode(GSS.Phase phase, Forest f, Pos reduction, StateNode pred, State state, boolean fromEmptyReduction) {
- this(phase, new ResultNode(f, reduction, pred), state, fromEmptyReduction);
- }
- StateNode(GSS.Phase phase, ResultNode pred, State state, boolean fromEmptyReduction) {
- this.phase = phase;
+ StateNode(GSS.Phase phase, ResultNode pred, State state) {
+ super(phase, pred.phase());