Index: src/ia32/lithium-ia32.cc |
diff --git a/src/ia32/lithium-ia32.cc b/src/ia32/lithium-ia32.cc |
index 6e075937977f83461a7ab19be17c061a4be23a49..46d8f408823c0d20cc66693b26469b5f75dd8a93 100644 |
--- a/src/ia32/lithium-ia32.cc |
+++ b/src/ia32/lithium-ia32.cc |
@@ -1055,7 +1055,13 @@ LInstruction* LChunkBuilder::DoThisFunction(HThisFunction* instr) { |
LInstruction* LChunkBuilder::DoContext(HContext* instr) { |
- return instr->HasNoUses() ? NULL : DefineAsRegister(new(zone()) LContext); |
+ if (instr->HasNoUses()) return NULL; |
+ |
+ if (info()->IsStub()) { |
+ return DefineFixed(new(zone()) LContext, esi); |
+ } |
+ |
+ return DefineAsRegister(new(zone()) LContext); |
} |
@@ -1865,7 +1871,10 @@ LInstruction* LChunkBuilder::DoClampToUint8(HClampToUint8* instr) { |
LInstruction* LChunkBuilder::DoReturn(HReturn* instr) { |
- return new(zone()) LReturn(UseFixed(instr->value(), eax)); |
+ LOperand* context = info()->IsStub() |
+ ? UseFixed(instr->context(), esi) |
+ : NULL; |
+ return new(zone()) LReturn(UseFixed(instr->value(), eax), context); |
} |