• rmcilroy's avatar
    [Interpreter] Optimize BytecodeArrayBuilder and BytecodeArrayWriter. · b11a8b4d
    rmcilroy authored
    This CL optimizes the code in BytecodeArrayBuilder and
    BytecodeArrayWriter by making the following main changes:
    
     - Move operand scale calculation out of BytecodeArrayWriter to the
    BytecodeNode constructor, where the decision on which operands are
    scalable can generally be statically decided by the compiler.
     - Move the maximum register calculation out of BytecodeArrayWriter
    and into BytecodeRegisterOptimizer (which is the only place outside
    BytecodeGenerator which updates which registers are used). This
    avoids the BytecodeArrayWriter needing to know the operand types
    of a node as it writes it.
     - Modify EmitBytecodes to use individual push_backs rather than
    building a buffer and calling insert, since this turns out to be faster.
     - Initialize BytecodeArrayWriter's bytecode vector by reserving 512
    bytes,
     - Make common functions in Bytecodes constexpr so that they
    can be statically calculated by the compiler.
     - Move common functions and constructors in Bytecodes and
    BytecodeNode to the header so that they can be inlined.
     - Change large static switch statements in Bytecodes to const array
    lookups, and move to the header to allow inlining.
    
    I also took the opportunity to remove a number of unused helper
    functions, and rework some others for consistency.
    
    This reduces the percentage of time spent in making BytecodeArrays
     in  CodeLoad from ~15% to ~11% according to perf. The
    CoadLoad score increase by around 2%.
    
    BUG=v8:4280
    
    Review-Url: https://codereview.chromium.org/2351763002
    Cr-Commit-Position: refs/heads/master@{#39599}
    b11a8b4d
Name
Last commit
Last update
..
benchmarks Loading commit data...
cctest Loading commit data...
common Loading commit data...
fuzzer Loading commit data...
inspector_protocol_parser_test Loading commit data...
intl Loading commit data...
js-perf-test Loading commit data...
memory Loading commit data...
message Loading commit data...
mjsunit Loading commit data...
mozilla Loading commit data...
preparser Loading commit data...
promises-aplus Loading commit data...
simdjs Loading commit data...
test262 Loading commit data...
unittests Loading commit data...
webkit Loading commit data...
BUILD.gn Loading commit data...
bot_default.gyp Loading commit data...
bot_default.isolate Loading commit data...
default.gyp Loading commit data...
default.isolate Loading commit data...
optimize_for_size.gyp Loading commit data...
optimize_for_size.isolate Loading commit data...
perf.gyp Loading commit data...
perf.isolate Loading commit data...