Description[heap] Fine-grained JSArrayBuffer tracking
Track based on JSArrayBuffer addresses instead of the attached backing store.
This way we can later on iterate buffers on a single page. The reland also
switches to a page-based implementation where a page contains the set of its
contained (live and dead) buffers.
Details of tracking:
- Scavenge: New space pages are processes in bulk on the main thread
- MC: Unswept pages are processed in bulk in parallel. All other pages
are processed by the sweeper concurrently.
BUG=chromium:611688
LOG=N
CQ_EXTRA_TRYBOTS=tryserver.v8:v8_linux_arm64_gc_stress_dbg,v8_linux_gc_stress_dbg,v8_mac_gc_stress_dbg,v8_linux64_tsan_rel,v8_mac64_asan_rel
Committed: https://crrev.com/b2d8bfc7931eef49d527605ba485950dea41cde3
Cr-Commit-Position: refs/heads/master@{#36437}
Patch Set 1 : baseline (broken CL) #Patch Set 2 : Fix for registering on black-allocated page #Patch Set 3 : Better documentation #Patch Set 4 : Fix corner case where sweeper is fast and we reuse hashmap entries before FreeDead is called #Patch Set 5 : New implementation using page-local trackers #Patch Set 6 : #Patch Set 7 : Fix tests, harden expectations, more comments #
Total comments: 1
Patch Set 8 : Tests once more #
Total comments: 12
Patch Set 9 : Addressed comments #Patch Set 10 : Split up the freeing and resetting phase #Patch Set 11 : Freeing in bulk for new space #Patch Set 12 : #Patch Set 13 : Remove dead code #Patch Set 14 : Try std::unordered_map #Patch Set 15 : Rebase #Patch Set 16 : back to std::map #
Total comments: 11
Patch Set 17 : Addressed comments #Patch Set 18 : Rebase (tests) #Patch Set 19 : Rebase again #
Messages
Total messages: 108 (66 generated)
|