• Seth Brenith's avatar
    [torque] Generate better code when using `&` operator on bitfields · 98438d86
    Seth Brenith authored
    Sometimes CSA code carefully constructs a mask to check several
    bitfields at once. Thus far, such a check has been very awkward to write
    in Torque. This change adds a way to do so, using the
    non-short-circuiting binary `&` operator. So now you can write an
    expression that depends on several bitfields from a bitfield struct,
    like `x.a == 5 & x.b & !x.c & x.d == 2` (assuming b is a one-bit value),
    and it will be reduced to a single mask and equality check. To
    demonstrate a usage of this new reduction, this change ports the trivial
    macro IsSimpleObjectMap to Torque. I manually verified that the
    generated code for the builtin SetDataProperties, which uses that macro,
    is unchanged.
    
    Bug: v8:7793
    Change-Id: I4a23e0005d738a6699ea0f2a63f9fd67b01e7026
    Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2183276
    Commit-Queue: Seth Brenith <seth.brenith@microsoft.com>
    Reviewed-by: 's avatarTobias Tebbi <tebbi@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#67948}
    98438d86
Name
Last commit
Last update
..
ls Loading commit data...
OWNERS Loading commit data...
ast.h Loading commit data...
cfg.cc Loading commit data...
cfg.h Loading commit data...
class-debug-reader-generator.cc Loading commit data...
constants.h Loading commit data...
contextual.h Loading commit data...
csa-generator.cc Loading commit data...
csa-generator.h Loading commit data...
declarable.cc Loading commit data...
declarable.h Loading commit data...
declaration-visitor.cc Loading commit data...
declaration-visitor.h Loading commit data...
declarations.cc Loading commit data...
declarations.h Loading commit data...
earley-parser.cc Loading commit data...
earley-parser.h Loading commit data...
global-context.cc Loading commit data...
global-context.h Loading commit data...
implementation-visitor.cc Loading commit data...
implementation-visitor.h Loading commit data...
instance-type-generator.cc Loading commit data...
instructions.cc Loading commit data...
instructions.h Loading commit data...
parameter-difference.h Loading commit data...
runtime-support.h Loading commit data...
server-data.cc Loading commit data...
server-data.h Loading commit data...
source-positions.cc Loading commit data...
source-positions.h Loading commit data...
torque-compiler.cc Loading commit data...
torque-compiler.h Loading commit data...
torque-parser.cc Loading commit data...
torque-parser.h Loading commit data...
torque.cc Loading commit data...
type-inference.cc Loading commit data...
type-inference.h Loading commit data...
type-oracle.cc Loading commit data...
type-oracle.h Loading commit data...
type-visitor.cc Loading commit data...
type-visitor.h Loading commit data...
types.cc Loading commit data...
types.h Loading commit data...
utils.cc Loading commit data...
utils.h Loading commit data...