| Index: src/x64/ic-x64.cc
|
| ===================================================================
|
| --- src/x64/ic-x64.cc (revision 6183)
|
| +++ src/x64/ic-x64.cc (working copy)
|
| @@ -269,10 +269,8 @@
|
| __ movq(Operand(scratch1, 0), value);
|
|
|
| // Update write barrier. Make sure not to clobber the value.
|
| -#ifdef ENABLE_CARDMARKING_WRITE_BARRIER
|
| __ movq(scratch0, value);
|
| - __ RecordWrite(elements, scratch1, scratch0);
|
| -#endif
|
| + __ RecordWrite(elements, scratch1, scratch0, kDontSaveFPRegs);
|
| }
|
|
|
|
|
| @@ -1019,10 +1017,8 @@
|
| __ bind(&non_smi_value);
|
| // Slow case that needs to retain rcx for use by RecordWrite.
|
| // Update write barrier for the elements array address.
|
| -#ifdef ENABLE_CARDMARKING_WRITE_BARRIER
|
| __ movq(rdx, rax);
|
| - __ RecordWriteNonSmi(rbx, 0, rdx, rcx);
|
| -#endif
|
| + __ RecordWriteNonSmi(rbx, 0, rdx, rcx, kDontSaveFPRegs);
|
| __ ret(0);
|
| }
|
|
|
| @@ -1638,9 +1634,7 @@
|
| Address encoded_offsets_address = test_instruction_address + 1;
|
| int encoded_offsets = *reinterpret_cast<int*>(encoded_offsets_address);
|
| int delta_to_map_check = -(encoded_offsets & 0xFFFF);
|
| -#ifdef ENABLE_CARDMARKING_WRITE_BARRIER
|
| int delta_to_record_write = encoded_offsets >> 16;
|
| -#endif
|
|
|
| // Patch the map to check. The map address is the last 8 bytes of
|
| // the 10-byte immediate move instruction.
|
| @@ -1659,7 +1653,6 @@
|
| (offset == 0 && map == Heap::null_value()));
|
| *reinterpret_cast<int*>(offset_address) = offset - kHeapObjectTag;
|
|
|
| -#ifdef ENABLE_CARDMARKING_WRITE_BARRIER
|
| // Patch the offset in the write-barrier code. The offset is the
|
| // last 4 bytes of a 7 byte lea instruction.
|
| offset_address = map_check_address + delta_to_record_write + 3;
|
| @@ -1669,7 +1662,6 @@
|
| *reinterpret_cast<int*>(offset_address) == -1 ||
|
| (offset == 0 && map == Heap::null_value()));
|
| *reinterpret_cast<int*>(offset_address) = offset - kHeapObjectTag;
|
| -#endif
|
|
|
| return true;
|
| }
|
|
|