From 241b07f76342db7f8c7e8373ab46b157e3b7c4a0 Mon Sep 17 00:00:00 2001 From: Cheng Zhao Date: Mon, 1 Sep 2014 16:41:26 +0800 Subject: [PATCH] Initailize V8 with gin. --- atom/browser/javascript_environment.cc | 4 +++- atom/browser/javascript_environment.h | 4 +++- atom/common/api/atom_bindings.cc | 3 ++- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/atom/browser/javascript_environment.cc b/atom/browser/javascript_environment.cc index ddc29af..dbaeb57 100644 --- a/atom/browser/javascript_environment.cc +++ b/atom/browser/javascript_environment.cc @@ -7,7 +7,9 @@ namespace atom { JavascriptEnvironment::JavascriptEnvironment() - : isolate_(v8::Isolate::GetCurrent()), + : isolate_holder_(gin::IsolateHolder::kNonStrictMode), + isolate_(isolate_holder_.isolate()), + isolate_scope_(isolate_), locker_(isolate_), handle_scope_(isolate_), context_(isolate_, v8::Context::New(isolate_)), diff --git a/atom/browser/javascript_environment.h b/atom/browser/javascript_environment.h index 67cab80..5f725ba 100644 --- a/atom/browser/javascript_environment.h +++ b/atom/browser/javascript_environment.h @@ -6,7 +6,7 @@ #define ATOM_BROWSER_JAVASCRIPT_ENVIRONMENT_H_ #include "base/basictypes.h" -#include "v8/include/v8.h" +#include "gin/public/isolate_holder.h" namespace atom { @@ -20,7 +20,9 @@ class JavascriptEnvironment { } private: + gin::IsolateHolder isolate_holder_; v8::Isolate* isolate_; + v8::Isolate::Scope isolate_scope_; v8::Locker locker_; v8::HandleScope handle_scope_; v8::UniquePersistent context_; diff --git a/atom/common/api/atom_bindings.cc b/atom/common/api/atom_bindings.cc index 3f274cc..0390d86 100644 --- a/atom/common/api/atom_bindings.cc +++ b/atom/common/api/atom_bindings.cc @@ -61,7 +61,6 @@ AtomBindings::AtomBindings() { call_next_tick_async_.data = this; uv_async_init(uv_default_loop(), &g_callback_uv_handle, UvOnCallback); - v8::V8::SetFatalErrorHandler(FatalErrorCallback); } AtomBindings::~AtomBindings() { @@ -69,6 +68,8 @@ AtomBindings::~AtomBindings() { void AtomBindings::BindTo(v8::Isolate* isolate, v8::Handle process) { + v8::V8::SetFatalErrorHandler(FatalErrorCallback); + mate::Dictionary dict(isolate, process); dict.SetMethod("crash", &Crash); dict.SetMethod("log", &Log); -- 2.7.4