• Tom Lane's avatar
    Remove useless "retry memory" logic within regex engine. · 3cbfe485
    Tom Lane authored
    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.
    3cbfe485
regguts.h 14 KB