• Nico Hartmann's avatar
    [torque] Reduce generated CSA variables and labels · 89b248b6
    Nico Hartmann authored
    This CL significantly reduces the size of CSA files generated from
    torque by introducing only those Phis at block entry that are
    required and otherwise uses defined values directly.
    
    To do so it does:
    - Define a DefinitionLocation that represents where a value is
      defined.
    - For each block compute all the definitions that reach that
      block and introduce a phi iff the reaching definitions for a value
      are not the same for all predecessor blocks.
    - In CSAGenerator map all DefinitionLocations to variables, such that
      if the same value is used in multiple blocks, it is mapped to the
      same variable without the need to pass it along the jump. This
      reduces both the arguments passed to Goto, Branch, ... and the
      variables that need to be passed to Bind when the block's label is
      bound. This reduces the number of temporary variables
      significantly. Temporaries are declared outside of blocks now
      in order to be accessible from other blocks.
    
    Drive-by changes:
    - Sequences of SetSourcePosition calls are merged if no output is
      generated between them.
    - Dead blocks are no longer generated in release builds.
    
    Bug: v8:9861
    Change-Id: I5c30e5376e93c424c3ebfc5144a08592d77ae61f
    Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2037444
    Commit-Queue: Nico Hartmann <nicohartmann@chromium.org>
    Reviewed-by: 's avatarTobias Tebbi <tebbi@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#66225}
    89b248b6
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...
LICENSE.valgrind 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...