Index: src/x64/full-codegen-x64.cc |
diff --git a/src/x64/full-codegen-x64.cc b/src/x64/full-codegen-x64.cc |
index 90afd85717aed577a26ecdc83ee891f6270e82ce..d5aad91d297fe2dbc69497478469db0aadeeb16c 100644 |
--- a/src/x64/full-codegen-x64.cc |
+++ b/src/x64/full-codegen-x64.cc |
@@ -2693,8 +2693,13 @@ void FullCodeGenerator::EmitRandomHeapNumber(ZoneList<Expression*>* args) { |
// Return a random uint32 number in rax. |
// The fresh HeapNumber is in rbx, which is callee-save on both x64 ABIs. |
- __ PrepareCallCFunction(0); |
- __ CallCFunction(ExternalReference::random_uint32_function(isolate()), 0); |
+ __ PrepareCallCFunction(1); |
+#ifdef _WIN64 |
+ __ LoadAddress(rcx, ExternalReference::isolate_address()); |
+#else |
+ __ LoadAddress(rdi, ExternalReference::isolate_address()); |
+#endif |
+ __ CallCFunction(ExternalReference::random_uint32_function(isolate()), 1); |
// Convert 32 random bits in rax to 0.(32 random bits) in a double |
// by computing: |