cleanup; avoid array creation

This commit is contained in:
Terence Parr 2012-07-22 12:59:26 -07:00
parent 829ad9191c
commit 3edb35d95e
1 changed files with 6 additions and 9 deletions

View File

@ -266,22 +266,19 @@ public abstract class PredictionContext implements Iterable<SingletonPredictionC
payloads[1] = a.invokingState;
}
PredictionContext[] parents = {singleParent, singleParent};
ArrayPredictionContext joined =
new ArrayPredictionContext(parents, payloads);
return joined;
return new ArrayPredictionContext(parents, payloads);
}
// parents differ and can't merge them. Just pack together
// into array; can't merge. sort, though, by payload
// into array; can't merge.
// ax + by = [ax,by]
int[] payloads = {a.invokingState, b.invokingState};
PredictionContext[] parents = {a.parent, b.parent};
if ( a.invokingState > b.invokingState ) {
payloads = new int[] {b.invokingState, a.invokingState};
if ( a.invokingState > b.invokingState ) { // sort by payload
payloads[0] = b.invokingState;
payloads[1] = a.invokingState;
parents = new PredictionContext[] {b.parent, a.parent};
}
ArrayPredictionContext joined =
new ArrayPredictionContext(parents, payloads);
return joined;
return new ArrayPredictionContext(parents, payloads);
}
}