• Jakob Gruber's avatar
    [regexp] Don't use eats_at_least for backwards loops · c977b65b
    Jakob Gruber authored
    The eats_at_least (EAL) value is applied in forward-directions only.
    Two reasons for that which are relevant to this CL:
    
    - EAL's of neighboring nodes are combined additively, irrespective of
      their read_backward value.
    - EatsAtLeastPropagator::VisitText uses the successor's
      eats_at_least_from_not_start value, which doesn't work properly for
      read_backwards successors (which may end at the start).
    
    A symptom of this bug was that we applied an incorrect EAL of 255
    starting at the initial 'x' of /x(?<=^x{4})/); for subject strings
    shorter than 255 chars, this would result in an incorrect failure
    result.
    
    Bug: v8:11616
    Change-Id: I4b2b1b78f0cea8f59e4beb1037ee46035d83c927
    Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2807596Reviewed-by: 's avatarSeth Brenith <seth.brenith@microsoft.com>
    Commit-Queue: Jakob Gruber <jgruber@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#73848}
    c977b65b
regexp-compiler.cc 149 KB