You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@groovy.apache.org by su...@apache.org on 2020/06/26 20:42:19 UTC

[groovy] branch GROOVY_3_0_X updated: Tweak DFA cache threshold to support almost no limit(when threshold is set less than 0)

This is an automated email from the ASF dual-hosted git repository.

sunlan pushed a commit to branch GROOVY_3_0_X
in repository https://gitbox.apache.org/repos/asf/groovy.git


The following commit(s) were added to refs/heads/GROOVY_3_0_X by this push:
     new f8280e0  Tweak DFA cache threshold to support almost no limit(when threshold is set less than 0)
f8280e0 is described below

commit f8280e00ca5887a47332d79e9c5bfe63ea84b795
Author: Daniel Sun <su...@apache.org>
AuthorDate: Sat Jun 27 04:37:41 2020 +0800

    Tweak DFA cache threshold to support almost no limit(when threshold is set less than 0)
    
    (cherry picked from commit eac1a43cfca02af5508eeea3ba2cd8b1349aba0b)
---
 .../parser/antlr4/internal/atnmanager/AtnManager.java   | 17 +++++------------
 1 file changed, 5 insertions(+), 12 deletions(-)

diff --git a/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/internal/atnmanager/AtnManager.java b/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/internal/atnmanager/AtnManager.java
index d3f9860..1600a5c 100644
--- a/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/internal/atnmanager/AtnManager.java
+++ b/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/internal/atnmanager/AtnManager.java
@@ -19,6 +19,7 @@
 package org.apache.groovy.parser.antlr4.internal.atnmanager;
 
 import org.antlr.v4.runtime.atn.ATN;
+import org.apache.groovy.util.SystemUtil;
 
 import java.util.concurrent.atomic.AtomicLong;
 import java.util.concurrent.locks.ReentrantReadWriteLock;
@@ -31,20 +32,12 @@ public abstract class AtnManager {
     private static final ReentrantReadWriteLock.WriteLock WRITE_LOCK = RRWL.writeLock();
     public static final ReentrantReadWriteLock.ReadLock READ_LOCK = RRWL.readLock();
     private static final String DFA_CACHE_THRESHOLD_OPT = "groovy.antlr4.cache.threshold";
-    private static final int DEFAULT_DFA_CACHE_THRESHOLD = 64;
-    private static final int MIN_DFA_CACHE_THRESHOLD = 2;
-    private static final int DFA_CACHE_THRESHOLD;
+    private static final long DFA_CACHE_THRESHOLD;
 
     static {
-        int t = DEFAULT_DFA_CACHE_THRESHOLD;
-
-        try {
-            t = Integer.parseInt(System.getProperty(DFA_CACHE_THRESHOLD_OPT));
-
-            // cache threshold should be at least MIN_DFA_CACHE_THRESHOLD for better performance
-            t = t < MIN_DFA_CACHE_THRESHOLD ? MIN_DFA_CACHE_THRESHOLD : t;
-        } catch (Exception e) {
-            // ignored
+        long t = SystemUtil.getLongSafe(DFA_CACHE_THRESHOLD_OPT, 64L);
+        if (t <= 0) {
+            t = Long.MAX_VALUE;
         }
 
         DFA_CACHE_THRESHOLD = t;