| Index: src/utils/random-number-generator.cc
 | 
| diff --git a/src/utils/random-number-generator.cc b/src/utils/random-number-generator.cc
 | 
| index 5e13e8fea8536aaca706c4b6f4c4cde845445f68..3f657fb524200d2559838eebe2e17f2d1e26dc85 100644
 | 
| --- a/src/utils/random-number-generator.cc
 | 
| +++ b/src/utils/random-number-generator.cc
 | 
| @@ -28,6 +28,7 @@
 | 
|  #include "utils/random-number-generator.h"
 | 
|  
 | 
|  #include <cstdio>
 | 
| +#include <cstdlib>
 | 
|  
 | 
|  #include "flags.h"
 | 
|  #include "platform/mutex.h"
 | 
| @@ -67,6 +68,16 @@ RandomNumberGenerator::RandomNumberGenerator() {
 | 
|      }
 | 
|    }
 | 
|  
 | 
| +#if V8_OS_CYGWIN || V8_OS_WIN
 | 
| +  // Use rand_s() to gather entropy on Windows. See:
 | 
| +  // https://code.google.com/p/v8/issues/detail?id=2905
 | 
| +  unsigned first_half, second_half;
 | 
| +  errno_t result = rand_s(&first_half);
 | 
| +  ASSERT_EQ(0, result);
 | 
| +  result = rand_s(&second_half);
 | 
| +  ASSERT_EQ(0, result);
 | 
| +  SetSeed((static_cast<int64_t>(first_half) << 32) + second_half);
 | 
| +#else
 | 
|    // Gather entropy from /dev/urandom if available.
 | 
|    FILE* fp = fopen("/dev/urandom", "rb");
 | 
|    if (fp != NULL) {
 | 
| @@ -91,6 +102,7 @@ RandomNumberGenerator::RandomNumberGenerator() {
 | 
|    seed ^= TimeTicks::HighResNow().ToInternalValue() << 16;
 | 
|    seed ^= TimeTicks::Now().ToInternalValue() << 8;
 | 
|    SetSeed(seed);
 | 
| +#endif  // V8_OS_CYGWIN || V8_OS_WIN
 | 
|  }
 | 
|  
 | 
|  
 | 
| 
 |