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/tcp_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/tcp_wrap.cc')
-rw-r--r-- | src/tcp_wrap.cc | 72 |
1 files changed, 33 insertions, 39 deletions
diff --git a/src/tcp_wrap.cc b/src/tcp_wrap.cc index 128303cb39..1a4939f63c 100644 --- a/src/tcp_wrap.cc +++ b/src/tcp_wrap.cc @@ -71,7 +71,7 @@ void TCPWrap::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->SetClassName(FIXED_ONE_BYTE_STRING(env->isolate(), "TCP")); t->InstanceTemplate()->SetInternalFieldCount(1); @@ -96,41 +96,35 @@ void TCPWrap::Initialize(Handle<Object> target, Null(env->isolate())); - NODE_SET_PROTOTYPE_METHOD(t, "close", HandleWrap::Close); - - NODE_SET_PROTOTYPE_METHOD(t, "ref", HandleWrap::Ref); - NODE_SET_PROTOTYPE_METHOD(t, "unref", HandleWrap::Unref); - - NODE_SET_PROTOTYPE_METHOD(t, "readStart", StreamWrap::ReadStart); - NODE_SET_PROTOTYPE_METHOD(t, "readStop", StreamWrap::ReadStop); - NODE_SET_PROTOTYPE_METHOD(t, "shutdown", StreamWrap::Shutdown); - - NODE_SET_PROTOTYPE_METHOD(t, "writeBuffer", StreamWrap::WriteBuffer); - NODE_SET_PROTOTYPE_METHOD(t, - "writeAsciiString", - StreamWrap::WriteAsciiString); - NODE_SET_PROTOTYPE_METHOD(t, "writeUtf8String", StreamWrap::WriteUtf8String); - NODE_SET_PROTOTYPE_METHOD(t, "writeUcs2String", StreamWrap::WriteUcs2String); - NODE_SET_PROTOTYPE_METHOD(t, - "writeBinaryString", - StreamWrap::WriteBinaryString); - NODE_SET_PROTOTYPE_METHOD(t, "writev", StreamWrap::Writev); - - NODE_SET_PROTOTYPE_METHOD(t, "open", Open); - NODE_SET_PROTOTYPE_METHOD(t, "bind", Bind); - NODE_SET_PROTOTYPE_METHOD(t, "listen", Listen); - NODE_SET_PROTOTYPE_METHOD(t, "connect", Connect); - NODE_SET_PROTOTYPE_METHOD(t, "bind6", Bind6); - NODE_SET_PROTOTYPE_METHOD(t, "connect6", Connect6); - NODE_SET_PROTOTYPE_METHOD(t, "getsockname", GetSockName); - NODE_SET_PROTOTYPE_METHOD(t, "getpeername", GetPeerName); - NODE_SET_PROTOTYPE_METHOD(t, "setNoDelay", SetNoDelay); - NODE_SET_PROTOTYPE_METHOD(t, "setKeepAlive", SetKeepAlive); + env->SetProtoMethod(t, "close", HandleWrap::Close); + + env->SetProtoMethod(t, "ref", HandleWrap::Ref); + env->SetProtoMethod(t, "unref", HandleWrap::Unref); + + env->SetProtoMethod(t, "readStart", StreamWrap::ReadStart); + env->SetProtoMethod(t, "readStop", StreamWrap::ReadStop); + env->SetProtoMethod(t, "shutdown", StreamWrap::Shutdown); + + env->SetProtoMethod(t, "writeBuffer", StreamWrap::WriteBuffer); + env->SetProtoMethod(t, "writeAsciiString", StreamWrap::WriteAsciiString); + env->SetProtoMethod(t, "writeUtf8String", StreamWrap::WriteUtf8String); + env->SetProtoMethod(t, "writeUcs2String", StreamWrap::WriteUcs2String); + env->SetProtoMethod(t, "writeBinaryString", StreamWrap::WriteBinaryString); + env->SetProtoMethod(t, "writev", StreamWrap::Writev); + + env->SetProtoMethod(t, "open", Open); + env->SetProtoMethod(t, "bind", Bind); + env->SetProtoMethod(t, "listen", Listen); + env->SetProtoMethod(t, "connect", Connect); + env->SetProtoMethod(t, "bind6", Bind6); + env->SetProtoMethod(t, "connect6", Connect6); + env->SetProtoMethod(t, "getsockname", GetSockName); + env->SetProtoMethod(t, "getpeername", GetPeerName); + env->SetProtoMethod(t, "setNoDelay", SetNoDelay); + env->SetProtoMethod(t, "setKeepAlive", SetKeepAlive); #ifdef _WIN32 - NODE_SET_PROTOTYPE_METHOD(t, - "setSimultaneousAccepts", - SetSimultaneousAccepts); + env->SetProtoMethod(t, "setSimultaneousAccepts", SetSimultaneousAccepts); #endif target->Set(FIXED_ONE_BYTE_STRING(env->isolate(), "TCP"), t->GetFunction()); @@ -148,7 +142,7 @@ void TCPWrap::New(const FunctionCallbackInfo<Value>& args) { // Therefore we assert that we are not trying to call this as a // normal function. CHECK(args.IsConstructCall()); - Environment* env = Environment::GetCurrent(args.GetIsolate()); + Environment* env = Environment::GetCurrent(args); TCPWrap* wrap = new TCPWrap(env, args.This()); CHECK(wrap); } @@ -172,7 +166,7 @@ TCPWrap::~TCPWrap() { void TCPWrap::GetSockName(const FunctionCallbackInfo<Value>& args) { - Environment* env = Environment::GetCurrent(args.GetIsolate()); + Environment* env = Environment::GetCurrent(args); struct sockaddr_storage address; TCPWrap* wrap = Unwrap<TCPWrap>(args.Holder()); @@ -194,7 +188,7 @@ void TCPWrap::GetSockName(const FunctionCallbackInfo<Value>& args) { void TCPWrap::GetPeerName(const FunctionCallbackInfo<Value>& args) { - Environment* env = Environment::GetCurrent(args.GetIsolate()); + Environment* env = Environment::GetCurrent(args); struct sockaddr_storage address; TCPWrap* wrap = Unwrap<TCPWrap>(args.Holder()); @@ -353,7 +347,7 @@ void TCPWrap::AfterConnect(uv_connect_t* req, int status) { void TCPWrap::Connect(const FunctionCallbackInfo<Value>& args) { - Environment* env = Environment::GetCurrent(args.GetIsolate()); + Environment* env = Environment::GetCurrent(args); TCPWrap* wrap = Unwrap<TCPWrap>(args.Holder()); @@ -386,7 +380,7 @@ void TCPWrap::Connect(const FunctionCallbackInfo<Value>& args) { void TCPWrap::Connect6(const FunctionCallbackInfo<Value>& args) { - Environment* env = Environment::GetCurrent(args.GetIsolate()); + Environment* env = Environment::GetCurrent(args); TCPWrap* wrap = Unwrap<TCPWrap>(args.Holder()); |