• Leszek Swirski's avatar
    [hashtable] Allow GlobalDictionary to have holes · 82726b64
    Leszek Swirski authored
    Rather than marking deleted GlobalDictionary entries with a "The Hole"
    valued PropertyCell, we now remove those PropertyCells entirely and
    use the standard HashTable deleted item marker (also the Hole).
    
    This comes with several simplifications:
    
      1) We no longer need a customizable IsKey method on HastTable shapes,
         which was only used by GlobalDictionary to mark "The Hole" cells
         as not real keys,
      2) We can get rid of IsLive/IsKey from the Shape entirely, and define
         it directly in the HashTable, which will also allow us (in the
         future) to encourage caching of "undefined" and "Hole" where used
         for IsKey checks,
      3) PropertyCell invalidation doesn't necessarily have to allocate a
         new replacement cell (specifically, on deletion), nor does it have
         to deal with cells that contain the Hole,
      4) kNeedsHoleCheck is renamed to kMatchNeedsHoleCheck (to be explicit
         that this is only needed to guard IsMatch, which may do an
         indentity comparison and thus not need the HoleCheck guard). It's
         also moved out of BaseShape and into the various shapes that
         define IsMatch, to make them more explicitly think about the
         value,
      5) Modified some while loops into for loops to allow clearer use of
         "continue" on successful hole checks.
    
    Change-Id: If591cbb6b49d59726bdc615413aba4f78fd64632
    Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2292230
    Commit-Queue: Leszek Swirski <leszeks@chromium.org>
    Auto-Submit: Leszek Swirski <leszeks@chromium.org>
    Reviewed-by: 's avatarIgor Sheludko <ishell@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#68807}
    82726b64
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...