| Index: src/bootstrapper.cc
|
| diff --git a/src/bootstrapper.cc b/src/bootstrapper.cc
|
| index f1fbdebec65a3e7b6fb8ec17683d94ccfbfc7181..0d84917b3c8435f03403491685e7a95de2ea9997 100644
|
| --- a/src/bootstrapper.cc
|
| +++ b/src/bootstrapper.cc
|
| @@ -98,7 +98,7 @@ Handle<String> Bootstrapper::NativesSourceLookup(int index) {
|
|
|
|
|
| void Bootstrapper::Initialize(bool create_heap_objects) {
|
| - extensions_cache_.Initialize(create_heap_objects);
|
| + extensions_cache_.Initialize(isolate_, create_heap_objects);
|
| }
|
|
|
|
|
| @@ -147,7 +147,7 @@ void Bootstrapper::TearDown() {
|
| delete_these_arrays_on_tear_down_ = NULL;
|
| }
|
|
|
| - extensions_cache_.Initialize(false); // Yes, symmetrical
|
| + extensions_cache_.Initialize(isolate_, false); // Yes, symmetrical
|
| }
|
|
|
|
|
| @@ -1316,13 +1316,9 @@ void Genesis::InitializeGlobal(Handle<GlobalObject> inner_global,
|
| Handle<FixedArray> embedder_data = factory->NewFixedArray(2);
|
| native_context()->set_embedder_data(*embedder_data);
|
|
|
| - {
|
| - // Initialize the random seed slot.
|
| - Handle<ByteArray> zeroed_byte_array(
|
| - factory->NewByteArray(kRandomStateSize));
|
| - native_context()->set_random_seed(*zeroed_byte_array);
|
| - memset(zeroed_byte_array->GetDataStartAddress(), 0, kRandomStateSize);
|
| - }
|
| + // Allocate the random seed slot.
|
| + Handle<ByteArray> random_seed = factory->NewByteArray(kRandomStateSize);
|
| + native_context()->set_random_seed(*random_seed);
|
| }
|
|
|
|
|
| @@ -2649,6 +2645,14 @@ Genesis::Genesis(Isolate* isolate,
|
| InitializeExperimentalGlobal();
|
| if (!InstallExperimentalNatives()) return;
|
|
|
| + // Initially seed the per-context random number generator
|
| + // using the per-isolate random number generator.
|
| + uint32_t* state = reinterpret_cast<uint32_t*>(
|
| + native_context()->random_seed()->GetDataStartAddress());
|
| + do {
|
| + isolate->random_number_generator()->NextBytes(state, kRandomStateSize);
|
| + } while (state[0] == 0 || state[1] == 0);
|
| +
|
| result_ = native_context();
|
| }
|
|
|
|
|