| Index: src/x64/codegen-x64.cc
|
| diff --git a/src/x64/codegen-x64.cc b/src/x64/codegen-x64.cc
|
| index 8c338fe6dd07de1b28ebe0675059bf695cd78d27..dc999b5780b6711d58bcc75898b284b9651687f3 100644
|
| --- a/src/x64/codegen-x64.cc
|
| +++ b/src/x64/codegen-x64.cc
|
| @@ -8276,17 +8276,9 @@ Result CodeGenerator::EmitNamedStore(Handle<String> name, bool is_contextual) {
|
| result = allocator()->Allocate();
|
| ASSERT(result.is_valid() && receiver.is_valid() && value.is_valid());
|
|
|
| - // Cannot use r12 for receiver, because that changes
|
| - // the distance between a call and a fixup location,
|
| - // due to a special encoding of r12 as r/m in a ModR/M byte.
|
| - if (receiver.reg().is(r12)) {
|
| - frame()->Spill(receiver.reg()); // It will be overwritten with result.
|
| - // Swap receiver and value.
|
| - __ movq(result.reg(), receiver.reg());
|
| - Result temp = receiver;
|
| - receiver = result;
|
| - result = temp;
|
| - }
|
| + // r12 is now a reserved register, so it cannot be the receiver.
|
| + // If it was, the distance to the fixup location would not be constant.
|
| + ASSERT(!receiver.reg().is(r12));
|
|
|
| // Check that the receiver is a heap object.
|
| Condition is_smi = masm()->CheckSmi(receiver.reg());
|
|
|