• 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
..
api Loading commit data...
asmjs Loading commit data...
ast Loading commit data...
base Loading commit data...
builtins Loading commit data...
codegen Loading commit data...
common Loading commit data...
compiler Loading commit data...
compiler-dispatcher Loading commit data...
d8 Loading commit data...
date Loading commit data...
debug Loading commit data...
deoptimizer Loading commit data...
diagnostics Loading commit data...
execution Loading commit data...
extensions Loading commit data...
flags Loading commit data...
handles Loading commit data...
heap Loading commit data...
ic Loading commit data...
init Loading commit data...
inspector Loading commit data...
interpreter Loading commit data...
json Loading commit data...
libplatform Loading commit data...
libsampler Loading commit data...
logging Loading commit data...
numbers Loading commit data...
objects Loading commit data...
parsing Loading commit data...
profiler Loading commit data...
protobuf Loading commit data...
regexp Loading commit data...
roots Loading commit data...
runtime Loading commit data...
sanitizer Loading commit data...
snapshot Loading commit data...
strings Loading commit data...
tasks Loading commit data...
third_party Loading commit data...
torque Loading commit data...
tracing Loading commit data...
trap-handler Loading commit data...
utils Loading commit data...
wasm Loading commit data...
zone Loading commit data...
DEPS Loading commit data...
OWNERS Loading commit data...