Browse Source

tls_wrap: proxy handle methods in prototype

Set proxied methods wrappers in `TLSWrap` prototype instead of doing it
on every socket allocation. Should speed up things a bit and will
certainly make heapsnapshot less verbose.

PR-URL: https://github.com/iojs/io.js/pull/1108
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Trevor Norris <trev.norris@gmail.com>
v1.8.0-commit
Fedor Indutny 10 years ago
parent
commit
8431fc53f1
  1. 16
      lib/_tls_wrap.js
  2. 7
      src/tls_wrap.cc

16
lib/_tls_wrap.js

@ -271,6 +271,14 @@ var proxiedMethods = [
'setPendingInstances'
];
// Proxy HandleWrap, PipeWrap and TCPWrap methods
proxiedMethods.forEach(function(name) {
tls_wrap.TLSWrap.prototype[name] = function methodProxy() {
if (this._parent[name])
return this._parent[name].apply(this._parent, arguments);
};
});
TLSSocket.prototype._wrapHandle = function(handle) {
var res;
@ -297,14 +305,6 @@ TLSSocket.prototype._wrapHandle = function(handle) {
}
});
// Proxy HandleWrap, PipeWrap and TCPWrap methods
proxiedMethods.forEach(function(name) {
res[name] = function methodProxy() {
if (handle[name])
return handle[name].apply(handle, arguments);
};
});
return res;
};

7
src/tls_wrap.cc

@ -809,8 +809,8 @@ int TLSWrap::SelectSNIContextCallback(SSL* s, int* ad, void* arg) {
void TLSWrap::Initialize(Handle<Object> target,
Handle<Value> unused,
Handle<Context> context) {
Handle<Value> unused,
Handle<Context> context) {
Environment* env = Environment::GetCurrent(context);
env->SetMethod(target, "wrap", TLSWrap::Wrap);
@ -835,6 +835,9 @@ void TLSWrap::Initialize(Handle<Object> target,
env->set_tls_wrap_constructor_template(t);
env->set_tls_wrap_constructor_function(t->GetFunction());
target->Set(FIXED_ONE_BYTE_STRING(env->isolate(), "TLSWrap"),
t->GetFunction());
}
} // namespace node

Loading…
Cancel
Save