• 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
build_overrides Loading commit data...
custom_deps Loading commit data...
docs Loading commit data...
gni Loading commit data...
include Loading commit data...
infra Loading commit data...
samples Loading commit data...
src Loading commit data...
test Loading commit data...
testing Loading commit data...
third_party Loading commit data...
tools Loading commit data...
.clang-format Loading commit data...
.clang-tidy Loading commit data...
.editorconfig Loading commit data...
.flake8 Loading commit data...
.git-blame-ignore-revs Loading commit data...
.gitattributes Loading commit data...
.gitignore Loading commit data...
.gn Loading commit data...
.vpython Loading commit data...
.ycm_extra_conf.py Loading commit data...
AUTHORS Loading commit data...
BUILD.gn Loading commit data...
CODE_OF_CONDUCT.md Loading commit data...
COMMON_OWNERS Loading commit data...
DEPS Loading commit data...
ENG_REVIEW_OWNERS Loading commit data...
INFRA_OWNERS Loading commit data...
INTL_OWNERS Loading commit data...
LICENSE Loading commit data...
LICENSE.fdlibm Loading commit data...
LICENSE.strongtalk Loading commit data...
LICENSE.v8 Loading commit data...
MIPS_OWNERS Loading commit data...
OWNERS Loading commit data...
PPC_OWNERS Loading commit data...
PRESUBMIT.py Loading commit data...
README.md Loading commit data...
S390_OWNERS Loading commit data...
WATCHLISTS Loading commit data...
codereview.settings Loading commit data...