• Jakob Gruber's avatar
    [compiler] Allocate in a temporary zone inside ComputeLoopState · d267c337
    Jakob Gruber authored
    Even in the most basic case (the task queue only ever contains a single
    element), this function triggers ~4KB in zone allocations. These
    allocations are basically lost and can never be reused. Avoid this by
    allocating inside a new temporary zone that is only alive during the
    ComputeLoopState function call.
    
    This reduces allocation size for the zone used during load elimination
    from ~30KB to ~15KB when compiling a trivial for-loop example.
    
    An alternative solution would be to switch to something similar to
    SmallVector (which uses a statically-sized stack storage before
    switching to heap allocations), but based on zones instead of malloc.
    
    Bug: v8:9427,v8:6150
    Change-Id: Ic25abe6d48ac718c9ced2f9ef581f244030980fa
    Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1714869
    Commit-Queue: Jakob Gruber <jgruber@chromium.org>
    Reviewed-by: 's avatarGeorg Neis <neis@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#62883}
    d267c337
load-elimination.cc 51.3 KB