diff --git a/src/env.h b/src/env.h index 0c616ddef21400..6151c57069ad7b 100644 --- a/src/env.h +++ b/src/env.h @@ -38,6 +38,12 @@ namespace node { #define NODE_ISOLATE_SLOT 3 #endif +// The number of items passed to push_values_to_array_function has diminishing +// returns around 8. This should be used at all call sites using said function. +#ifndef NODE_PUSH_VAL_TO_ARRAY_MAX +#define NODE_PUSH_VAL_TO_ARRAY_MAX 8 +#endif + // Strings are per-isolate primitives but Environment proxies them // for the sake of convenience. Strings should be ASCII-only. #define PER_ISOLATE_STRING_PROPERTIES(V) \ @@ -231,12 +237,11 @@ namespace node { V(zero_return_string, "ZERO_RETURN") \ #define ENVIRONMENT_STRONG_PERSISTENT_PROPERTIES(V) \ - V(add_properties_by_index_function, v8::Function) \ V(as_external, v8::External) \ + V(async_hooks_destroy_function, v8::Function) \ V(async_hooks_init_function, v8::Function) \ - V(async_hooks_pre_function, v8::Function) \ V(async_hooks_post_function, v8::Function) \ - V(async_hooks_destroy_function, v8::Function) \ + V(async_hooks_pre_function, v8::Function) \ V(binding_cache_object, v8::Object) \ V(buffer_constructor_function, v8::Function) \ V(buffer_prototype_object, v8::Object) \ @@ -250,6 +255,7 @@ namespace node { V(pipe_constructor_template, v8::FunctionTemplate) \ V(process_object, v8::Object) \ V(promise_reject_function, v8::Function) \ + V(push_values_to_array_function, v8::Function) \ V(script_context_constructor_template, v8::FunctionTemplate) \ V(script_data_constructor_function, v8::Function) \ V(secure_context_constructor_template, v8::FunctionTemplate) \ diff --git a/src/node.cc b/src/node.cc index 49cfc8a06053d2..4c08bae04bdeef 100644 --- a/src/node.cc +++ b/src/node.cc @@ -1063,7 +1063,7 @@ void SetupProcessObject(const FunctionCallbackInfo& args) { CHECK(args[0]->IsFunction()); - env->set_add_properties_by_index_function(args[0].As()); + env->set_push_values_to_array_function(args[0].As()); env->process_object()->Delete( FIXED_ONE_BYTE_STRING(env->isolate(), "_setupProcessObject")); } @@ -1607,7 +1607,7 @@ static void GetActiveRequests(const FunctionCallbackInfo& args) { Local ary = Array::New(args.GetIsolate()); Local ctx = env->context(); - Local fn = env->add_properties_by_index_function(); + Local fn = env->push_values_to_array_function(); static const size_t argc = 8; Local argv[argc]; size_t i = 0; diff --git a/src/node.js b/src/node.js index 34aae9395442a0..8d77adc27c4102 100644 --- a/src/node.js +++ b/src/node.js @@ -181,9 +181,9 @@ } startup.setupProcessObject = function() { - process._setupProcessObject(setPropByIndex); + process._setupProcessObject(pushValueToArray); - function setPropByIndex() { + function pushValueToArray() { for (var i = 0; i < arguments.length; i++) this.push(arguments[i]); }