| Index: src/x64/codegen-x64.cc
|
| diff --git a/src/x64/codegen-x64.cc b/src/x64/codegen-x64.cc
|
| index 6f34cf749e46c8e1f195122d43d6714ab7549b48..8c338fe6dd07de1b28ebe0675059bf695cd78d27 100644
|
| --- a/src/x64/codegen-x64.cc
|
| +++ b/src/x64/codegen-x64.cc
|
| @@ -8207,17 +8207,9 @@ Result CodeGenerator::EmitNamedLoad(Handle<String> name, bool is_contextual) {
|
| result = allocator()->Allocate();
|
| ASSERT(result.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));
|
|
|
| DeferredReferenceGetNamedValue* deferred =
|
| new DeferredReferenceGetNamedValue(result.reg(), receiver.reg(), name);
|
|
|