Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(39)

Issue 1157933002: Oilpan: introduce eager finalization. (Closed)

Created:
5 years, 6 months ago by sof
Modified:
5 years, 6 months ago
Reviewers:
oilpan-reviews, haraken
CC:
blink-reviews, michaeln, blink-reviews-dom_chromium.org, serviceworker-reviews, arv+blink, oilpan-reviews, Mads Ager (chromium), vivekg_samsung, eae+blinkwatch, jsbell+serviceworker_chromium.org, nhiroki, falken, vivekg, dglazkov+blink, blink-reviews-bindings_chromium.org, horo+watch_chromium.org, kinuko+serviceworker, tzik, kouhei+heap_chromium.org, rwlbuis
Target Ref:
refs/heads/master
Project:
blink
Visibility:
Public.

Description

Oilpan: introduce eager finalization. Extend the capabilities of eager finalization and the eagerly swept heap. Objects allocated on that heap are now allowed to have destructors that can (but are not encouraged) to access other heap objects, provided the objects are not other eagerly finalized objects. (Few objects are thought to require eager finalization, so this is assumed not to limit their use and usefulness.) The clang Oilpan/GC plugin needs to be extended to allow such destructors, and catch out any/some attempts to access other eagerly finalized objects from destructors (https://codereview.chromium.org/1158623002/) To additionally enforce finalizer correctness, ASan heap poisoning during sweeps is also strengthened: all payloads on the eagerly swept heap are poisoned so as to catch out illegal inter-heap references while the sweep is underway. Once the eager sweep has completed, access to the live objects is allowed, while all unmarked objects in other heaps are poisoned. With the above in place, existing "prefinalizer" usage can be recast to be eagerly finalized instead. This will be handled in a followup CL. R=haraken BUG=491488 Committed: https://src.chromium.org/viewvc/blink?view=rev&revision=196232

Patch Set 1 #

Patch Set 2 : take out prefinalizer switchover changes #

Patch Set 3 : remove HeapIndexTrait + tidy up #

Total comments: 14

Patch Set 4 : round of improvements #

Total comments: 9

Patch Set 5 : Parameterize Heap::poisonHeap() over ObjectsToPoison #

Unified diffs Side-by-side diffs Delta from patch set Stats (+170 lines, -86 lines) Patch
M Source/core/dom/Node.h View 1 chunk +3 lines, -3 lines 0 comments Download
M Source/core/events/EventTarget.h View 1 2 1 chunk +12 lines, -1 line 0 comments Download
M Source/platform/heap/GarbageCollected.h View 1 2 3 1 chunk +1 line, -1 line 0 comments Download
M Source/platform/heap/Heap.h View 1 2 3 4 12 chunks +62 lines, -59 lines 0 comments Download
M Source/platform/heap/Heap.cpp View 1 2 3 4 6 chunks +36 lines, -12 lines 0 comments Download
M Source/platform/heap/HeapAllocator.h View 1 1 chunk +1 line, -1 line 0 comments Download
M Source/platform/heap/HeapTerminatedArray.h View 1 chunk +1 line, -1 line 0 comments Download
M Source/platform/heap/HeapTest.cpp View 1 2 3 2 chunks +2 lines, -1 line 0 comments Download
M Source/platform/heap/ThreadState.h View 1 2 3 4 3 chunks +21 lines, -2 lines 0 comments Download
M Source/platform/heap/ThreadState.cpp View 1 2 3 4 3 chunks +31 lines, -5 lines 0 comments Download

Messages

Total messages: 27 (4 generated)
sof
Please take a look. As the prefinalizer switchover is dependent on GC plugin support, will ...
5 years, 6 months ago (2015-05-28 07:13:16 UTC) #2
haraken
Thanks for working on this! https://codereview.chromium.org/1157933002/diff/40001/Source/core/events/EventTarget.h File Source/core/events/EventTarget.h (right): https://codereview.chromium.org/1157933002/diff/40001/Source/core/events/EventTarget.h#newcode207 Source/core/events/EventTarget.h:207: // EventTarget is not ...
5 years, 6 months ago (2015-05-28 12:30:05 UTC) #4
sof
https://codereview.chromium.org/1157933002/diff/40001/Source/core/events/EventTarget.h File Source/core/events/EventTarget.h (right): https://codereview.chromium.org/1157933002/diff/40001/Source/core/events/EventTarget.h#newcode207 Source/core/events/EventTarget.h:207: // EventTarget is not eagerly finalized. On 2015/05/28 12:30:04, ...
5 years, 6 months ago (2015-05-28 12:48:54 UTC) #5
sof
https://codereview.chromium.org/1157933002/diff/40001/Source/platform/heap/Heap.h File Source/platform/heap/Heap.h (right): https://codereview.chromium.org/1157933002/diff/40001/Source/platform/heap/Heap.h#newcode1298 Source/platform/heap/Heap.h:1298: int heapIndex = page->heap()->heapIndex(); On 2015/05/28 12:30:04, haraken wrote: ...
5 years, 6 months ago (2015-05-28 12:51:39 UTC) #6
haraken
On 2015/05/28 12:48:54, sof wrote: > https://codereview.chromium.org/1157933002/diff/40001/Source/core/events/EventTarget.h > File Source/core/events/EventTarget.h (right): > > https://codereview.chromium.org/1157933002/diff/40001/Source/core/events/EventTarget.h#newcode207 > ...
5 years, 6 months ago (2015-05-28 14:20:24 UTC) #7
sof
On 2015/05/28 14:20:24, haraken wrote: > On 2015/05/28 12:48:54, sof wrote: > > > https://codereview.chromium.org/1157933002/diff/40001/Source/core/events/EventTarget.h ...
5 years, 6 months ago (2015-05-28 14:32:01 UTC) #8
haraken
On 2015/05/28 14:32:01, sof wrote: > On 2015/05/28 14:20:24, haraken wrote: > > On 2015/05/28 ...
5 years, 6 months ago (2015-05-28 15:04:25 UTC) #9
sof
On 2015/05/28 15:04:25, haraken wrote: > On 2015/05/28 14:32:01, sof wrote: > > On 2015/05/28 ...
5 years, 6 months ago (2015-05-28 15:07:38 UTC) #10
haraken
On 2015/05/28 15:07:38, sof wrote: > On 2015/05/28 15:04:25, haraken wrote: > > On 2015/05/28 ...
5 years, 6 months ago (2015-05-28 15:26:10 UTC) #11
sof
On 2015/05/28 15:26:10, haraken wrote: > On 2015/05/28 15:07:38, sof wrote: > > On 2015/05/28 ...
5 years, 6 months ago (2015-05-28 15:35:30 UTC) #12
sof
On 2015/05/28 15:35:30, sof wrote: > On 2015/05/28 15:26:10, haraken wrote: > > On 2015/05/28 ...
5 years, 6 months ago (2015-05-28 15:35:53 UTC) #13
haraken
On 2015/05/28 15:35:53, sof wrote: > On 2015/05/28 15:35:30, sof wrote: > > On 2015/05/28 ...
5 years, 6 months ago (2015-05-28 16:05:50 UTC) #14
sof
On 2015/05/28 16:05:50, haraken wrote: > On 2015/05/28 15:35:53, sof wrote: > > On 2015/05/28 ...
5 years, 6 months ago (2015-05-28 16:16:13 UTC) #15
sof
On 2015/05/28 16:16:13, sof wrote: > On 2015/05/28 16:05:50, haraken wrote: > > On 2015/05/28 ...
5 years, 6 months ago (2015-05-28 21:36:34 UTC) #16
sof
sorry about the delay in following up. https://codereview.chromium.org/1157933002/diff/40001/Source/platform/heap/Heap.cpp File Source/platform/heap/Heap.cpp (right): https://codereview.chromium.org/1157933002/diff/40001/Source/platform/heap/Heap.cpp#newcode341 Source/platform/heap/Heap.cpp:341: void BaseHeap::poisonHeap(bool ...
5 years, 6 months ago (2015-05-29 21:25:09 UTC) #17
sof
friendly ping. need this one to move ahead on a couple of other contributions.
5 years, 6 months ago (2015-05-31 12:25:46 UTC) #18
haraken
On 2015/05/31 12:25:46, sof wrote: > friendly ping. > > need this one to move ...
5 years, 6 months ago (2015-06-01 05:08:07 UTC) #19
haraken
LGTM https://codereview.chromium.org/1157933002/diff/60001/Source/core/events/EventTarget.h File Source/core/events/EventTarget.h (right): https://codereview.chromium.org/1157933002/diff/60001/Source/core/events/EventTarget.h#newcode202 Source/core/events/EventTarget.h:202: void* operator new(size_t size) I'm OK with this ...
5 years, 6 months ago (2015-06-01 08:42:52 UTC) #20
haraken
https://codereview.chromium.org/1157933002/diff/60001/Source/core/events/EventTarget.h File Source/core/events/EventTarget.h (right): https://codereview.chromium.org/1157933002/diff/60001/Source/core/events/EventTarget.h#newcode202 Source/core/events/EventTarget.h:202: void* operator new(size_t size) On 2015/06/01 08:42:52, haraken wrote: ...
5 years, 6 months ago (2015-06-01 09:12:58 UTC) #21
sof
https://codereview.chromium.org/1157933002/diff/60001/Source/core/events/EventTarget.h File Source/core/events/EventTarget.h (right): https://codereview.chromium.org/1157933002/diff/60001/Source/core/events/EventTarget.h#newcode202 Source/core/events/EventTarget.h:202: void* operator new(size_t size) On 2015/06/01 09:12:58, haraken wrote: ...
5 years, 6 months ago (2015-06-01 14:51:36 UTC) #22
sof
thanks for the review & suggestions surrounding finalization; let's try to move ahead & land..
5 years, 6 months ago (2015-06-01 14:53:10 UTC) #23
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1157933002/80001
5 years, 6 months ago (2015-06-01 15:17:19 UTC) #26
commit-bot: I haz the power
5 years, 6 months ago (2015-06-01 15:46:04 UTC) #27
Message was sent while issue was closed.
Committed patchset #5 (id:80001) as
https://src.chromium.org/viewvc/blink?view=rev&revision=196232

Powered by Google App Engine
This is Rietveld 408576698