Don't try to optimize read-only configuration sets
This commit is contained in:
parent
2410b97aab
commit
a90529720e
|
@ -470,6 +470,10 @@ public class ATNConfigSet implements Set<ATNConfig> {
|
||||||
configLookup.clear();
|
configLookup.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean isReadonly() {
|
||||||
|
return readonly;
|
||||||
|
}
|
||||||
|
|
||||||
public void setReadonly(boolean readonly) {
|
public void setReadonly(boolean readonly) {
|
||||||
this.readonly = readonly;
|
this.readonly = readonly;
|
||||||
configLookup = null; // can't mod, no need for lookup cache
|
configLookup = null; // can't mod, no need for lookup cache
|
||||||
|
|
|
@ -1572,8 +1572,10 @@ public class ParserATNSimulator extends ATNSimulator {
|
||||||
if ( existing!=null ) return existing;
|
if ( existing!=null ) return existing;
|
||||||
|
|
||||||
D.stateNumber = dfa.states.size();
|
D.stateNumber = dfa.states.size();
|
||||||
D.configs.optimizeConfigs(this);
|
if (!D.configs.isReadonly()) {
|
||||||
D.configs.setReadonly(true);
|
D.configs.optimizeConfigs(this);
|
||||||
|
D.configs.setReadonly(true);
|
||||||
|
}
|
||||||
dfa.states.put(D, D);
|
dfa.states.put(D, D);
|
||||||
if ( debug ) System.out.println("adding new DFA state: "+D);
|
if ( debug ) System.out.println("adding new DFA state: "+D);
|
||||||
return D;
|
return D;
|
||||||
|
|
Loading…
Reference in New Issue