| Index: src/x64/lithium-x64.cc
|
| ===================================================================
|
| --- src/x64/lithium-x64.cc (revision 7613)
|
| +++ src/x64/lithium-x64.cc (working copy)
|
| @@ -71,22 +71,21 @@
|
|
|
| #ifdef DEBUG
|
| void LInstruction::VerifyCall() {
|
| - // Call instructions can use only fixed registers as
|
| - // temporaries and outputs because all registers
|
| - // are blocked by the calling convention.
|
| - // Inputs must use a fixed register.
|
| + // Call instructions can use only fixed registers as temporaries and
|
| + // outputs because all registers are blocked by the calling convention.
|
| + // Inputs operands must use a fixed register or use-at-start policy or
|
| + // a non-register policy.
|
| ASSERT(Output() == NULL ||
|
| LUnallocated::cast(Output())->HasFixedPolicy() ||
|
| !LUnallocated::cast(Output())->HasRegisterPolicy());
|
| for (UseIterator it(this); it.HasNext(); it.Advance()) {
|
| - LOperand* operand = it.Next();
|
| - ASSERT(LUnallocated::cast(operand)->HasFixedPolicy() ||
|
| - !LUnallocated::cast(operand)->HasRegisterPolicy());
|
| + LUnallocated* operand = LUnallocated::cast(it.Next());
|
| + ASSERT(operand->HasFixedPolicy() ||
|
| + operand->IsUsedAtStart());
|
| }
|
| for (TempIterator it(this); it.HasNext(); it.Advance()) {
|
| - LOperand* operand = it.Next();
|
| - ASSERT(LUnallocated::cast(operand)->HasFixedPolicy() ||
|
| - !LUnallocated::cast(operand)->HasRegisterPolicy());
|
| + LUnallocated* operand = LUnallocated::cast(it.Next());
|
| + ASSERT(operand->HasFixedPolicy() ||!operand->HasRegisterPolicy());
|
| }
|
| }
|
| #endif
|
| @@ -1984,7 +1983,8 @@
|
|
|
| LInstruction* LChunkBuilder::DoDeleteProperty(HDeleteProperty* instr) {
|
| LDeleteProperty* result =
|
| - new LDeleteProperty(Use(instr->object()), UseOrConstant(instr->key()));
|
| + new LDeleteProperty(UseAtStart(instr->object()),
|
| + UseOrConstantAtStart(instr->key()));
|
| return MarkAsCall(DefineFixed(result, rax), instr);
|
| }
|
|
|
|
|