Index: src/ia32/lithium-ia32.cc |
diff --git a/src/ia32/lithium-ia32.cc b/src/ia32/lithium-ia32.cc |
index e2eee19c841bf223e2b1f45898cfcbd6e2a2ddce..4c83f8502cd6a762081e7f2d26bf827db31054c7 100644 |
--- a/src/ia32/lithium-ia32.cc |
+++ b/src/ia32/lithium-ia32.cc |
@@ -1715,10 +1715,14 @@ LInstruction* LChunkBuilder::DoPower(HPower* instr) { |
LInstruction* LChunkBuilder::DoRandom(HRandom* instr) { |
ASSERT(instr->representation().IsDouble()); |
- ASSERT(instr->global_object()->representation().IsSmiOrTagged()); |
- LOperand* global_object = UseFixed(instr->global_object(), eax); |
- LRandom* result = new(zone()) LRandom(global_object); |
- return MarkAsCall(DefineFixedDouble(result, xmm1), instr); |
+ ASSERT(instr->global_object()->representation().IsTagged()); |
+ LOperand* global_object = UseTempRegister(instr->global_object()); |
+ LOperand* scratch = TempRegister(); |
+ LOperand* scratch2 = TempRegister(); |
+ LOperand* scratch3 = TempRegister(); |
+ LRandom* result = new(zone()) LRandom( |
+ global_object, scratch, scratch2, scratch3); |
+ return DefineFixedDouble(result, xmm1); |
} |