• Jakob Gruber's avatar
    [gasm] Implement ReduceArrayPrototypeForEach using the graph assembler · 971e81ad
    Jakob Gruber authored
    After landing a few relatively simple ports in preceding work, this CL
    ports the more involved Array.prototype.forEach reduction, containing
    checkpoints, JS and runtime calls, loops, and exceptions. With the
    mechanisms introduced in this change, I'd expect a large chunk of
    js-call reductions to be trivially portable.
    
    Newly introduced:
    - IfBuilder0 for if-then-else statements (with optional else).
    - ForBuilder for for-loop statements.
    - MayThrow() for exceptional control flow. Exceptional edges are
      automatically merged and wired into the outer graph if necessary.
    
    Bug: v8:9972
    Change-Id: I835bf90c5871fbd94a1d12721d44b500fbef75e2
    Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1921798Reviewed-by: 's avatarGeorg Neis <neis@chromium.org>
    Reviewed-by: 's avatarMichael Stanton <mvstanton@chromium.org>
    Commit-Queue: Jakob Gruber <jgruber@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#65193}
    971e81ad
graph-assembler.cc 27 KB