PPC: [heap] Make write barrier safe for the concurrent marker.
Port bd3d091dba
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/535736
Reviewed-by: Junliang Yan <jyan@ca.ibm.com>
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Commit-Queue: Jaideep Bajwa <bjaideep@ca.ibm.com>
Cr-Commit-Position: refs/heads/master@{#45956}
This commit is contained in:
parent
74aa3ad011
commit
8e646bd08c
@ -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(
|
|||||||
}
|
}
|
||||||
|
|
||||||
__ 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));
|
||||||
|
Loading…
Reference in New Issue
Block a user