[Jython-checkins] jython: Comment out SRE_STATE#TRACE debug method in regex matching
jim.baker
jython-checkins at python.org
Sat Mar 14 12:57:30 CET 2015
https://hg.python.org/jython/rev/28c98fa8978a
changeset: 7613:28c98fa8978a
user: Jim Baker <jim.baker at rackspace.com>
date: Sat Mar 14 05:57:06 2015 -0600
summary:
Comment out SRE_STATE#TRACE debug method in regex matching
Avoids unnecessary overhead and fixes http://bugs.jython.org/issue1725
files:
src/org/python/modules/sre/SRE_STATE.java | 114 +++++-----
1 files changed, 57 insertions(+), 57 deletions(-)
diff --git a/src/org/python/modules/sre/SRE_STATE.java b/src/org/python/modules/sre/SRE_STATE.java
--- a/src/org/python/modules/sre/SRE_STATE.java
+++ b/src/org/python/modules/sre/SRE_STATE.java
@@ -270,13 +270,13 @@
newsize = 512;
if (newsize < minsize)
newsize = minsize;
- TRACE(0, ptr, "allocate stack " + newsize);
+// TRACE(0, ptr, "allocate stack " + newsize);
stack = new int[newsize];
} else {
/* grow the stack */
while (newsize < minsize)
newsize += newsize;
- TRACE(0, ptr, "grow stack to " + newsize);
+// TRACE(0, ptr, "grow stack to " + newsize);
stack = new int[newsize];
System.arraycopy(mark_stack, 0, stack, 0, mark_stack.length);
}
@@ -284,7 +284,7 @@
mark_stack_size = newsize;
}
- TRACE(0, ptr, "copy " + lo + ":" + hi + " to " + mark_stack_base + " (" + size + ")");
+// TRACE(0, ptr, "copy " + lo + ":" + hi + " to " + mark_stack_base + " (" + size + ")");
System.arraycopy(mark, lo, mark_stack, mark_stack_base, size);
@@ -301,7 +301,7 @@
this.mark_stack_base = mark_stack_base - size;
- TRACE(0, ptr, "copy " + lo + ":" + hi + " from " + mark_stack_base);
+// TRACE(0, ptr, "copy " + lo + ":" + hi + " from " + mark_stack_base);
System.arraycopy(mark_stack, this.mark_stack_base, mark, lo, size);
}
@@ -374,11 +374,11 @@
switch (set[setidx++]) {
case SRE_OP_FAILURE:
- TRACE(setidx, ch, "CHARSET FAILURE");
+// TRACE(setidx, ch, "CHARSET FAILURE");
return !ok;
case SRE_OP_LITERAL:
- TRACE(setidx, ch, "CHARSET LITERAL " + set[setidx]);
+// TRACE(setidx, ch, "CHARSET LITERAL " + set[setidx]);
/* <LITERAL> <code> */
if (ch == set[setidx])
return ok;
@@ -387,14 +387,14 @@
case SRE_OP_CATEGORY:
/* <CATEGORY> <code> */
- TRACE(setidx, ch, "CHARSET CHARSET " + set[setidx]);
+// TRACE(setidx, ch, "CHARSET CHARSET " + set[setidx]);
if (sre_category(set[setidx], ch))
return ok;
setidx++;
break;
case SRE_OP_CHARSET:
- TRACE(setidx, ch, "CHARSET CHARSET ");
+// TRACE(setidx, ch, "CHARSET CHARSET ");
/* <CHARSET> <bitmap> (16 bits per code word) */
// if (ch < 256 &&
// (set[setidx + (ch >> 4)] & (1 << (ch & 15))) != 0)
@@ -409,20 +409,20 @@
case SRE_OP_RANGE:
/* <RANGE> <lower> <upper> */
- TRACE(setidx, ch, "CHARSET RANGE " + set[setidx] + " " + set[setidx+1]);
+// TRACE(setidx, ch, "CHARSET RANGE " + set[setidx] + " " + set[setidx+1]);
if (set[setidx] <= ch && ch <= set[setidx+1])
return ok;
setidx += 2;
break;
case SRE_OP_NEGATE:
- TRACE(setidx, ch, "CHARSET NEGATE");
+// TRACE(setidx, ch, "CHARSET NEGATE");
ok = !ok;
break;
case SRE_OP_BIGCHARSET:
/* <BIGCHARSET> <blockcount> <256 blockindices> <blocks> */
- TRACE(setidx, ch, "CHARSET BIGCHARSET ");
+// TRACE(setidx, ch, "CHARSET BIGCHARSET ");
// count = *(set++);
// if (!(ch & ~65535))
@@ -470,14 +470,14 @@
case SRE_OP_IN:
/* repeated set */
- TRACE(pidx, ptr, "COUNT IN");
+// TRACE(pidx, ptr, "COUNT IN");
while (ptr < end && SRE_CHARSET(pattern, pidx + 2, str[ptr]))
ptr++;
break;
case SRE_OP_ANY:
/* repeated dot wildcard. */
- TRACE(pidx, ptr, "COUNT ANY");
+// TRACE(pidx, ptr, "COUNT ANY");
while (ptr < end && !SRE_IS_LINEBREAK(str[ptr]))
ptr++;
break;
@@ -485,14 +485,14 @@
case SRE_OP_ANY_ALL:
/* repeated dot wildcard. skip to the end of the target
string, and backtrack from there */
- TRACE(pidx, ptr, "COUNT ANY_ALL");
+// TRACE(pidx, ptr, "COUNT ANY_ALL");
ptr = end;
break;
case SRE_OP_LITERAL:
/* repeated literal */
chr = pattern[pidx+1];
- TRACE(pidx, ptr, "COUNT LITERAL " + chr);
+// TRACE(pidx, ptr, "COUNT LITERAL " + chr);
while (ptr < end && str[ptr] == chr)
ptr++;
break;
@@ -500,7 +500,7 @@
case SRE_OP_LITERAL_IGNORE:
/* repeated literal */
chr = pattern[pidx+1];
- TRACE(pidx, ptr, "COUNT LITERAL_IGNORE " + chr);
+// TRACE(pidx, ptr, "COUNT LITERAL_IGNORE " + chr);
while (ptr < end && lower(str[ptr]) == chr)
ptr++;
break;
@@ -508,7 +508,7 @@
case SRE_OP_NOT_LITERAL:
/* repeated non-literal */
chr = pattern[pidx+1];
- TRACE(pidx, ptr, "COUNT NOT_LITERAL " + chr);
+// TRACE(pidx, ptr, "COUNT NOT_LITERAL " + chr);
while (ptr < end && str[ptr] != chr)
ptr++;
break;
@@ -516,7 +516,7 @@
case SRE_OP_NOT_LITERAL_IGNORE:
/* repeated non-literal */
chr = pattern[pidx+1];
- TRACE(pidx, ptr, "COUNT NOT_LITERAL_IGNORE " + chr);
+// TRACE(pidx, ptr, "COUNT NOT_LITERAL_IGNORE " + chr);
while (ptr < end && lower(str[ptr]) != chr)
ptr++;
break;
@@ -524,7 +524,7 @@
default:
/* repeated single character pattern */
- TRACE(pidx, ptr, "COUNT SUBPATTERN");
+// TRACE(pidx, ptr, "COUNT SUBPATTERN");
while (this.ptr < end) {
i = SRE_MATCH(pattern, pidx, level);
if (i < 0)
@@ -548,7 +548,7 @@
int lastmark, lastindex, mark_stack_base = 0;
- TRACE(pidx, ptr, "ENTER " + level);
+// TRACE(pidx, ptr, "ENTER " + level);
if (level > USE_RECURSION_LIMIT)
return SRE_ERROR_RECURSION_LIMIT;
@@ -570,7 +570,7 @@
case SRE_OP_MARK:
/* set mark */
/* <MARK> <gid> */
- TRACE(pidx, ptr, "MARK " + pattern[pidx]);
+// TRACE(pidx, ptr, "MARK " + pattern[pidx]);
i = pattern[pidx];
if ((i & 1) != 0)
this.lastindex = i / 2 + 1;
@@ -583,7 +583,7 @@
case SRE_OP_LITERAL:
/* match literal character */
/* <LITERAL> <code> */
- TRACE(pidx, ptr, "LITERAL " + pattern[pidx]);
+// TRACE(pidx, ptr, "LITERAL " + pattern[pidx]);
if (ptr >= end || str[ptr] != pattern[pidx])
return 0;
@@ -594,7 +594,7 @@
case SRE_OP_NOT_LITERAL:
/* match anything that is not literal character */
/* args: <code> */
- TRACE(pidx, ptr, "NOT_LITERAL " + pattern[pidx]);
+// TRACE(pidx, ptr, "NOT_LITERAL " + pattern[pidx]);
if (ptr >= end || str[ptr] == pattern[pidx])
return 0;
pidx++;
@@ -603,14 +603,14 @@
case SRE_OP_SUCCESS:
/* end of pattern */
- TRACE(pidx, ptr, "SUCCESS");
+// TRACE(pidx, ptr, "SUCCESS");
this.ptr = ptr;
return 1;
case SRE_OP_AT:
/* match at given position */
/* <AT> <code> */
- TRACE(pidx, ptr, "AT " + pattern[pidx]);
+// TRACE(pidx, ptr, "AT " + pattern[pidx]);
if (!SRE_AT(ptr, pattern[pidx]))
return 0;
pidx++;
@@ -619,7 +619,7 @@
case SRE_OP_CATEGORY:
/* match at given category */
/* <CATEGORY> <code> */
- TRACE(pidx, ptr, "CATEGORY " + pattern[pidx]);
+// TRACE(pidx, ptr, "CATEGORY " + pattern[pidx]);
if (ptr >= end || !sre_category(pattern[pidx], str[ptr]))
return 0;
@@ -630,7 +630,7 @@
case SRE_OP_ANY:
/* match anything */
- TRACE(pidx, ptr, "ANY");
+// TRACE(pidx, ptr, "ANY");
if (ptr >= end || SRE_IS_LINEBREAK(str[ptr]))
return 0;
ptr++;
@@ -639,7 +639,7 @@
case SRE_OP_ANY_ALL:
/* match anything */
/* <ANY_ALL> */
- TRACE(pidx, ptr, "ANY_ALL");
+// TRACE(pidx, ptr, "ANY_ALL");
if (ptr >= end)
return 0;
ptr++;
@@ -648,7 +648,7 @@
case SRE_OP_IN:
/* match set member (or non_member) */
/* <IN> <skip> <set> */
- TRACE(pidx, ptr, "IN");
+// TRACE(pidx, ptr, "IN");
if (ptr >= end || !SRE_CHARSET(pattern, pidx + 1, str[ptr]))
return 0;
pidx += pattern[pidx];
@@ -656,7 +656,7 @@
break;
case SRE_OP_LITERAL_IGNORE:
- TRACE(pidx, ptr, "LITERAL_IGNORE " + pattern[pidx]);
+// TRACE(pidx, ptr, "LITERAL_IGNORE " + pattern[pidx]);
if (ptr >= end || lower(str[ptr]) != lower(pattern[pidx]))
return 0;
pidx++;
@@ -664,7 +664,7 @@
break;
case SRE_OP_NOT_LITERAL_IGNORE:
- TRACE(pidx, ptr, "NOT_LITERAL_IGNORE " + pattern[pidx]);
+// TRACE(pidx, ptr, "NOT_LITERAL_IGNORE " + pattern[pidx]);
if (ptr >= end || lower(str[ptr]) == lower(pattern[pidx]))
return 0;
pidx++;
@@ -672,7 +672,7 @@
break;
case SRE_OP_IN_IGNORE:
- TRACE(pidx, ptr, "IN_IGNORE");
+// TRACE(pidx, ptr, "IN_IGNORE");
if (ptr >= end ||
!SRE_CHARSET(pattern, pidx + 1, lower(str[ptr])))
return 0;
@@ -685,7 +685,7 @@
case SRE_OP_INFO:
/* jump forward */
/* <JUMP> <offset> */
- TRACE(pidx, ptr, "JUMP " + pattern[pidx]);
+// TRACE(pidx, ptr, "JUMP " + pattern[pidx]);
pidx += pattern[pidx];
break;
@@ -730,7 +730,7 @@
int mincount = pattern[pidx+1];
- TRACE(pidx, ptr, "REPEAT_ONE " + mincount + " " + pattern[pidx+2]);
+// TRACE(pidx, ptr, "REPEAT_ONE " + mincount + " " + pattern[pidx+2]);
if (ptr + mincount > end)
return 0; /* cannot match */
@@ -808,7 +808,7 @@
/* <MIN_REPEAT_ONE> <skip> <1=min> <2=max> item <SUCCESS> tail */
- TRACE(pidx, ptr, "MIN_REPEAT_ONE");
+// TRACE(pidx, ptr, "MIN_REPEAT_ONE");
if (ptr + pattern[pidx+1] > end)
return 0; /* cannot match */
@@ -866,7 +866,7 @@
by the UNTIL operator (MAX_UNTIL, MIN_UNTIL) */
/* <REPEAT> <skip> <1=min> <2=max> item <UNTIL> tail */
- TRACE(pidx, ptr, "REPEAT " + pattern[pidx+1] + " " + pattern[pidx+2]);
+// TRACE(pidx, ptr, "REPEAT " + pattern[pidx+1] + " " + pattern[pidx+2]);
SRE_REPEAT rep = new SRE_REPEAT(repeat);
rep.count = -1;
@@ -894,7 +894,7 @@
count = rp.count + 1;
- TRACE(pidx, ptr, "MAX_UNTIL " + count);
+// TRACE(pidx, ptr, "MAX_UNTIL " + count);
if (count < pattern[rp.pidx + 1]) {
/* not enough matches */
@@ -949,7 +949,7 @@
count = rp.count + 1;
- TRACE(pidx, ptr, "MIN_UNTIL " + count + " " + rp.pidx);
+// TRACE(pidx, ptr, "MIN_UNTIL " + count + " " + rp.pidx);
if (count < pattern[rp.pidx + 1]) {
/* not enough matches */
@@ -993,7 +993,7 @@
case SRE_OP_GROUPREF:
/* match backreference */
i = pattern[pidx];
- TRACE(pidx, ptr, "GROUPREF " + i);
+// TRACE(pidx, ptr, "GROUPREF " + i);
int p = mark[i+i];
int e = mark[i+i+1];
if (p == -1 || e == -1 || e < p)
@@ -1010,7 +1010,7 @@
case SRE_OP_GROUPREF_IGNORE:
/* match backreference */
i = pattern[pidx];
- TRACE(pidx, ptr, "GROUPREF_IGNORE " + i);
+// TRACE(pidx, ptr, "GROUPREF_IGNORE " + i);
p = mark[i+i];
e = mark[i+i+1];
if (p == -1 || e == -1 || e < p)
@@ -1026,7 +1026,7 @@
case SRE_OP_GROUPREF_EXISTS:
i = pattern[pidx];
- TRACE(pidx, ptr, "GROUPREF_EXISTS " + i);
+// TRACE(pidx, ptr, "GROUPREF_EXISTS " + i);
p = mark[i+i];
e = mark[i+i+1];
if (p == -1 || e == -1 || e < p) {
@@ -1039,7 +1039,7 @@
case SRE_OP_ASSERT:
/* assert subpattern */
/* args: <skip> <back> <pattern> */
- TRACE(pidx, ptr, "ASSERT " + pattern[pidx+1]);
+// TRACE(pidx, ptr, "ASSERT " + pattern[pidx+1]);
this.ptr = ptr - pattern[pidx + 1];
if (this.ptr < this.beginning)
@@ -1053,7 +1053,7 @@
case SRE_OP_ASSERT_NOT:
/* assert not subpattern */
/* args: <skip> <pattern> */
- TRACE(pidx, ptr, "ASSERT_NOT " + pattern[pidx]);
+// TRACE(pidx, ptr, "ASSERT_NOT " + pattern[pidx]);
this.ptr = ptr - pattern[pidx + 1];
if (this.ptr >= this.beginning) {
i = SRE_MATCH(pattern, pidx + 2, level + 1);
@@ -1067,11 +1067,11 @@
case SRE_OP_FAILURE:
/* immediate failure */
- TRACE(pidx, ptr, "FAILURE");
+// TRACE(pidx, ptr, "FAILURE");
return 0;
default:
- TRACE(pidx, ptr, "UNKNOWN " + pattern[pidx-1]);
+// TRACE(pidx, ptr, "UNKNOWN " + pattern[pidx-1]);
return SRE_ERROR_ILLEGAL;
}
}
@@ -1145,7 +1145,7 @@
} else {
if (++i == prefix_len) {
/* found a potential match */
- TRACE(pidx, ptr, "SEARCH SCAN " + prefix_skip + " " + prefix_len);
+// TRACE(pidx, ptr, "SEARCH SCAN " + prefix_skip + " " + prefix_len);
this.start = ptr + 1 - prefix_len;
this.ptr = ptr + 1 - prefix_len + prefix_skip;
if ((flags & SRE_INFO_LITERAL) != 0)
@@ -1175,7 +1175,7 @@
ptr++;
if (ptr == end)
return 0;
- TRACE(pidx, ptr, "SEARCH LITERAL");
+// TRACE(pidx, ptr, "SEARCH LITERAL");
this.start = ptr;
this.ptr = ++ptr;
if ((flags & SRE_INFO_LITERAL) != 0)
@@ -1193,7 +1193,7 @@
ptr++;
if (ptr == end)
return 0;
- TRACE(pidx, ptr, "SEARCH CHARSET");
+// TRACE(pidx, ptr, "SEARCH CHARSET");
this.start = ptr;
this.ptr = ptr;
status = SRE_MATCH(pattern, pidx, 1);
@@ -1205,7 +1205,7 @@
} else {
/* general case */
while (ptr <= end) {
- TRACE(pidx, ptr, "SEARCH");
+// TRACE(pidx, ptr, "SEARCH");
this.start = this.ptr = ptr++;
status = SRE_MATCH(pattern, pidx, 1);
if (status != 0)
@@ -1363,12 +1363,12 @@
mark_fini();
}
- // XXX - this should get hot-spotted out, but for now useful for doing further optimization
- // of this code (by comparing to CPython 2.5.2)
- private static final boolean do_trace = false;
- private void TRACE(int pidx, int ptr, String string) {
- if (do_trace) {
- System.out.println(" |" + pidx + "|" + Integer.toHexString(ptr) + ": " + string);
- }
- }
+ // XXX - this should get hot-spotted out, but that can take some time. Devs should just re-enable.
+ // See http://bugs.jython.org/issue1725
+// private static final boolean do_trace = false;
+// private void TRACE(int pidx, int ptr, String string) {
+// if (do_trace) {
+// System.out.println(" |" + pidx + "|" + Integer.toHexString(ptr) + ": " + string);
+// }
+// }
}
--
Repository URL: https://hg.python.org/jython
More information about the Jython-checkins
mailing list