src: unexport node_isolate
authorBen Noordhuis <info@bnoordhuis.nl>
Fri, 7 Jun 2013 14:47:54 +0000 (16:47 +0200)
committerBen Noordhuis <info@bnoordhuis.nl>
Fri, 7 Jun 2013 15:01:16 +0000 (17:01 +0200)
Commit 0bba5902 accidentally (or maybe erroneously) added node_isolate
to src/node.h and src/node_object_wrap.h.

Undo that, said variable is not for public consumption. Add-on authors
should use v8::Isolate::GetCurrent() instead.

I missed that while reviewing. Mea culpa.

Fixes #5639.

src/node.h
src/node_object_wrap.h

index ded8b78..49f342f 100644 (file)
@@ -86,8 +86,6 @@
 
 namespace node {
 
-extern v8::Isolate* node_isolate;
-
 NODE_EXTERN extern bool no_deprecation;
 
 NODE_EXTERN int Start(int argc, char *argv[]);
@@ -97,8 +95,9 @@ v8::Handle<v8::Object> SetupProcessObject(int argc, char *argv[]);
 void Load(v8::Handle<v8::Object> process);
 void EmitExit(v8::Handle<v8::Object> process);
 
-#define NODE_PSYMBOL(s) \
-  v8::Persistent<v8::String>::New(node_isolate, v8::String::NewSymbol(s))
+#define NODE_PSYMBOL(s)                                                       \
+  v8::Persistent<v8::String>::New(v8::Isolate::GetCurrent(),                  \
+                                  v8::String::NewSymbol(s))
 
 /* Converts a unixtime to V8 Date */
 #define NODE_UNIXTIME_V8(t) v8::Date::New(1000*static_cast<double>(t))
@@ -152,10 +151,10 @@ NODE_EXTERN ssize_t DecodeWrite(char *buf,
 v8::Local<v8::Object> BuildStatsObject(const uv_stat_t* s);
 
 
-static inline v8::Persistent<v8::Function>* cb_persist(
-    const v8::Local<v8::Value> &v) {
-  v8::Persistent<v8::Function> *fn = new v8::Persistent<v8::Function>();
-  *fn = v8::Persistent<v8::Function>::New(node_isolate, v8::Local<v8::Function>::Cast(v));
+static inline v8::Persistent<v8::Function>* cb_persist(v8::Local<v8::Value> v) {
+  v8::Persistent<v8::Function>* fn = new v8::Persistent<v8::Function>();
+  *fn = v8::Persistent<v8::Function>::New(v8::Isolate::GetCurrent(),
+                                          v.As<v8::Function>());
   return fn;
 }
 
@@ -167,7 +166,7 @@ static inline v8::Persistent<v8::Function>* cb_unwrap(void *data) {
 }
 
 static inline void cb_destroy(v8::Persistent<v8::Function> * cb) {
-  cb->Dispose(node_isolate);
+  cb->Dispose(v8::Isolate::GetCurrent());
   delete cb;
 }
 
index d1826c8..4495b17 100644 (file)
@@ -37,8 +37,6 @@
 
 namespace node {
 
-extern v8::Isolate* node_isolate;
-
 class NODE_EXTERN ObjectWrap {
  public:
   ObjectWrap ( ) {
@@ -48,10 +46,11 @@ class NODE_EXTERN ObjectWrap {
 
   virtual ~ObjectWrap ( ) {
     if (!handle_.IsEmpty()) {
-      assert(handle_.IsNearDeath(node_isolate));
-      handle_.ClearWeak(node_isolate);
+      v8::Isolate* isolate = v8::Isolate::GetCurrent();
+      assert(handle_.IsNearDeath(isolate));
+      handle_.ClearWeak(isolate);
       handle_->SetAlignedPointerInInternalField(0, 0);
-      handle_.Dispose(node_isolate);
+      handle_.Dispose(isolate);
       handle_.Clear();
     }
   }
@@ -71,15 +70,17 @@ class NODE_EXTERN ObjectWrap {
   inline void Wrap (v8::Handle<v8::Object> handle) {
     assert(handle_.IsEmpty());
     assert(handle->InternalFieldCount() > 0);
-    handle_ = v8::Persistent<v8::Object>::New(node_isolate, handle);
+    v8::Isolate* isolate = v8::Isolate::GetCurrent();
+    handle_ = v8::Persistent<v8::Object>::New(isolate, handle);
     handle_->SetAlignedPointerInInternalField(0, this);
     MakeWeak();
   }
 
 
   inline void MakeWeak (void) {
-    handle_.MakeWeak(node_isolate, this, WeakCallback);
-    handle_.MarkIndependent(node_isolate);
+    v8::Isolate* isolate = v8::Isolate::GetCurrent();
+    handle_.MakeWeak(isolate, this, WeakCallback);
+    handle_.MarkIndependent(isolate);
   }
 
   /* Ref() marks the object as being attached to an event loop.
@@ -89,7 +90,7 @@ class NODE_EXTERN ObjectWrap {
   virtual void Ref() {
     assert(!handle_.IsEmpty());
     refs_++;
-    handle_.ClearWeak(node_isolate);
+    handle_.ClearWeak(v8::Isolate::GetCurrent());
   }
 
   /* Unref() marks an object as detached from the event loop.  This is its
@@ -103,7 +104,7 @@ class NODE_EXTERN ObjectWrap {
    */
   virtual void Unref() {
     assert(!handle_.IsEmpty());
-    assert(!handle_.IsWeak(node_isolate));
+    assert(!handle_.IsWeak(v8::Isolate::GetCurrent()));
     assert(refs_ > 0);
     if (--refs_ == 0) { MakeWeak(); }
   }
@@ -113,18 +114,18 @@ class NODE_EXTERN ObjectWrap {
 
 
  private:
-  static void WeakCallback(v8::Isolate* env,
+  static void WeakCallback(v8::Isolate* isolate,
                            v8::Persistent<v8::Value> value,
                            void* data) {
-    v8::HandleScope scope(node_isolate);
-
+    v8::HandleScope scope(isolate);
     ObjectWrap *obj = static_cast<ObjectWrap*>(data);
     assert(value == obj->handle_);
     assert(!obj->refs_);
-    assert(value.IsNearDeath(env));
+    assert(value.IsNearDeath(isolate));
     delete obj;
   }
 };
 
 } // namespace node
+
 #endif // object_wrap_h