MIPS: Make the speed of incremental marking depend also on the rate at which we are hitting expensive write barrier operations, not just on the rate of allocation.
Port r12618 (c621b025) BUG= TEST= Review URL: https://codereview.chromium.org/10977070 Patch from Akos Palfi <palfia@homejinni.com>. git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12740 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
This commit is contained in:
parent
9f2e52ac12
commit
479b4d61a6
@ -7633,6 +7633,16 @@ void RecordWriteStub::CheckNeedsToInformIncrementalMarker(
|
||||
Label need_incremental;
|
||||
Label need_incremental_pop_scratch;
|
||||
|
||||
__ And(regs_.scratch0(), regs_.object(), Operand(~Page::kPageAlignmentMask));
|
||||
__ lw(regs_.scratch1(),
|
||||
MemOperand(regs_.scratch0(),
|
||||
MemoryChunk::kWriteBarrierCounterOffset));
|
||||
__ Subu(regs_.scratch1(), regs_.scratch1(), Operand(1));
|
||||
__ sw(regs_.scratch1(),
|
||||
MemOperand(regs_.scratch0(),
|
||||
MemoryChunk::kWriteBarrierCounterOffset));
|
||||
__ Branch(&need_incremental, lt, regs_.scratch1(), Operand(zero_reg));
|
||||
|
||||
// Let's look at the color of the object: If it is not black we don't have
|
||||
// to inform the incremental marker.
|
||||
__ JumpIfBlack(regs_.object(), regs_.scratch0(), regs_.scratch1(), &on_black);
|
||||
|
Loading…
Reference in New Issue
Block a user