Commit 8e646bd0 authored by Jaideep Bajwa's avatar Jaideep Bajwa Committed by Commit Bot

PPC: [heap] Make write barrier safe for the concurrent marker.

Port bd3d091d

Original Commit Message:

    With concurrent marking the write barrier should trigger even if the
    object is black because the concurrent marker could have fetched
    object field before marking the object black.

R=ulan@chromium.org, joransiu@ca.ibm.com, jyan@ca.ibm.com, michael_dawson@ca.ibm.com
BUG=chromium:694255
LOG=N

Change-Id: I3e3b5b467ab3c2eca45ac8d85523c8af4f5f5d4b
Reviewed-on: https://chromium-review.googlesource.com/535736Reviewed-by: 's avatarJunliang Yan <jyan@ca.ibm.com>
Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
Commit-Queue: Jaideep Bajwa <bjaideep@ca.ibm.com>
Cr-Commit-Position: refs/heads/master@{#45956}
parent 74aa3ad0
...@@ -2302,9 +2302,10 @@ void RecordWriteStub::InformIncrementalMarker(MacroAssembler* masm) { ...@@ -2302,9 +2302,10 @@ void RecordWriteStub::InformIncrementalMarker(MacroAssembler* masm) {
void RecordWriteStub::CheckNeedsToInformIncrementalMarker( void RecordWriteStub::CheckNeedsToInformIncrementalMarker(
MacroAssembler* masm, OnNoNeedToInformIncrementalMarker on_no_need, MacroAssembler* masm, OnNoNeedToInformIncrementalMarker on_no_need,
Mode mode) { Mode mode) {
Label on_black;
Label need_incremental; Label need_incremental;
Label need_incremental_pop_scratch; Label need_incremental_pop_scratch;
#ifndef V8_CONCURRENT_MARKING
Label on_black;
// Let's look at the color of the object: If it is not black we don't have // Let's look at the color of the object: If it is not black we don't have
// to inform the incremental marker. // to inform the incremental marker.
...@@ -2319,6 +2320,7 @@ void RecordWriteStub::CheckNeedsToInformIncrementalMarker( ...@@ -2319,6 +2320,7 @@ void RecordWriteStub::CheckNeedsToInformIncrementalMarker(
} }
__ bind(&on_black); __ bind(&on_black);
#endif
// Get the value from the slot. // Get the value from the slot.
__ LoadP(regs_.scratch0(), MemOperand(regs_.address(), 0)); __ LoadP(regs_.scratch0(), MemOperand(regs_.address(), 0));
......
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