namespace node {
-extern v8::Isolate* node_isolate;
-
NODE_EXTERN extern bool no_deprecation;
NODE_EXTERN int Start(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))
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;
}
}
static inline void cb_destroy(v8::Persistent<v8::Function> * cb) {
- cb->Dispose(node_isolate);
+ cb->Dispose(v8::Isolate::GetCurrent());
delete cb;
}
namespace node {
-extern v8::Isolate* node_isolate;
-
class NODE_EXTERN ObjectWrap {
public:
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();
}
}
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.
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
*/
virtual void Unref() {
assert(!handle_.IsEmpty());
- assert(!handle_.IsWeak(node_isolate));
+ assert(!handle_.IsWeak(v8::Isolate::GetCurrent()));
assert(refs_ > 0);
if (--refs_ == 0) { MakeWeak(); }
}
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