Skip to content

Commit

Permalink
process: remove pushValueToArray in GetActiveRequests
Browse files Browse the repository at this point in the history
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: #24264
Reviewed-By: Anna Henningsen <[email protected]>
Reviewed-By: Daniel Bevenius <[email protected]>
Reviewed-By: Refael Ackermann <[email protected]>
  • Loading branch information
joyeecheung committed Nov 13, 2018
1 parent 08bfd56 commit 235afb4
Showing 1 changed file with 4 additions and 16 deletions.
20 changes: 4 additions & 16 deletions src/node_process.cc
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand Down

0 comments on commit 235afb4

Please sign in to comment.