| Index: src/ia32/ic-ia32.cc
|
| diff --git a/src/ia32/ic-ia32.cc b/src/ia32/ic-ia32.cc
|
| index d713601d167347e6f3090235017da8535703a2ac..e57e657ffd70db28c4082f86588a9f21ab53facb 100644
|
| --- a/src/ia32/ic-ia32.cc
|
| +++ b/src/ia32/ic-ia32.cc
|
| @@ -1747,15 +1747,17 @@ bool StoreIC::PatchInlinedStore(Address address, Object* map, int offset) {
|
| (offset == 0 && map == Heap::null_value()));
|
| *reinterpret_cast<int*>(offset_address) = offset - kHeapObjectTag;
|
|
|
| - // Patch the offset in the write-barrier code. The offset is the
|
| - // last 4 bytes of a six byte lea instruction.
|
| - offset_address = map_check_address + delta_to_record_write + 2;
|
| - // The offset should have initial value (kMaxInt), cleared value
|
| - // (-1) or we should be clearing the inlined version.
|
| - ASSERT(*reinterpret_cast<int*>(offset_address) == kMaxInt ||
|
| - *reinterpret_cast<int*>(offset_address) == -1 ||
|
| - (offset == 0 && map == Heap::null_value()));
|
| - *reinterpret_cast<int*>(offset_address) = offset - kHeapObjectTag;
|
| + if (!FLAG_new_gc) {
|
| + // Patch the offset in the write-barrier code. The offset is the
|
| + // last 4 bytes of a six byte lea instruction.
|
| + offset_address = map_check_address + delta_to_record_write + 2;
|
| + // The offset should have initial value (kMaxInt), cleared value
|
| + // (-1) or we should be clearing the inlined version.
|
| + ASSERT(*reinterpret_cast<int*>(offset_address) == kMaxInt ||
|
| + *reinterpret_cast<int*>(offset_address) == -1 ||
|
| + (offset == 0 && map == Heap::null_value()));
|
| + *reinterpret_cast<int*>(offset_address) = offset - kHeapObjectTag;
|
| + }
|
|
|
| return true;
|
| }
|
|
|