Index: src/ia32/lithium-ia32.cc |
=================================================================== |
--- src/ia32/lithium-ia32.cc (revision 7613) |
+++ src/ia32/lithium-ia32.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 |
@@ -2046,7 +2045,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, eax), instr); |
} |