Skip to content

Commit eac1a43

Browse files
committed
Tweak DFA cache threshold to support almost no limit(when threshold is set less than 0)
1 parent efbab03 commit eac1a43

File tree

1 file changed

+5
-12
lines changed
  • subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/internal/atnmanager

1 file changed

+5
-12
lines changed

subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/internal/atnmanager/AtnManager.java

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
package org.apache.groovy.parser.antlr4.internal.atnmanager;
2020

2121
import org.antlr.v4.runtime.atn.ATN;
22+
import org.apache.groovy.util.SystemUtil;
2223

2324
import java.util.concurrent.atomic.AtomicLong;
2425
import java.util.concurrent.locks.ReentrantReadWriteLock;
@@ -31,20 +32,12 @@ public abstract class AtnManager {
3132
private static final ReentrantReadWriteLock.WriteLock WRITE_LOCK = RRWL.writeLock();
3233
public static final ReentrantReadWriteLock.ReadLock READ_LOCK = RRWL.readLock();
3334
private static final String DFA_CACHE_THRESHOLD_OPT = "groovy.antlr4.cache.threshold";
34-
private static final int DEFAULT_DFA_CACHE_THRESHOLD = 64;
35-
private static final int MIN_DFA_CACHE_THRESHOLD = 2;
36-
private static final int DFA_CACHE_THRESHOLD;
35+
private static final long DFA_CACHE_THRESHOLD;
3736

3837
static {
39-
int t = DEFAULT_DFA_CACHE_THRESHOLD;
40-
41-
try {
42-
t = Integer.parseInt(System.getProperty(DFA_CACHE_THRESHOLD_OPT));
43-
44-
// cache threshold should be at least MIN_DFA_CACHE_THRESHOLD for better performance
45-
t = t < MIN_DFA_CACHE_THRESHOLD ? MIN_DFA_CACHE_THRESHOLD : t;
46-
} catch (Exception e) {
47-
// ignored
38+
long t = SystemUtil.getLongSafe(DFA_CACHE_THRESHOLD_OPT, 64L);
39+
if (t <= 0) {
40+
t = Long.MAX_VALUE;
4841
}
4942

5043
DFA_CACHE_THRESHOLD = t;

0 commit comments

Comments
 (0)