[Top][All Lists]
[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