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_)),
#define ATOM_BROWSER_JAVASCRIPT_ENVIRONMENT_H_
#include "base/basictypes.h"
-#include "v8/include/v8.h"
+#include "gin/public/isolate_holder.h"
namespace atom {
}
private:
+ gin::IsolateHolder isolate_holder_;
v8::Isolate* isolate_;
+ v8::Isolate::Scope isolate_scope_;
v8::Locker locker_;
v8::HandleScope handle_scope_;
v8::UniquePersistent<v8::Context> context_;
call_next_tick_async_.data = this;
uv_async_init(uv_default_loop(), &g_callback_uv_handle, UvOnCallback);
- v8::V8::SetFatalErrorHandler(FatalErrorCallback);
}
AtomBindings::~AtomBindings() {
void AtomBindings::BindTo(v8::Isolate* isolate,
v8::Handle<v8::Object> process) {
+ v8::V8::SetFatalErrorHandler(FatalErrorCallback);
+
mate::Dictionary dict(isolate, process);
dict.SetMethod("crash", &Crash);
dict.SetMethod("log", &Log);