summaryrefslogtreecommitdiff
path: root/src/backend/regex/regcomp.c
diff options
context:
space:
mode:
authorTom Lane2012-02-24 08:36:49 +0000
committerTom Lane2012-02-24 23:40:28 +0000
commit3cbfe485e44d055b9e6a27e47069729375059f8c (patch)
tree4ad523e2cc97860ab6230a2041c0abeac918aefd /src/backend/regex/regcomp.c
parent1fbacbf998678ae8d5868aeea3e83c915e940d0a (diff)
Remove useless "retry memory" logic within regex engine.
Apparently some primordial version of Spencer's engine needed cdissect() and child functions to be able to continue matching from a previous position when re-called. That is dead code, though, since trivial inspection shows that cdissect can never be entered without having previously done zapmem which resets the relevant retry counter. I have also verified experimentally that no case in the Tcl regression tests reaches cdissect with a nonzero retry value. Accordingly, remove that logic. This doesn't really save any noticeable number of cycles in itself, but it is one step towards making dissect() and cdissect() equivalent, which will allow removing hundreds of lines of near-duplicated code. Since struct subre's "retry" field is no longer particularly related to any kind of retry, rename it to "id". As of this commit it's only used for identifying a subre node in debug printouts, so you might think we should get rid of the field entirely; but I have a plan for another use.
Diffstat (limited to 'src/backend/regex/regcomp.c')
-rw-r--r--src/backend/regex/regcomp.c14
1 files changed, 7 insertions, 7 deletions
diff --git a/src/backend/regex/regcomp.c b/src/backend/regex/regcomp.c
index b84d0c3af55..7fd0b07e2c5 100644
--- a/src/backend/regex/regcomp.c
+++ b/src/backend/regex/regcomp.c
@@ -1623,7 +1623,7 @@ subre(struct vars * v,
ret->op = op;
ret->flags = flags;
- ret->retry = 0;
+ ret->id = 0; /* will be assigned later */
ret->subno = 0;
ret->min = ret->max = 1;
ret->left = NULL;
@@ -1693,7 +1693,7 @@ optst(struct vars * v,
}
/*
- * numst - number tree nodes (assigning retry indexes)
+ * numst - number tree nodes (assigning "id" indexes)
*/
static int /* next number */
numst(struct subre * t,
@@ -1704,7 +1704,7 @@ numst(struct subre * t,
assert(t != NULL);
i = start;
- t->retry = (short) i++;
+ t->id = (short) i++;
if (t->left != NULL)
i = numst(t->left, i);
if (t->right != NULL)
@@ -1999,11 +1999,11 @@ stid(struct subre * t,
char *buf,
size_t bufsize)
{
- /* big enough for hex int or decimal t->retry? */
- if (bufsize < sizeof(void *) * 2 + 3 || bufsize < sizeof(t->retry) * 3 + 1)
+ /* big enough for hex int or decimal t->id? */
+ if (bufsize < sizeof(void *) * 2 + 3 || bufsize < sizeof(t->id) * 3 + 1)
return "unable";
- if (t->retry != 0)
- sprintf(buf, "%d", t->retry);
+ if (t->id != 0)
+ sprintf(buf, "%d", t->id);
else
sprintf(buf, "%p", t);
return buf;