• Leszek Swirski's avatar
    [maglev] Rudimentary check elimination · 5f3cc635
    Leszek Swirski authored
    Add a simple forward check elimination based on a side hashmap of "known
    node aspects", namely the node type and node map (if any). This set of
    aspects is cloned when merge states are created, and destructively
    merged when merged into existing merge states -- destructive cloning
    here means removing any mismatching information. This allows information
    in dominators to be preserved.
    
    Maps are kept separate from node types because we want to distinguish
    between stable and unstable maps, where the former need a dependency and
    the latter must be flushed across side-effecting calls.
    
    The representation of this known information is currently very
    inefficient, and won't win us any compilation speed prizes -- just
    ZoneMaps keyed on ValueNode*. We should optimize this to take into
    account some sort of liveness information, and clear out nodes that
    aren't reachable anymore. There is also a lot more information we could
    store per Node, e.g. known loaded fields or alternative representations;
    depending on what we want to store and how that has to be invalidated,
    we likely might need an alternative way of representing it. This
    implementation is good enough for now though, for measuring the impact
    of check elimination.
    
    Bug: v8:7700
    Change-Id: I2f001dedf8ab5d86f8acaa22416617bd80701982
    Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3865160
    Auto-Submit: Leszek Swirski <leszeks@chromium.org>
    Reviewed-by: 's avatarVictor Gomes <victorgomes@chromium.org>
    Reviewed-by: 's avatarIgor Sheludko <ishell@chromium.org>
    Reviewed-by: 's avatarJakob Linke <jgruber@chromium.org>
    Commit-Queue: Igor Sheludko <ishell@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#82911}
    5f3cc635
Name
Last commit
Last update
.github Loading commit data...
bazel Loading commit data...
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...
.bazelrc 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...
.mailmap Loading commit data...
.style.yapf Loading commit data...
.vpython Loading commit data...
.vpython3 Loading commit data...
.ycm_extra_conf.py Loading commit data...
AUTHORS Loading commit data...
BUILD.bazel Loading commit data...
BUILD.gn Loading commit data...
CODE_OF_CONDUCT.md Loading commit data...
COMMON_OWNERS Loading commit data...
DEPS Loading commit data...
DIR_METADATA 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...
LOONG_OWNERS 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...
RISCV_OWNERS Loading commit data...
S390_OWNERS Loading commit data...
WATCHLISTS Loading commit data...
WORKSPACE Loading commit data...
codereview.settings Loading commit data...