• Seth Brenith's avatar
    [torque] Generate shorter code for indexed field accesses · 73a8eded
    Seth Brenith authored
    Currently, when accessing a field that doesn't have a constant offset,
    Torque emits code to compute each preceding indexed field's length and
    add them all together. This works, but such code can get super long if a
    class has many indexed fields, and especially if the length expressions
    of some indexed fields refer to other indexed fields. We'd like the
    output of the new C++ backend to be short enough to go in inline headers
    which will be included in many compilation units.
    
    This change attempts to reorganize the code so that the computation of
    each length expression can only be emitted exactly once. This only
    shortens the generated C++ code; the resulting TurboFan output should be
    identical. There are two main parts:
    1. For each indexed field, we already generate a macro that can get a
       Slice referring to that field. Update these macros to not use the dot
       operator on that field. Using the dot operator on the predecessor
       field is allowed.
    2. Update the dot operator for indexed fields to emit a call to the
       macro from step 1.
    
    This sort of reverses the dependency added by the previous change
    https://crrev.com/c/2429566 : rather than the slice macros depending on
    the dot operator, this change makes the dot operator depend on the slice
    macros.
    
    The overall torque_generated directory shrinks by under 1% with this
    change, but the runtime_macros.cc file (which should eventually become
    inline headers) shrinks by 24%. More to the point, this change keeps
    runtime_macros.cc from ballooning out of control when we add a
    work-in-progress Torque definition for ScopeInfo
    ( https://crrev.com/c/2357758 ).
    
    Bug: v8:7793
    Change-Id: I989dda9c3666f1a49281fef03acb35baebb5b63a
    Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2432070Reviewed-by: 's avatarTobias Tebbi <tebbi@chromium.org>
    Commit-Queue: Seth Brenith <seth.brenith@microsoft.com>
    Cr-Commit-Position: refs/heads/master@{#70325}
    73a8eded
Name
Last commit
Last update
..
ls Loading commit data...
OWNERS Loading commit data...
ast.h Loading commit data...
cc-generator.cc Loading commit data...
cc-generator.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-macro-shims.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-code-generator.cc Loading commit data...
torque-code-generator.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...