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); |