[heap] Implement per-context marking worklist draining
This changes the marking worklist draining for the main thread marker and the concurrent marker to use the following algorithm in per-context mode: 1) Pop an object from the marking worklist. 2) Try to infer the native context that owns the objects. This is done using a new NativeContextInferrer class. 3) If the inference is successful, then change the active marking worklist to the worklist of the inferred native context. 4) Otherwise, keep the current active marking worklist. 5) Visit the object. Newly discovered objects will be pushed onto the active marking worklist. 6) Account the object size for the native context corresponding to the active marking worklist. This is done using a new NativeContextStats class. The main property of the algorithm is that each object for which we couldn't infer the native context is either attributed to the native context retaining it or is not attributed to any native context. Bug: chromium:973627 Change-Id: Ide4ab992275d115279f971d89ace657f4c05e176 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1981491 Commit-Queue: Ulan Degenbaev <ulan@chromium.org> Reviewed-by: Dominik Inführ <dinfuehr@chromium.org> Cr-Commit-Position: refs/heads/master@{#65663}
Showing
Please
register
or
sign in
to comment