Chromium Code Reviews| Index: src/ia32/lithium-ia32.cc | 
| diff --git a/src/ia32/lithium-ia32.cc b/src/ia32/lithium-ia32.cc | 
| index 3a615d7a81f155d6ada0f2f6154bb75b2960bc06..c3cdf39b00f7a71e895cb866c5fa0c13e974b531 100644 | 
| --- a/src/ia32/lithium-ia32.cc | 
| +++ b/src/ia32/lithium-ia32.cc | 
| @@ -2158,26 +2158,34 @@ LInstruction* LChunkBuilder::DoStoreKeyedGeneric(HStoreKeyedGeneric* instr) { | 
| LInstruction* LChunkBuilder::DoTransitionElementsKind( | 
| HTransitionElementsKind* instr) { | 
| + LOperand* object = UseRegister(instr->object()); | 
| if (IsSimpleMapChangeTransition(instr->from_kind(), instr->to_kind())) { | 
| LOperand* object = UseRegister(instr->object()); | 
| LOperand* new_map_reg = TempRegister(); | 
| LOperand* temp_reg = TempRegister(); | 
| LTransitionElementsKind* result = | 
| - new(zone()) LTransitionElementsKind(object, new_map_reg, temp_reg); | 
| - return DefineSameAsFirst(result); | 
| + new(zone()) LTransitionElementsKind(object, NULL, | 
| + new_map_reg, temp_reg); | 
| + return result; | 
| } else { | 
| - LOperand* object = UseFixed(instr->object(), eax); | 
| - LOperand* fixed_object_reg = FixedTemp(edx); | 
| - LOperand* new_map_reg = FixedTemp(ebx); | 
| + LOperand* context = UseRegister(instr->context()); | 
| LTransitionElementsKind* result = | 
| - new(zone()) LTransitionElementsKind(object, | 
| - new_map_reg, | 
| - fixed_object_reg); | 
| - return MarkAsCall(DefineFixed(result, eax), instr); | 
| + new(zone()) LTransitionElementsKind(object, context, NULL, NULL); | 
| + return AssignPointerMap(result); | 
| } | 
| } | 
| +LInstruction* LChunkBuilder::DoTrapAllocationMemento( | 
| + HTrapAllocationMemento* instr) { | 
| + LOperand* object = UseRegister(instr->object()); | 
| + LOperand* temp = TempRegister(); | 
| + LTrapAllocationMemento* result = | 
| + new(zone()) LTrapAllocationMemento(object, temp); | 
| + return AssignEnvironment(result); | 
| +} | 
| + | 
| + | 
| LInstruction* LChunkBuilder::DoStoreNamedField(HStoreNamedField* instr) { | 
| bool needs_write_barrier = instr->NeedsWriteBarrier(); | 
| bool needs_write_barrier_for_map = !instr->transition().is_null() && | 
| @@ -2256,13 +2264,23 @@ LInstruction* LChunkBuilder::DoStringLength(HStringLength* instr) { | 
| LInstruction* LChunkBuilder::DoAllocateObject(HAllocateObject* instr) { | 
| - LOperand* context = UseFixed(instr->context(), esi); | 
| + LOperand* context = UseAny(instr->context()); | 
| 
 
Michael Starzinger
2013/01/31 13:15:10
It seems info()->MarkAsDeferredCalling() is missin
 
danno
2013/01/31 15:53:25
Done.
 
 | 
| LOperand* temp = TempRegister(); | 
| LAllocateObject* result = new(zone()) LAllocateObject(context, temp); | 
| return AssignPointerMap(DefineAsRegister(result)); | 
| } | 
| +LInstruction* LChunkBuilder::DoAllocate(HAllocate* instr) { | 
| + info()->MarkAsDeferredCalling(); | 
| + LOperand* context = UseAny(instr->context()); | 
| + LOperand* size = UseTempRegister(instr->size()); | 
| + LOperand* temp = TempRegister(); | 
| + LAllocate* result = new(zone()) LAllocate(context, size, temp); | 
| + return AssignPointerMap(DefineAsRegister(result)); | 
| +} | 
| + | 
| + | 
| LInstruction* LChunkBuilder::DoFastLiteral(HFastLiteral* instr) { | 
| LOperand* context = UseFixed(instr->context(), esi); | 
| return MarkAsCall( |