Index: src/mips/code-stubs-mips.cc |
diff --git a/src/mips/code-stubs-mips.cc b/src/mips/code-stubs-mips.cc |
index 0b551fbed5243594f9498364fb52b2448a82d55a..73b37a05d3339cc1173122d8598bc294f1e0e86e 100644 |
--- a/src/mips/code-stubs-mips.cc |
+++ b/src/mips/code-stubs-mips.cc |
@@ -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); |