diff options
author | Joyee Cheung <joyeec9h3@gmail.com> | 2018-11-09 11:38:28 +0800 |
---|---|---|
committer | Joyee Cheung <joyeec9h3@gmail.com> | 2018-11-14 02:59:44 +0800 |
commit | 235afb4c6ad79fbf44c2a2d8e1aa8b85b5ac39f7 (patch) | |
tree | 7e915dbd68b4c05d1cfa2367df02e7c717f7619a /src | |
parent | 08bfd5625f7deaa5d58bbfac1f9152261a246b4a (diff) | |
download | android-node-v8-235afb4c6ad79fbf44c2a2d8e1aa8b85b5ac39f7.tar.gz android-node-v8-235afb4c6ad79fbf44c2a2d8e1aa8b85b5ac39f7.tar.bz2 android-node-v8-235afb4c6ad79fbf44c2a2d8e1aa8b85b5ac39f7.zip |
process: remove pushValueToArray in GetActiveRequests
Instead of calling into JS from C++ to push values into an array,
use the new Array::New API that takes a pointer and a length
directly.
PR-URL: https://github.com/nodejs/node/pull/24264
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Daniel Bevenius <daniel.bevenius@gmail.com>
Reviewed-By: Refael Ackermann <refack@gmail.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/node_process.cc | 20 |
1 files changed, 4 insertions, 16 deletions
diff --git a/src/node_process.cc b/src/node_process.cc index 74b2b64f34..6e9c06e02d 100644 --- a/src/node_process.cc +++ b/src/node_process.cc @@ -797,29 +797,17 @@ void GetActiveRequests(const FunctionCallbackInfo<Value>& args) { Environment* env = Environment::GetCurrent(args); Local<Array> ary = Array::New(args.GetIsolate()); - Local<Context> ctx = env->context(); - Local<Function> fn = env->push_values_to_array_function(); - Local<Value> argv[NODE_PUSH_VAL_TO_ARRAY_MAX]; - size_t idx = 0; - + std::vector<Local<Value>> request_v; for (auto w : *env->req_wrap_queue()) { if (w->persistent().IsEmpty()) continue; - argv[idx] = w->GetOwner(); - if (++idx >= arraysize(argv)) { - fn->Call(ctx, ary, idx, argv).ToLocalChecked(); - idx = 0; - } - } - - if (idx > 0) { - fn->Call(ctx, ary, idx, argv).ToLocalChecked(); + request_v.push_back(w->GetOwner()); } - args.GetReturnValue().Set(ary); + args.GetReturnValue().Set( + Array::New(env->isolate(), request_v.data(), request_v.size())); } - // Non-static, friend of HandleWrap. Could have been a HandleWrap method but // implemented here for consistency with GetActiveRequests(). void GetActiveHandles(const FunctionCallbackInfo<Value>& args) { |