| Index: gin/isolate_holder.cc
|
| diff --git a/gin/isolate_holder.cc b/gin/isolate_holder.cc
|
| index d0ebbb84bf274055c474b7f9d077ccc6a7d5e947..8655c4bd7f79f64da7eb98b478ff297847784471 100644
|
| --- a/gin/isolate_holder.cc
|
| +++ b/gin/isolate_holder.cc
|
| @@ -24,8 +24,7 @@ bool GenerateEntropy(unsigned char* buffer, size_t amount) {
|
| return true;
|
| }
|
|
|
| -void EnsureV8Initialized(gin::IsolateHolder::ScriptMode mode,
|
| - bool gin_managed) {
|
| +void EnsureV8Initialized(bool gin_managed) {
|
| static bool v8_is_initialized = false;
|
| static bool v8_is_gin_managed = false;
|
| if (v8_is_initialized) {
|
| @@ -34,24 +33,13 @@ void EnsureV8Initialized(gin::IsolateHolder::ScriptMode mode,
|
| }
|
| v8_is_initialized = true;
|
| v8_is_gin_managed = gin_managed;
|
| - if (!gin_managed)
|
| - return;
|
| -
|
| - v8::V8::InitializePlatform(V8Platform::Get());
|
| - v8::V8::SetArrayBufferAllocator(ArrayBufferAllocator::SharedInstance());
|
| - if (mode == gin::IsolateHolder::kStrictMode) {
|
| - static const char v8_flags[] = "--use_strict";
|
| - v8::V8::SetFlagsFromString(v8_flags, sizeof(v8_flags) - 1);
|
| - }
|
| - v8::V8::SetEntropySource(&GenerateEntropy);
|
| - v8::V8::Initialize();
|
| }
|
|
|
| } // namespace
|
|
|
| -IsolateHolder::IsolateHolder(ScriptMode mode)
|
| +IsolateHolder::IsolateHolder()
|
| : isolate_owner_(true) {
|
| - EnsureV8Initialized(mode, true);
|
| + EnsureV8Initialized(true);
|
| isolate_ = v8::Isolate::New();
|
| v8::ResourceConstraints constraints;
|
| constraints.ConfigureDefaults(base::SysInfo::AmountOfPhysicalMemory(),
|
| @@ -64,7 +52,7 @@ IsolateHolder::IsolateHolder(ScriptMode mode)
|
| IsolateHolder::IsolateHolder(v8::Isolate* isolate,
|
| v8::ArrayBuffer::Allocator* allocator)
|
| : isolate_owner_(false), isolate_(isolate) {
|
| - EnsureV8Initialized(kNonStrictMode, false);
|
| + EnsureV8Initialized(false);
|
| Init(allocator);
|
| }
|
|
|
| @@ -74,6 +62,23 @@ IsolateHolder::~IsolateHolder() {
|
| isolate_->Dispose();
|
| }
|
|
|
| +// static
|
| +void IsolateHolder::Initialize(ScriptMode mode,
|
| + v8::ArrayBuffer::Allocator* allocator) {
|
| + static bool v8_is_initialized = false;
|
| + if (v8_is_initialized)
|
| + return;
|
| + v8::V8::InitializePlatform(V8Platform::Get());
|
| + v8::V8::SetArrayBufferAllocator(allocator);
|
| + if (mode == gin::IsolateHolder::kStrictMode) {
|
| + static const char v8_flags[] = "--use_strict";
|
| + v8::V8::SetFlagsFromString(v8_flags, sizeof(v8_flags) - 1);
|
| + }
|
| + v8::V8::SetEntropySource(&GenerateEntropy);
|
| + v8::V8::Initialize();
|
| + v8_is_initialized = true;
|
| +}
|
| +
|
| void IsolateHolder::Init(v8::ArrayBuffer::Allocator* allocator) {
|
| v8::Isolate::Scope isolate_scope(isolate_);
|
| v8::HandleScope handle_scope(isolate_);
|
|
|