Repository: groovy Updated Branches: refs/heads/GROOVY_2_6_X 3ecb690a0 -> e325e6fe0
Adjust the min value of dfa cache threshold (cherry picked from commit 5c4bdad) Project: http://git-wip-us.apache.org/repos/asf/groovy/repo Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/e325e6fe Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/e325e6fe Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/e325e6fe Branch: refs/heads/GROOVY_2_6_X Commit: e325e6fe09bbc0c75b8c350500e41092db286b4f Parents: 3ecb690 Author: sunlan <[email protected]> Authored: Tue Aug 22 08:04:12 2017 +0800 Committer: sunlan <[email protected]> Committed: Tue Aug 22 08:06:09 2017 +0800 ---------------------------------------------------------------------- .../groovy/parser/antlr4/internal/AtnManager.java | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/groovy/blob/e325e6fe/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/internal/AtnManager.java ---------------------------------------------------------------------- diff --git a/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/internal/AtnManager.java b/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/internal/AtnManager.java index 45c7a33..92b2d5f 100644 --- a/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/internal/AtnManager.java +++ b/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/internal/AtnManager.java @@ -35,9 +35,10 @@ import java.util.concurrent.locks.ReentrantReadWriteLock; */ public class AtnManager { public static final ReentrantReadWriteLock RRWL = new ReentrantReadWriteLock(true); - private static final String CACHE_THRESHOLD_NAME = "groovy.antlr4.cache.threshold"; - private static final int DEFAULT_CACHE_THRESHOLD = 100; - private static final int CACHE_THRESHOLD; + private static final String DFA_CACHE_THRESHOLD_OPT = "groovy.antlr4.cache.threshold"; + private static final int DEFAULT_DFA_CACHE_THRESHOLD = 100; + private static final int MIN_DFA_CACHE_THRESHOLD = 50; + private static final int DFA_CACHE_THRESHOLD; private final Class ownerClass; private final ATN atn; private static final Map<Class, AtnWrapper> ATN_MAP = Maps.<Class, AtnWrapper>of( @@ -46,18 +47,18 @@ public class AtnManager { ); static { - int t = DEFAULT_CACHE_THRESHOLD; + int t = DEFAULT_DFA_CACHE_THRESHOLD; try { - t = Integer.parseInt(System.getProperty(CACHE_THRESHOLD_NAME)); + t = Integer.parseInt(System.getProperty(DFA_CACHE_THRESHOLD_OPT)); // cache threshold should be at least DEFAULT_CACHE_THRESHOLD for better performance - t = t < DEFAULT_CACHE_THRESHOLD ? DEFAULT_CACHE_THRESHOLD : t; + t = t < MIN_DFA_CACHE_THRESHOLD ? MIN_DFA_CACHE_THRESHOLD : t; } catch (Exception e) { // ignored } - CACHE_THRESHOLD = t; + DFA_CACHE_THRESHOLD = t; } public AtnManager(GroovyLangLexer lexer) { @@ -87,7 +88,7 @@ public class AtnManager { } public ATN checkAndClear() { - if (0 != counter.incrementAndGet() % CACHE_THRESHOLD) { + if (0 != counter.incrementAndGet() % DFA_CACHE_THRESHOLD) { return atn; }
