bug-grep
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH 3/5] extract common code from if/else


From: Paolo Bonzini
Subject: [PATCH 3/5] extract common code from if/else
Date: Sun, 7 Mar 2010 11:20:53 +0100

* dfa.c (dfaexec): Simplify logic for MB_CUR_MAX > 1 case.
---
 src/dfa.c |   45 ++++++++++++++++++++++-----------------------
 1 files changed, 22 insertions(+), 23 deletions(-)

diff --git a/src/dfa.c b/src/dfa.c
index 0df2468..400061a 100644
--- a/src/dfa.c
+++ b/src/dfa.c
@@ -2872,19 +2872,18 @@ dfaexec (struct dfa *d, char const *begin, size_t size, 
int *backref)
       if (MB_CUR_MAX > 1)
        while ((t = trans[s]))
          {
-           if (d->states[s].mbps.nelem != 0)
-             {
-               /* Can match with a multibyte character (and multi character
-                  collating element).  Transition table might be updated.  */
-               SKIP_REMAINS_MB_IF_INITIAL_STATE(s, p);
-               s = transit_state(d, s, &p);
-               trans = d->trans;
-             }
-           else
+           SKIP_REMAINS_MB_IF_INITIAL_STATE(s, p);
+
+           if (d->states[s].mbps.nelem == 0)
              {
-               SKIP_REMAINS_MB_IF_INITIAL_STATE(s, p);
                s = t[*p++];
+               continue;
              }
+
+           /* Can match with a multibyte character (and multi character
+              collating element).  Transition table might be updated.  */
+           s = transit_state(d, s, &p);
+           trans = d->trans;
          }
       else
 #endif /* MBS_SUPPORT */
@@ -2925,21 +2924,21 @@ dfaexec (struct dfa *d, char const *begin, size_t size, 
int *backref)
 #ifdef MBS_SUPPORT
          if (MB_CUR_MAX > 1)
            {
-               SKIP_REMAINS_MB_IF_INITIAL_STATE(s, p);
-               if (d->states[s].mbps.nelem != 0)
-                 {
-                   /* Can match with a multibyte character (and multicharacter
-                      collating element).  Transition table might be
-                      updated.  */
-                   s = transit_state(d, s, &p);
-                   trans = d->trans;
-                 }
-               else
-                 s = t[*p++];
-           }
+              SKIP_REMAINS_MB_IF_INITIAL_STATE(s, p);
+              if (d->states[s].mbps.nelem == 0)
+                {
+                  s = t[*p++];
+                  continue;
+                }
+
+              /* Can match with a multibyte character (and multicharacter 
+                 collating element).  Transition table might be updated.  */
+              s = transit_state(d, s, &p);
+              trans = d->trans;
+            }
          else
 #endif /* MBS_SUPPORT */
-           s = t[*p++];
+         s = t[*p++];
        }
       else
        {
-- 
1.6.6






reply via email to

[Prev in Thread] Current Thread [Next in Thread]