heap: Check empty or deleted keys on local copy
Tracing an HashTable involves checking whether keys are empty or deleted. This can result in data races with the mutator if the HashTable is modified while it is traced. To avoid such data races, we create a local copy of the key on the concurrent thread and perform the check on the copy. Using the local copy on the mutator thread would result in significant regressions. Measured locally on the facebook_infinite_scroll:2018 story from v8.browsind_desktop benchmark, showed an increase ranging from 70% to 110% in the time it takes to process ephemerons (this measurement doesn't cover all HashTables, just the ephemeron HashTable). To avoid these regressions, the local copy is used only for concurrent visitors. For further details see https://drive.google.com/open?id=13DTRcF3xfVjJ2QaKzAOYFzqvTfGRNiX6WWL3CCACSoM Bug: 986235 Change-Id: Ie135c1076bd1834ae7f8b97ca6446890fc30a02c Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2012961 Commit-Queue: Omer Katz <omerkatz@chromium.org> Reviewed-by:Kentaro Hara <haraken@chromium.org> Reviewed-by:
Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/master@{#735833}
Showing
Please register or sign in to comment