[heap] Optimize marking of descriptor arrays.
Now a descriptor array tracks the number of descriptors that were already marked. The marking visitor of a map only marks the subset of the descriptors that it needs and that are not already marked. If a descriptor array is shared between M maps and has N descriptos, then the number of marking operations is reduced from O(M*N) to O(N). This patch also adds a marking barrier for descriptors. The marked descriptor counter in a descriptor array is not cleared after mark-compact GC. Instead, it embeds two bits from the global mark-compact epoch counter and is considered 0 if the bits do not match the current value of the global epoch counter. Bug: v8:8486 Change-Id: I2a7822a6833f3143e1d351e5e4819c2ef2c07fb0 Reviewed-on: https://chromium-review.googlesource.com/c/1382746 Commit-Queue: Ulan Degenbaev <ulan@chromium.org> Reviewed-by: Jakob Gruber <jgruber@chromium.org> Reviewed-by: Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/master@{#58372}
Showing
Please
register
or
sign in
to comment