changeset 4559:04086e297563 v7.3.1027

updated for version 7.3.1027 Problem: New regexp performance: Calling no_Magic() very often. Solution: Remove magicness inline.
author Bram Moolenaar <bram@vim.org>
date Sun, 26 May 2013 19:19:52 +0200
parents 8d7f7d198970
children 4c332a431fa2
files src/regexp_nfa.c src/version.c
diffstat 2 files changed, 14 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/src/regexp_nfa.c
+++ b/src/regexp_nfa.c
@@ -3563,14 +3563,18 @@ nfa_regmatch(start, submatch, m)
 		break;
 
 	    default:	/* regular character */
+	      {
+		int c = t->state->c;
+
 		/* TODO: put this in #ifdef later */
-		if (t->state->c < -256)
-		    EMSGN("INTERNAL: Negative state char: %ld", t->state->c);
-		result = (no_Magic(t->state->c) == curc);
-
-		if (!result)
-		    result = ireg_ic == TRUE
-			       && MB_TOLOWER(t->state->c) == MB_TOLOWER(curc);
+		if (c < -256)
+		    EMSGN("INTERNAL: Negative state char: %ld", c);
+		if (is_Magic(c))
+		    c = un_Magic(c);
+		result = (c == curc);
+
+		if (!result && ireg_ic)
+		    result = MB_TOLOWER(c) == MB_TOLOWER(curc);
 #ifdef FEAT_MBYTE
 		/* If there is a composing character which is not being
 		 * ignored there can be no match. Match with composing
@@ -3581,6 +3585,7 @@ nfa_regmatch(start, submatch, m)
 #endif
 		ADD_POS_NEG_STATE(t->state);
 		break;
+	      }
 	    }
 
 	} /* for (thislist = thislist; thislist->state; thislist++) */
--- a/src/version.c
+++ b/src/version.c
@@ -729,6 +729,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1027,
+/**/
     1026,
 /**/
     1025,