• mlippautz's avatar
    [heap] Use HashMap as scratchpad backing store · 55422bdd
    mlippautz authored
    We use a scratchpad to remember visited allocation sites for post processing
    (making tenure decisions). The previous implementation used a rooted FixedArray
    with constant length (256) to remember all sites. Updating the scratchpad is a
    bottleneck in any parallel/concurrent implementation of newspace evacuation.
    
    The new implementation uses a HashMap with allocation sites as keys and
    temporary counts as values. During evacuation we collect a local hashmap of
    visited allocation sites. Upon merging the local hashmap back into a global one
    we update potential forward pointers of compacted allocation sites.  The
    scavenger can directly enter its entries into the global hashmap. Note that the
    actual memento found count is still kept on the AllocationSite as it needs to
    survive scavenges and full GCs.
    
    BUG=chromium:524425
    LOG=N
    R=hpayer@chromium.org
    
    Review URL: https://codereview.chromium.org/1535723002
    
    Cr-Commit-Position: refs/heads/master@{#33233}
    55422bdd
Name
Last commit
Last update
benchmarks Loading commit data...
build Loading commit data...
docs 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/binutils Loading commit data...
tools Loading commit data...
.clang-format Loading commit data...
.gitignore Loading commit data...
.ycm_extra_conf.py Loading commit data...
AUTHORS Loading commit data...
BUILD.gn Loading commit data...
ChangeLog Loading commit data...
DEPS Loading commit data...
LICENSE 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...
Makefile.nacl 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...