• rmcilroy's avatar
    [Interpreter] Replace BytecodeRegisterAllocator with a simple bump pointer. · 27fe988b
    rmcilroy authored
    There are only a few occasions where we allocate a register in an outer
    expression allocation scope, which makes the costly free-list approach
    of the BytecodeRegisterAllocator unecessary. This CL replaces all
    occurrences with moves to the accumulator and stores to a register
    allocated in the correct scope. By doing this, we can simplify the
    BytecodeRegisterAllocator to be a simple bump-pointer allocator
    with registers released in the same order as allocated.
    
    The following changes are also made:
     - Make BytecodeRegisterOptimizer able to use registers which have been
       unallocated, but not yet reused
     - Remove RegisterExpressionResultScope and rename
       AccumulatorExpressionResultScope to ValueExpressionResultScope
     - Introduce RegisterList to represent consecutive register
       allocations, and use this for operands to call bytecodes.
    
    By avoiding the free-list handling, this gives another couple of
    percent on CodeLoad.
    
    BUG=v8:4280
    
    Review-Url: https://codereview.chromium.org/2369873002
    Cr-Commit-Position: refs/heads/master@{#39905}
    27fe988b
bytecode-array-builder.cc 31.8 KB