diff options
author | Ben Noordhuis <info@bnoordhuis.nl> | 2014-10-13 15:19:55 +0200 |
---|---|---|
committer | Fedor Indutny <fedor@indutny.com> | 2014-10-13 23:46:46 +0400 |
commit | d3c317e08ac6a624fde8b242905992eafdd954ac (patch) | |
tree | 1dd2756855ab5b4513503acc660705fa898c5c64 /src/udp_wrap.cc | |
parent | b45d33617b569bf5fa84c9343da9f7d129756968 (diff) | |
download | android-node-v8-d3c317e08ac6a624fde8b242905992eafdd954ac.tar.gz android-node-v8-d3c317e08ac6a624fde8b242905992eafdd954ac.tar.bz2 android-node-v8-d3c317e08ac6a624fde8b242905992eafdd954ac.zip |
src: attach env directly to api functions
Attach the per-context execution environment directly to API functions.
Rationale:
* Gets node one step closer to multi-isolate readiness.
* Avoids multi-context confusion, e.g. when the caller and callee live
in different contexts.
* Avoids expensive calls to pthread_getspecific() on platforms where
V8 does not know how to use the thread-local storage directly.
(Linux, the BSDs.)
PR-URL: https://github.com/node-forward/node/pull/18
Reviewed-By: Fedor Indutny <fedor@indutny.com>
Diffstat (limited to 'src/udp_wrap.cc')
-rw-r--r-- | src/udp_wrap.cc | 45 |
1 files changed, 22 insertions, 23 deletions
diff --git a/src/udp_wrap.cc b/src/udp_wrap.cc index 5e2e7e2af1..d41567d25c 100644 --- a/src/udp_wrap.cc +++ b/src/udp_wrap.cc @@ -91,7 +91,7 @@ void UDPWrap::Initialize(Handle<Object> target, Handle<Context> context) { Environment* env = Environment::GetCurrent(context); - Local<FunctionTemplate> t = FunctionTemplate::New(env->isolate(), New); + Local<FunctionTemplate> t = env->NewFunctionTemplate(New); t->InstanceTemplate()->SetInternalFieldCount(1); t->SetClassName(FIXED_ONE_BYTE_STRING(env->isolate(), "UDP")); @@ -104,23 +104,23 @@ void UDPWrap::Initialize(Handle<Object> target, v8::DEFAULT, attributes); - NODE_SET_PROTOTYPE_METHOD(t, "bind", Bind); - NODE_SET_PROTOTYPE_METHOD(t, "send", Send); - NODE_SET_PROTOTYPE_METHOD(t, "bind6", Bind6); - NODE_SET_PROTOTYPE_METHOD(t, "send6", Send6); - NODE_SET_PROTOTYPE_METHOD(t, "close", Close); - NODE_SET_PROTOTYPE_METHOD(t, "recvStart", RecvStart); - NODE_SET_PROTOTYPE_METHOD(t, "recvStop", RecvStop); - NODE_SET_PROTOTYPE_METHOD(t, "getsockname", GetSockName); - NODE_SET_PROTOTYPE_METHOD(t, "addMembership", AddMembership); - NODE_SET_PROTOTYPE_METHOD(t, "dropMembership", DropMembership); - NODE_SET_PROTOTYPE_METHOD(t, "setMulticastTTL", SetMulticastTTL); - NODE_SET_PROTOTYPE_METHOD(t, "setMulticastLoopback", SetMulticastLoopback); - NODE_SET_PROTOTYPE_METHOD(t, "setBroadcast", SetBroadcast); - NODE_SET_PROTOTYPE_METHOD(t, "setTTL", SetTTL); - - NODE_SET_PROTOTYPE_METHOD(t, "ref", HandleWrap::Ref); - NODE_SET_PROTOTYPE_METHOD(t, "unref", HandleWrap::Unref); + env->SetProtoMethod(t, "bind", Bind); + env->SetProtoMethod(t, "send", Send); + env->SetProtoMethod(t, "bind6", Bind6); + env->SetProtoMethod(t, "send6", Send6); + env->SetProtoMethod(t, "close", Close); + env->SetProtoMethod(t, "recvStart", RecvStart); + env->SetProtoMethod(t, "recvStop", RecvStop); + env->SetProtoMethod(t, "getsockname", GetSockName); + env->SetProtoMethod(t, "addMembership", AddMembership); + env->SetProtoMethod(t, "dropMembership", DropMembership); + env->SetProtoMethod(t, "setMulticastTTL", SetMulticastTTL); + env->SetProtoMethod(t, "setMulticastLoopback", SetMulticastLoopback); + env->SetProtoMethod(t, "setBroadcast", SetBroadcast); + env->SetProtoMethod(t, "setTTL", SetTTL); + + env->SetProtoMethod(t, "ref", HandleWrap::Ref); + env->SetProtoMethod(t, "unref", HandleWrap::Unref); target->Set(FIXED_ONE_BYTE_STRING(env->isolate(), "UDP"), t->GetFunction()); env->set_udp_constructor_function(t->GetFunction()); @@ -129,15 +129,14 @@ void UDPWrap::Initialize(Handle<Object> target, void UDPWrap::New(const FunctionCallbackInfo<Value>& args) { CHECK(args.IsConstructCall()); - Environment* env = Environment::GetCurrent(args.GetIsolate()); + Environment* env = Environment::GetCurrent(args); new UDPWrap(env, args.This()); } void UDPWrap::GetFD(Local<String>, const PropertyCallbackInfo<Value>& args) { #if !defined(_WIN32) - Environment* env = Environment::GetCurrent(args.GetIsolate()); - HandleScope scope(env->isolate()); + HandleScope scope(args.GetIsolate()); UDPWrap* wrap = Unwrap<UDPWrap>(args.Holder()); int fd = (wrap == NULL) ? -1 : wrap->handle_.io_watcher.fd; args.GetReturnValue().Set(fd); @@ -239,7 +238,7 @@ void UDPWrap::DropMembership(const FunctionCallbackInfo<Value>& args) { void UDPWrap::DoSend(const FunctionCallbackInfo<Value>& args, int family) { - Environment* env = Environment::GetCurrent(args.GetIsolate()); + Environment* env = Environment::GetCurrent(args); UDPWrap* wrap = Unwrap<UDPWrap>(args.Holder()); @@ -326,7 +325,7 @@ void UDPWrap::RecvStop(const FunctionCallbackInfo<Value>& args) { void UDPWrap::GetSockName(const FunctionCallbackInfo<Value>& args) { - Environment* env = Environment::GetCurrent(args.GetIsolate()); + Environment* env = Environment::GetCurrent(args); struct sockaddr_storage address; UDPWrap* wrap = Unwrap<UDPWrap>(args.Holder()); |