• Martin Bidlingmaier's avatar
    [regexp] Check capture_count before using experimental engine · bc4174cc
    Martin Bidlingmaier authored
    Sometimes the parser throws away redundant parts of the AST while
    parsing.  For example, the regexp /(?:(?=(f)o))?f/ is (almost)
    equivalent to just /f/ because the optional block (...)? is zero-length.
    The parser notices this and returns the same tree as for /f/.  However,
    there is a capture inside the (...)? block (which is never recorded
    because the quantifier containing it can only match zero-width, which is
    considered failure), so in this case it doesn't suffice to check that
    the regexp AST doesn't contain captures.
    
    Cq-Include-Trybots: luci.v8.try:v8_linux64_fyi_rel_ng
    Bug: v8:10765
    Change-Id: I6145849d95b3522a397eadd2bae63d1d8e880f28
    Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2397896Reviewed-by: 's avatarJakob Gruber <jgruber@chromium.org>
    Commit-Queue: Martin Bidlingmaier <mbid@google.com>
    Cr-Commit-Position: refs/heads/master@{#69733}
    bc4174cc
experimental-compiler.cc 11.8 KB