• Jakob Gruber's avatar
    [regexp] Fix stack growth for global regexps · 3e3a027d
    Jakob Gruber authored
    Irregexp reentrancy (crrev.com/c/3162604) introduced a bug for global
    regexp execution in which each iteration would use a new stack region
    (i.e. we forgot to pop the regexp stack pointer when starting a new
    iteration).
    
    This CL fixes that by popping the stack pointer on the loop backedge.
    
    At a high level:
    
    - Initialize the backtrack_stackpointer earlier and avoid clobbering
      it by setup code.
    - Pop it on the loop backedge.
    - Slightly refactor Push/Pop operations to avoid unneeded memory
      accesses.
    
    Bug: v8:11382
    Change-Id: Ibad6235767e110089a2b346034f923590b286a05
    Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3194251Reviewed-by: 's avatarPatrick Thier <pthier@chromium.org>
    Commit-Queue: Jakob Gruber <jgruber@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#77158}
    3e3a027d
regexp-macro-assembler-x64.cc 48.1 KB