|
|
Created:
3 years, 7 months ago by Michael Lippautz Modified:
3 years, 7 months ago CC:
v8-reviews_googlegroups.com, Michael Hablich Target Ref:
refs/heads/master Project:
v8 Visibility:
Public. |
Description[heap] Minor MC: Implement page moving
BUG=chromium:651354
Review-Url: https://codereview.chromium.org/2855143003
Cr-Commit-Position: refs/heads/master@{#45223}
Committed: https://chromium.googlesource.com/v8/v8/+/cf37556f0e78ff522cc8a14bad3922efab991844
Patch Set 1 #Patch Set 2 : NEW->NEW page moving #Patch Set 3 : ArrayBufferTracker and bitmap fixes #Patch Set 4 : Fix for incremental marking #Patch Set 5 : NEW->OLD moving #Patch Set 6 : Implement NEW->OLD moving #Patch Set 7 : Avoid moving NEW->OLD #Patch Set 8 : Rebase #Patch Set 9 : Fix for makeiterable #Patch Set 10 : Polish #Patch Set 11 : Rebase #Patch Set 12 : Polishing #
Total comments: 4
Patch Set 13 : Addressed comments #Patch Set 14 : Fix clearing of mark bit in MakeIterable #
Total comments: 6
Patch Set 15 : Disable flag #
Messages
Total messages: 53 (42 generated)
The CQ bit was checked by mlippautz@chromium.org to run a CQ dry run
Dry run: CQ is trying da patch. Follow status at: https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.or...
The CQ bit was unchecked by commit-bot@chromium.org
Dry run: Try jobs failed on following builders: v8_linux64_gyp_rel_ng on master.tryserver.v8 (JOB_FAILED, http://build.chromium.org/p/tryserver.v8/builders/v8_linux64_gyp_rel_ng/build...) v8_linux64_gyp_rel_ng_triggered on master.tryserver.v8 (JOB_FAILED, http://build.chromium.org/p/tryserver.v8/builders/v8_linux64_gyp_rel_ng_trigg...)
The CQ bit was checked by mlippautz@chromium.org to run a CQ dry run
Dry run: CQ is trying da patch. Follow status at: https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.or...
The CQ bit was unchecked by commit-bot@chromium.org
Dry run: Try jobs failed on following builders: v8_linux_dbg_ng on master.tryserver.v8 (JOB_FAILED, http://build.chromium.org/p/tryserver.v8/builders/v8_linux_dbg_ng/builds/25481) v8_linux_dbg_ng_triggered on master.tryserver.v8 (JOB_FAILED, http://build.chromium.org/p/tryserver.v8/builders/v8_linux_dbg_ng_triggered/b...)
Description was changed from ========== [heap] Minor MC improvements BUG= ========== to ========== [heap] Minor MC: Move pages NEW->NEW BUG= ==========
The CQ bit was checked by mlippautz@chromium.org to run a CQ dry run
Dry run: CQ is trying da patch. Follow status at: https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.or...
The CQ bit was unchecked by commit-bot@chromium.org
Dry run: Try jobs failed on following builders: v8_linux_dbg_ng on master.tryserver.v8 (JOB_FAILED, http://build.chromium.org/p/tryserver.v8/builders/v8_linux_dbg_ng/builds/25498) v8_linux_dbg_ng_triggered on master.tryserver.v8 (JOB_FAILED, http://build.chromium.org/p/tryserver.v8/builders/v8_linux_dbg_ng_triggered/b...)
Description was changed from ========== [heap] Minor MC: Move pages NEW->NEW BUG= ========== to ========== [heap] Minor MC: Implement page moving BUG= ==========
The CQ bit was checked by mlippautz@chromium.org to run a CQ dry run
Dry run: CQ is trying da patch. Follow status at: https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.or...
The CQ bit was checked by mlippautz@chromium.org to run a CQ dry run
Dry run: CQ is trying da patch. Follow status at: https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.or...
The CQ bit was checked by mlippautz@chromium.org to run a CQ dry run
Dry run: CQ is trying da patch. Follow status at: https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.or...
Description was changed from ========== [heap] Minor MC: Implement page moving BUG= ========== to ========== [heap] Minor MC: Implement page moving BUG=chromium:651354 ==========
mlippautz@chromium.org changed reviewers: + hpayer@chromium.org, ulan@chromium.org
ptal
The CQ bit was unchecked by commit-bot@chromium.org
Dry run: This issue passed the CQ dry run.
lgtm https://codereview.chromium.org/2855143003/diff/220001/src/heap/mark-compact.cc File src/heap/mark-compact.cc (right): https://codereview.chromium.org/2855143003/diff/220001/src/heap/mark-compact.... src/heap/mark-compact.cc:2657: full_collector->marking_state(p).bitmap()->ClearRange( Shouldn't this be guarded with marking_mode? https://codereview.chromium.org/2855143003/diff/220001/src/heap/mark-compact.... src/heap/mark-compact.cc:3832: if (!reduce_memory && !page->NeverEvacuate() && Let's extract this predicate into a separate function to share it with the full collector.
The CQ bit was checked by mlippautz@chromium.org to run a CQ dry run
Dry run: CQ is trying da patch. Follow status at: https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.or...
https://codereview.chromium.org/2855143003/diff/220001/src/heap/mark-compact.cc File src/heap/mark-compact.cc (right): https://codereview.chromium.org/2855143003/diff/220001/src/heap/mark-compact.... src/heap/mark-compact.cc:2657: full_collector->marking_state(p).bitmap()->ClearRange( On 2017/05/09 11:31:54, ulan wrote: > Shouldn't this be guarded with marking_mode? Done. https://codereview.chromium.org/2855143003/diff/220001/src/heap/mark-compact.... src/heap/mark-compact.cc:3832: if (!reduce_memory && !page->NeverEvacuate() && On 2017/05/09 11:31:53, ulan wrote: > Let's extract this predicate into a separate function to share it with the full > collector. Done.
The CQ bit was unchecked by commit-bot@chromium.org
Dry run: Try jobs failed on following builders: v8_win64_rel_ng on master.tryserver.v8 (JOB_FAILED, http://build.chromium.org/p/tryserver.v8/builders/v8_win64_rel_ng/builds/27239) v8_win64_rel_ng_triggered on master.tryserver.v8 (JOB_FAILED, http://build.chromium.org/p/tryserver.v8/builders/v8_win64_rel_ng_triggered/b...)
The CQ bit was checked by mlippautz@chromium.org to run a CQ dry run
Dry run: CQ is trying da patch. Follow status at: https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.or...
The CQ bit was unchecked by commit-bot@chromium.org
Dry run: This issue passed the CQ dry run.
Looking good. Two questions: https://codereview.chromium.org/2855143003/diff/260001/src/heap/mark-compact.cc File src/heap/mark-compact.cc (right): https://codereview.chromium.org/2855143003/diff/260001/src/heap/mark-compact.... src/heap/mark-compact.cc:2636: void MinorMarkCompactCollector::MakeIterable( I am wondering if we could re-use the sweeping method of MC here. https://codereview.chromium.org/2855143003/diff/260001/src/heap/mark-compact.... src/heap/mark-compact.cc:3788: !p->Contains(age_mark) && heap()->CanExpandOldGeneration(live_bytes); heap()->CanExpandOldGeneration(live_bytes) If it is a new to new promotion we do not care if we can expand the old generation? How about going over the allocation limit with page promotions? It is very likely that evacuating individual objects will also go over the limit.
https://codereview.chromium.org/2855143003/diff/260001/src/heap/mark-compact.cc File src/heap/mark-compact.cc (right): https://codereview.chromium.org/2855143003/diff/260001/src/heap/mark-compact.... src/heap/mark-compact.cc:2636: void MinorMarkCompactCollector::MakeIterable( On 2017/05/09 14:44:34, Hannes Payer wrote: > I am wondering if we could re-use the sweeping method of MC here. Both are similar but differ in critical parts, e.g., this one here needs to rest the mark bits for the full collector for the freed areas. Since none of the RawSweep modes can be reused, I'd rather keep it. https://codereview.chromium.org/2855143003/diff/260001/src/heap/mark-compact.... src/heap/mark-compact.cc:3788: !p->Contains(age_mark) && heap()->CanExpandOldGeneration(live_bytes); On 2017/05/09 14:44:34, Hannes Payer wrote: > heap()->CanExpandOldGeneration(live_bytes) > If it is a new to new promotion we do not care if we can expand the old > generation? > How about going over the allocation limit with page promotions? It is very > likely that evacuating individual objects will also go over the limit. Right, this should not be needed. I remember that we added it as a safety mechanism, but both the full MC and the Scavenger/MinorMC use the AlwaysAllocate scope and ignore the limit anyways. Ulan, objections?
https://codereview.chromium.org/2855143003/diff/260001/src/heap/mark-compact.cc File src/heap/mark-compact.cc (right): https://codereview.chromium.org/2855143003/diff/260001/src/heap/mark-compact.... src/heap/mark-compact.cc:3788: !p->Contains(age_mark) && heap()->CanExpandOldGeneration(live_bytes); On 2017/05/09 17:01:12, Michael Lippautz wrote: > On 2017/05/09 14:44:34, Hannes Payer wrote: > > heap()->CanExpandOldGeneration(live_bytes) > > If it is a new to new promotion we do not care if we can expand the old > > generation? > > How about going over the allocation limit with page promotions? It is very > > likely that evacuating individual objects will also go over the limit. > > Right, this should not be needed. I remember that we added it as a safety > mechanism, but both the full MC and the Scavenger/MinorMC use the AlwaysAllocate > scope and ignore the limit anyways. > > Ulan, objections? Yes. This is the hard limit and all garbage collectors respect it even if always allocate is on.
Patchset #15 (id:280001) has been deleted
https://codereview.chromium.org/2855143003/diff/260001/src/heap/mark-compact.cc File src/heap/mark-compact.cc (right): https://codereview.chromium.org/2855143003/diff/260001/src/heap/mark-compact.... src/heap/mark-compact.cc:3788: !p->Contains(age_mark) && heap()->CanExpandOldGeneration(live_bytes); On 2017/05/09 17:05:57, ulan wrote: > On 2017/05/09 17:01:12, Michael Lippautz wrote: > > On 2017/05/09 14:44:34, Hannes Payer wrote: > > > heap()->CanExpandOldGeneration(live_bytes) > > > If it is a new to new promotion we do not care if we can expand the old > > > generation? > > > How about going over the allocation limit with page promotions? It is very > > > likely that evacuating individual objects will also go over the limit. > > > > Right, this should not be needed. I remember that we added it as a safety > > mechanism, but both the full MC and the Scavenger/MinorMC use the > AlwaysAllocate > > scope and ignore the limit anyways. > > > > Ulan, objections? > > Yes. This is the hard limit and all garbage collectors respect it even if always > allocate is on. Acknowledged. Thanks!
On 2017/05/09 17:11:45, Michael Lippautz wrote: > https://codereview.chromium.org/2855143003/diff/260001/src/heap/mark-compact.cc > File src/heap/mark-compact.cc (right): > > https://codereview.chromium.org/2855143003/diff/260001/src/heap/mark-compact.... > src/heap/mark-compact.cc:3788: !p->Contains(age_mark) && > heap()->CanExpandOldGeneration(live_bytes); > On 2017/05/09 17:05:57, ulan wrote: > > On 2017/05/09 17:01:12, Michael Lippautz wrote: > > > On 2017/05/09 14:44:34, Hannes Payer wrote: > > > > heap()->CanExpandOldGeneration(live_bytes) > > > > If it is a new to new promotion we do not care if we can expand the old > > > > generation? > > > > How about going over the allocation limit with page promotions? It is very > > > > likely that evacuating individual objects will also go over the limit. > > > > > > Right, this should not be needed. I remember that we added it as a safety > > > mechanism, but both the full MC and the Scavenger/MinorMC use the > > AlwaysAllocate > > > scope and ignore the limit anyways. > > > > > > Ulan, objections? > > > > Yes. This is the hard limit and all garbage collectors respect it even if > always > > allocate is on. > > Acknowledged. Thanks! Ah, that one checks against max. Right, we cannot get rid of this one. For new to new it is not nice to do this check, however probably not an issue.
Patchset #15 (id:300001) has been deleted
The CQ bit was checked by mlippautz@chromium.org to run a CQ dry run
Dry run: CQ is trying da patch. Follow status at: https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.or...
lgtm
The CQ bit was unchecked by commit-bot@chromium.org
Dry run: This issue passed the CQ dry run.
The CQ bit was checked by mlippautz@chromium.org
The patchset sent to the CQ was uploaded after l-g-t-m from ulan@chromium.org Link to the patchset: https://codereview.chromium.org/2855143003/#ps320001 (title: "Disable flag")
CQ is trying da patch. Follow status at: https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.or...
CQ is committing da patch. Bot data: {"patchset_id": 320001, "attempt_start_ts": 1494407054001680, "parent_rev": "540419b660ae8da1d24767be5b95fc0421680580", "commit_rev": "cf37556f0e78ff522cc8a14bad3922efab991844"}
Message was sent while issue was closed.
Description was changed from ========== [heap] Minor MC: Implement page moving BUG=chromium:651354 ========== to ========== [heap] Minor MC: Implement page moving BUG=chromium:651354 Review-Url: https://codereview.chromium.org/2855143003 Cr-Commit-Position: refs/heads/master@{#45223} Committed: https://chromium.googlesource.com/v8/v8/+/cf37556f0e78ff522cc8a14bad3922efab9... ==========
Message was sent while issue was closed.
Committed patchset #15 (id:320001) as https://chromium.googlesource.com/v8/v8/+/cf37556f0e78ff522cc8a14bad3922efab9... |