[jruby-joni] 120/194: dedup stack logic

Hideki Yamane henrich at moszumanska.debian.org
Thu Feb 1 12:04:33 UTC 2018


This is an automated email from the git hooks/post-receive script.

henrich pushed a commit to branch debian/sid
in repository jruby-joni.

commit 422191d1fd2fec742552e8beff4eb6917ef55c05
Author: Marcin Mielzynski <lopx at gazeta.pl>
Date:   Mon Jan 8 20:02:01 2018 +0100

    dedup stack logic
---
 src/org/joni/StackMachine.java | 85 +++++++++++-------------------------------
 1 file changed, 21 insertions(+), 64 deletions(-)

diff --git a/src/org/joni/StackMachine.java b/src/org/joni/StackMachine.java
index 69af0a3..ae1fdd0 100644
--- a/src/org/joni/StackMachine.java
+++ b/src/org/joni/StackMachine.java
@@ -343,7 +343,6 @@ abstract class StackMachine extends Matcher implements StackType {
     private StackEntry popFree() {
         while (true) {
             StackEntry e = stack[--stk];
-
             if ((e.type & MASK_POP_USED) != 0) {
                 return e;
             } else if (Config.USE_COMBINATION_EXPLOSION_CHECK) {
@@ -355,7 +354,6 @@ abstract class StackMachine extends Matcher implements StackType {
     private StackEntry popMemStart() {
         while (true) {
             StackEntry e = stack[--stk];
-
             if ((e.type & MASK_POP_USED) != 0) {
                 return e;
             } else if (e.type == MEM_START) {
@@ -367,86 +365,45 @@ abstract class StackMachine extends Matcher implements StackType {
         }
     }
 
+    private void popRewrite(StackEntry e) {
+        if (e.type == MEM_START) {
+            repeatStk[memStartStk + e.getMemNum()] = e.getMemStart();
+            repeatStk[memEndStk + e.getMemNum()] = e.getMemEnd();
+        } else if (e.type == REPEAT_INC) {
+            stack[e.getSi()].decreaseRepeatCount();
+        } else if (e.type == MEM_END) {
+            repeatStk[memStartStk + e.getMemNum()] = e.getMemStart();
+            repeatStk[memEndStk + e.getMemNum()] = e.getMemEnd();
+        } else if (Config.USE_COMBINATION_EXPLOSION_CHECK) {
+            if (e.type == STATE_CHECK_MARK) stateCheckMark();
+        }
+    }
+
     private StackEntry popDefault() {
         while (true) {
             StackEntry e = stack[--stk];
-
-            if ((e.type & MASK_POP_USED) != 0) {
-                return e;
-            } else if (e.type == MEM_START) {
-                repeatStk[memStartStk + e.getMemNum()] = e.getMemStart();
-                repeatStk[memEndStk + e.getMemNum()] = e.getMemEnd();
-            } else if (e.type == REPEAT_INC) {
-                stack[e.getSi()].decreaseRepeatCount();
-            } else if (e.type == MEM_END) {
-                repeatStk[memStartStk + e.getMemNum()] = e.getMemStart();
-                repeatStk[memEndStk + e.getMemNum()] = e.getMemEnd();
-            } else if (Config.USE_COMBINATION_EXPLOSION_CHECK) {
-                if (e.type == STATE_CHECK_MARK) stateCheckMark();
-            }
+            if ((e.type & MASK_POP_USED) != 0) return e; else popRewrite(e);
         }
     }
 
     protected final void popTilPosNot() {
         while (true) {
-            stk--;
-            StackEntry e = stack[stk];
-
-            if (e.type == POS_NOT) {
-                break;
-            } else if (e.type == MEM_START) {
-                repeatStk[memStartStk + e.getMemNum()] = e.getMemStart();
-                repeatStk[memEndStk + e.getMemNum()] = e.getMemEnd();
-            } else if (e.type == REPEAT_INC) {
-                stack[e.getSi()].decreaseRepeatCount();
-            } else if (e.type == MEM_END){
-                repeatStk[memStartStk + e.getMemNum()] = e.getMemStart();
-                repeatStk[memEndStk + e.getMemNum()] = e.getMemEnd();
-            } else if (Config.USE_COMBINATION_EXPLOSION_CHECK) {
-                if (e.type == STATE_CHECK_MARK) stateCheckMark();
-            }
+            StackEntry e = stack[--stk];
+            if (e.type == POS_NOT) break; else popRewrite(e);
         }
     }
 
     protected final void popTilLookBehindNot() {
         while (true) {
-            stk--;
-            StackEntry e = stack[stk];
-
-            if (e.type == LOOK_BEHIND_NOT) {
-                break;
-            } else if (e.type == MEM_START) {
-                repeatStk[memStartStk + e.getMemNum()] = e.getMemStart();
-                repeatStk[memEndStk + e.getMemNum()] = e.getMemEnd();
-            } else if (e.type == REPEAT_INC) {
-                stack[e.getSi()].decreaseRepeatCount();
-            } else if (e.type == MEM_END) {
-                repeatStk[memStartStk + e.getMemNum()] = e.getMemStart();
-                repeatStk[memEndStk + e.getMemNum()] = e.getMemEnd();
-            } else if (Config.USE_COMBINATION_EXPLOSION_CHECK) {
-                if (e.type == STATE_CHECK_MARK) stateCheckMark();
-            }
+            StackEntry e = stack[--stk];
+            if (e.type == LOOK_BEHIND_NOT) break; else popRewrite(e);
         }
     }
 
     protected final void popTilAbsent() {
         while (true) {
-            stk--;
-            StackEntry e = stack[stk];
-
-            if (e.type == ABSENT) {
-                break;
-            } else if (e.type == MEM_START) {
-                repeatStk[memStartStk + e.getMemNum()] = e.getMemStart();
-                repeatStk[memEndStk + e.getMemNum()] = e.getMemEnd();
-            } else if (e.type == REPEAT_INC) {
-                stack[e.getSi()].decreaseRepeatCount();
-            } else if (e.type == MEM_END) {
-                repeatStk[memStartStk + e.getMemNum()] = e.getMemStart();
-                repeatStk[memEndStk + e.getMemNum()] = e.getMemEnd();
-            } else if (Config.USE_COMBINATION_EXPLOSION_CHECK) {
-                if (e.type == STATE_CHECK_MARK) stateCheckMark();
-            }
+            StackEntry e = stack[--stk];
+            if (e.type == ABSENT) break; else popRewrite(e);
         }
     }
 

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-java/jruby-joni.git



More information about the pkg-java-commits mailing list