dfc6b4ddaa
This patch changes how space size and capacity are updated in GC: - space capacity changes only when a page added/removed from the space. - space size is reset to zero before sweeping and incremented by page->live_bytes_count_ for each to-be-swept page. - space size is refined after sweeping using the accurate page->allocated_bytes counter produces by the sweeper. Invariants: 1. space.capacity = sum [page.size | for page in space]. 2. After marking, before sweeping: a) space.size = sum [page.live_bytes_count | for page in space]. 3. After sweeping, before marking ends: a) space.size = sum [page.allocated_bytes | for page in space]. b) page.allocated_bytes >= (sum [object.size | for object in page] + page.linear_allocation_area). c) page.area_size = (page.allocated_bytes + page.wasted_memory + sum [free_list_entry.size | for free_list_entry in page]. 3.b becomes equality if the mutator is not doing array trimming, object slack tracking during sweeping. Bug: chromium:694255 Change-Id: Ic8d16a8171187a113fee2df8bf3c2a4c5e77bc08 Reviewed-on: https://chromium-review.googlesource.com/618889 Commit-Queue: Ulan Degenbaev <ulan@chromium.org> Reviewed-by: Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/master@{#47409} |
||
---|---|---|
.. | ||
benchmarks | ||
cctest | ||
common | ||
debugger | ||
fuzzer | ||
inspector | ||
intl | ||
js-perf-test | ||
memory | ||
message | ||
mjsunit | ||
mkgrokdump | ||
mozilla | ||
preparser | ||
promises-aplus | ||
test262 | ||
unittests | ||
wasm-spec-tests | ||
webkit | ||
bot_default.gyp | ||
bot_default.isolate | ||
BUILD.gn | ||
default.gyp | ||
default.isolate | ||
optimize_for_size.gyp | ||
optimize_for_size.isolate | ||
perf.gyp | ||
perf.isolate |