diff --git a/src/node_process.cc b/src/node_process.cc index 6e9c06e02d81b8..161833ebbd3843 100644 --- a/src/node_process.cc +++ b/src/node_process.cc @@ -813,26 +813,14 @@ void GetActiveRequests(const FunctionCallbackInfo& args) { void GetActiveHandles(const FunctionCallbackInfo& args) { Environment* env = Environment::GetCurrent(args); - Local ary = Array::New(env->isolate()); - Local ctx = env->context(); - Local fn = env->push_values_to_array_function(); - Local argv[NODE_PUSH_VAL_TO_ARRAY_MAX]; - size_t idx = 0; - + std::vector> handle_v; for (auto w : *env->handle_wrap_queue()) { if (!HandleWrap::HasRef(w)) 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(); + handle_v.push_back(w->GetOwner()); } - - args.GetReturnValue().Set(ary); + args.GetReturnValue().Set( + Array::New(env->isolate(), handle_v.data(), handle_v.size())); } void DebugPortGetter(Local property,