| Index: runtime/vm/assembler_ia32.cc
|
| diff --git a/runtime/vm/assembler_ia32.cc b/runtime/vm/assembler_ia32.cc
|
| index 1f1429e9230784936beda7104efa8ef50732cb45..e832d6164feea11839e8b514660dae4ea44f3e8e 100644
|
| --- a/runtime/vm/assembler_ia32.cc
|
| +++ b/runtime/vm/assembler_ia32.cc
|
| @@ -1394,11 +1394,11 @@ void Assembler::StoreIntoObject(Register object,
|
| // Check that 'value' is a new object. Store buffer updates are not
|
| // required when storing a smi or an old object.
|
| testl(value, Immediate(kNewObjectAlignmentOffset | kHeapObjectTag));
|
| - j(NOT_EQUAL, &done, Assembler::kNearJump);
|
| + j(PARITY_ODD, &done, Assembler::kNearJump);
|
| // Check that 'object' is an old object. A store buffer update is
|
| // not required when storing into a new object.
|
| - testl(object, Immediate(kOldObjectAlignmentOffset | kHeapObjectTag));
|
| - j(NOT_EQUAL, &done, Assembler::kNearJump);
|
| + testl(object, Immediate(kNewObjectAlignmentOffset));
|
| + j(NOT_ZERO, &done, Assembler::kNearJump);
|
| // A store buffer update is required.
|
| pushal();
|
| pushl(dest); // Push argument
|
| @@ -1416,9 +1416,9 @@ void Assembler::StoreIntoObjectNoBarrier(Register object,
|
| #if defined(DEBUG)
|
| Label done;
|
| testl(value, Immediate(kNewObjectAlignmentOffset | kHeapObjectTag));
|
| - j(NOT_EQUAL, &done, Assembler::kNearJump);
|
| - testl(object, Immediate(kOldObjectAlignmentOffset | kHeapObjectTag));
|
| - j(NOT_EQUAL, &done, Assembler::kNearJump);
|
| + j(PARITY_ODD, &done, Assembler::kNearJump);
|
| + testl(object, Immediate(kNewObjectAlignmentOffset));
|
| + j(NOT_ZERO, &done, Assembler::kNearJump);
|
| Stop("Store buffer update is required");
|
| Bind(&done);
|
| #endif
|
|
|