Index: src/arm/lithium-arm.cc |
diff --git a/src/arm/lithium-arm.cc b/src/arm/lithium-arm.cc |
index ce3a66f9c3fce0953f6d80a701087e49cb3aa2ec..5045ab8763eb3e2a521a0fbeff7d97a4283b9631 100644 |
--- a/src/arm/lithium-arm.cc |
+++ b/src/arm/lithium-arm.cc |
@@ -1602,7 +1602,12 @@ LInstruction* LChunkBuilder::DoLoadGlobal(HLoadGlobal* instr) { |
LInstruction* LChunkBuilder::DoStoreGlobal(HStoreGlobal* instr) { |
- return new LStoreGlobal(UseRegisterAtStart(instr->value())); |
+ LOperand* temp = instr->check_hole_value() ? TempRegister() : NULL; |
Kevin Millikin (Chromium)
2011/01/27 07:56:07
OK, but since almost every line has to check the s
Mads Ager (chromium)
2011/01/27 08:33:36
Done.
|
+ LOperand* value = instr->check_hole_value() |
+ ? UseRegister(instr->value()) |
+ : UseRegisterAtStart(instr->value()); |
+ LStoreGlobal* result = new LStoreGlobal(value, temp); |
+ return instr->check_hole_value() ? AssignEnvironment(result) : result; |
} |