Commit 120b640d authored by hpayer's avatar hpayer Committed by Commit bot

Reland of [heap] Refactor evacuation for young and old gen into visitors....

Reland of [heap] Refactor evacuation for young and old gen into visitors. (patchset #1 id:1 of https://codereview.chromium.org/1483393002/ )

Reason for revert:
Reland after fixing the potential root cause of the canary crasher.

Original issue's description:
> Revert of [heap] Refactor evacuation for young and old gen into visitors. (patchset #5 id:80001 of https://codereview.chromium.org/1470253002/ )
>
> Reason for revert:
> Still investigating bad canary.
>
> Original issue's description:
> > [heap] Refactor evacuation for young and old gen into visitors.
> >
> > Create a visitor for evacuating objects for young and old generation. This is
> > the first step of preparing a task to process, both,  newspace and oldspace
> > pages in parallel.
> >
> > BUG=chromium:524425
> > LOG=N
> >
> > Committed: https://crrev.com/138d9bae5d7014e0d205634a49b5eac3697744c8
> > Cr-Commit-Position: refs/heads/master@{#32349}
>
> TBR=mlippautz@chromium.org
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=chromium:524425
>
> Committed: https://crrev.com/aa24a3135ec308e1f84bce334844caf0cae2437a
> Cr-Commit-Position: refs/heads/master@{#32462}

TBR=mlippautz@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=chromium:524425

Review URL: https://codereview.chromium.org/1493523003

Cr-Commit-Position: refs/heads/master@{#32500}
parent 60d77c8a
This diff is collapsed.
...@@ -320,6 +320,15 @@ class ThreadLocalTop; ...@@ -320,6 +320,15 @@ class ThreadLocalTop;
// Mark-Compact collector // Mark-Compact collector
class MarkCompactCollector { class MarkCompactCollector {
public: public:
enum IterationMode {
kKeepMarking,
kClearMarkbits,
};
class EvacuateNewSpaceVisitor;
class EvacuateOldSpaceVisitor;
class HeapObjectVisitor;
static void Initialize(); static void Initialize();
void SetUp(); void SetUp();
...@@ -698,14 +707,13 @@ class MarkCompactCollector { ...@@ -698,14 +707,13 @@ class MarkCompactCollector {
// regions to each space's free list. // regions to each space's free list.
void SweepSpaces(); void SweepSpaces();
int DiscoverAndEvacuateBlackObjectsOnPage(NewSpace* new_space, // Iterates through all live objects on a page using marking information.
NewSpacePage* p); // Returns whether all objects have successfully been visited.
bool IterateLiveObjectsOnPage(MemoryChunk* page, HeapObjectVisitor* visitor,
IterationMode mode);
void EvacuateNewSpace(); void EvacuateNewSpace();
bool EvacuateLiveObjectsFromPage(Page* p, PagedSpace* target_space,
SlotsBuffer** evacuation_slots_buffer);
void AddEvacuationSlotsBufferSynchronized( void AddEvacuationSlotsBufferSynchronized(
SlotsBuffer* evacuation_slots_buffer); SlotsBuffer* evacuation_slots_buffer);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment