• Daniel Clifford's avatar
    [ignition] Optimize reloading of registers before Dispatch · bd21c2bd
    Daniel Clifford authored
    Before this patch, the registers needed for bytecode dispatch in interpreter
    handlers were inconsistently stored in the interpreter frame and/or kept in
    values that remained live across calls.
    
    After this patch, these registers are explicitly reloaded after calls, making it
    possible to elide the spills of those registers before the call in many cases.
    
    Some highlights from the CL:
    
    * Added methods to the CSA and InterpreterAssembler to efficiently store and
      load Smis values and Smi interpreter registers on x64 without explicit
      tagging/untagging.
    
    * Created Variables for all of the interpreter-internal values that need to be
      reloaded before bytecode dispatch at the end of an interpreter handler.
    
    * The bytecode offset can be written out early in a handler by marking it
      has having a call along it's critical path. By moving this early in a
      handler, it becomes possible to use memory operands for pushes used to
      marshall parameters when making calls.
    
    Change-Id: Icf8d7798789f88a4489e06a7092616bbbb881577
    Reviewed-on: https://chromium-review.googlesource.com/442566
    Commit-Queue: Daniel Clifford <danno@chromium.org>
    Reviewed-by: 's avatarRoss McIlroy <rmcilroy@chromium.org>
    Reviewed-by: 's avatarMichael Starzinger <mstarzinger@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#43260}
    bd21c2bd
Name
Last commit
Last update
benchmarks Loading commit data...
build_overrides Loading commit data...
docs Loading commit data...
gni Loading commit data...
gypfiles 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...
.gitignore Loading commit data...
.gn 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...
ChangeLog Loading commit data...
DEPS Loading commit data...
LICENSE Loading commit data...
LICENSE.fdlibm Loading commit data...
LICENSE.strongtalk Loading commit data...
LICENSE.v8 Loading commit data...
LICENSE.valgrind Loading commit data...
Makefile Loading commit data...
Makefile.android Loading commit data...
OWNERS Loading commit data...
PRESUBMIT.py Loading commit data...
README.md Loading commit data...
WATCHLISTS Loading commit data...
codereview.settings Loading commit data...
snapshot_toolchain.gni Loading commit data...