commit | b47ddca7ff0bac44cee64cd60e3d9734b408b60a | [log] [tgz] |
---|---|---|
author | Michael Lippautz <mlippautz@chromium.org> | Thu Jan 10 18:09:43 2019 |
committer | Commit Bot <commit-bot@chromium.org> | Thu Jan 10 18:09:43 2019 |
tree | 5c0bcfe2867b1d43e5871e3beda470c7c46a2210 | |
parent | d266dd02e8427af58cfdde1578465d785a839d22 [diff] |
heap: Uniform object construction Switch to a uniform object construction that does not differentiate between mixins and regular garabge collected objects and as a consequence can interrupt both construction cases with garbage collections. Object construction now uniformely works as follows: 1. The object under construction is marked so in the HeapObjectHeader. 2. Upon discovering such an object it is delayed in a separate marking worklist. 3. Upon hitting the main atomic pause all such objects are conservatively scanned for pointers without using the Trace method. Special cases: a. Mixins in construction: The HeapObjectHeader cannot retrived for such objects. A default GetTraceDescriptor() implementation returning a sentinel marker is used to discover that such objects should be delayed. b. Upon reaching a safepoint (e.g. no stack), in-construction objects are moved to a marking worklist that, similar to the regular marking worklist, allows for incremental processing. Effects: - No more TLS access for no-GC scope on mixin construction. - No more memory needed for the no-GC scope marker in mixin classes - MakeGarbageCollected should require less binary size as implementations can be aligned. - Incremental marking Start and Step operations are safe to be called with stack (even though it is preferable to not do so). - Object construction is safe to be used with a concurrent marker as it is ok for any objects (mixins as well as normal ones) to be published to the object graph during constructors. Change-Id: Ia39b5e76d551ed194612091167e2370b2d6a4e5f Bug: 911662 Reviewed-on: https://chromium-review.googlesource.com/c/1401070 Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Reviewed-by: Kentaro Hara <haraken@chromium.org> Cr-Commit-Position: refs/heads/master@{#621637}
Chromium is an open-source browser project that aims to build a safer, faster, and more stable way for all users to experience the web.
The project's web site is https://www.chromium.org.
Documentation in the source is rooted in docs/README.md.
Learn how to Get Around the Chromium Source Code Directory Structure .