Don't try to optimize read-only configuration sets

This commit is contained in:
Sam Harwell 2013-04-18 12:40:32 -05:00
parent 2410b97aab
commit a90529720e
2 changed files with 8 additions and 2 deletions

View File

@ -470,6 +470,10 @@ public class ATNConfigSet implements Set<ATNConfig> {
configLookup.clear();
}
public boolean isReadonly() {
return readonly;
}
public void setReadonly(boolean readonly) {
this.readonly = readonly;
configLookup = null; // can't mod, no need for lookup cache

View File

@ -1572,8 +1572,10 @@ public class ParserATNSimulator extends ATNSimulator {
if ( existing!=null ) return existing;
D.stateNumber = dfa.states.size();
D.configs.optimizeConfigs(this);
D.configs.setReadonly(true);
if (!D.configs.isReadonly()) {
D.configs.optimizeConfigs(this);
D.configs.setReadonly(true);
}
dfa.states.put(D, D);
if ( debug ) System.out.println("adding new DFA state: "+D);
return D;