• mythria's avatar
    [Interpreter] Optimize equality check with null/undefined with a check on the map. · 9119d169
    mythria authored
    Equality with null/undefined is equivalent to a check on the undetectable bit
    on the map of the object. This would be more efficient than performing the entire
    comparison operation.
    
    This cl introduces:
    1. A new bytecode called TestUndetectable that checks if the object is null/undefined.
    2. Updates peeophole optimizer to emit TestUndetectable when a LdaNull/Undefined
    precedes equality check.
    4. TestUndetectable is transformed to ObjectIsUndetectable operator when building
    turbofan graph.
    
    BUG=v8:4280
    
    Review-Url: https://codereview.chromium.org/2547043002
    Cr-Commit-Position: refs/heads/master@{#41514}
    9119d169
Name
Last commit
Last update
..
OWNERS Loading commit data...
bytecode-array-accessor.cc Loading commit data...
bytecode-array-accessor.h Loading commit data...
bytecode-array-builder.cc Loading commit data...
bytecode-array-builder.h Loading commit data...
bytecode-array-iterator.cc Loading commit data...
bytecode-array-iterator.h Loading commit data...
bytecode-array-random-iterator.cc Loading commit data...
bytecode-array-random-iterator.h Loading commit data...
bytecode-array-writer.cc Loading commit data...
bytecode-array-writer.h Loading commit data...
bytecode-dead-code-optimizer.cc Loading commit data...
bytecode-dead-code-optimizer.h Loading commit data...
bytecode-decoder.cc Loading commit data...
bytecode-decoder.h Loading commit data...
bytecode-flags.cc Loading commit data...
bytecode-flags.h Loading commit data...
bytecode-generator.cc Loading commit data...
bytecode-generator.h Loading commit data...
bytecode-label.cc Loading commit data...
bytecode-label.h Loading commit data...
bytecode-operands.cc Loading commit data...
bytecode-operands.h Loading commit data...
bytecode-peephole-optimizer.cc Loading commit data...
bytecode-peephole-optimizer.h Loading commit data...
bytecode-peephole-table.h Loading commit data...
bytecode-pipeline.cc Loading commit data...
bytecode-pipeline.h Loading commit data...
bytecode-register-allocator.h Loading commit data...
bytecode-register-optimizer.cc Loading commit data...
bytecode-register-optimizer.h Loading commit data...
bytecode-register.cc Loading commit data...
bytecode-register.h Loading commit data...
bytecode-traits.h Loading commit data...
bytecodes.cc Loading commit data...
bytecodes.h Loading commit data...
constant-array-builder.cc Loading commit data...
constant-array-builder.h Loading commit data...
control-flow-builders.cc Loading commit data...
control-flow-builders.h Loading commit data...
handler-table-builder.cc Loading commit data...
handler-table-builder.h Loading commit data...
interpreter-assembler.cc Loading commit data...
interpreter-assembler.h Loading commit data...
interpreter-intrinsics.cc Loading commit data...
interpreter-intrinsics.h Loading commit data...
interpreter.cc Loading commit data...
interpreter.h Loading commit data...
mkpeephole.cc Loading commit data...