summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJoyee Cheung <joyeec9h3@gmail.com>2018-11-09 11:38:28 +0800
committerJoyee Cheung <joyeec9h3@gmail.com>2018-11-14 02:59:44 +0800
commit235afb4c6ad79fbf44c2a2d8e1aa8b85b5ac39f7 (patch)
tree7e915dbd68b4c05d1cfa2367df02e7c717f7619a /src
parent08bfd5625f7deaa5d58bbfac1f9152261a246b4a (diff)
downloadandroid-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.cc20
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) {