return ret;
}
- pargs->args.data = njs_array_alloc(vm, 1, length, 0);
+ pargs->args.data = njs_array_alloc(vm, 1, 0, NJS_ARRAY_SPARE);
if (njs_slow_path(pargs->args.data == NULL)) {
return NJS_ERROR;
}
{
njs_int_t ret;
njs_array_t *array;
- njs_value_t arguments[2], next;
+ njs_value_t arguments[2], next, arr_value;
njs_function_t *on_fulfilled;
njs_promise_capability_t *capability;
njs_promise_all_context_t *context;
capability = pargs->capability;
array = args->data;
- njs_set_undefined(&array->start[index]);
+ njs_set_array(&arr_value, array);
+
+ ret = njs_value_property_i64_set(vm, &arr_value, index,
+ njs_value_arg(&njs_value_undefined));
+ if (njs_slow_path(ret == NJS_ERROR)) {
+ return ret;
+ }
ret = njs_function_call(vm, pargs->function, pargs->constructor, value,
1, &next);
njs_promise_all_resolve_element_functions(njs_vm_t *vm, njs_value_t *args,
njs_uint_t nargs, njs_index_t unused)
{
- njs_value_t arguments;
+ njs_int_t ret;
+ njs_value_t arr_value;
njs_promise_all_context_t *context;
context = vm->top_frame->function->context;
}
context->already_called = 1;
- context->values->start[context->index] = *njs_arg(args, nargs, 1);
+
+ njs_set_array(&arr_value, context->values);
+
+ ret = njs_value_property_i64_set(vm, &arr_value, context->index,
+ njs_arg(args, nargs, 1));
+ if (njs_slow_path(ret == NJS_ERROR)) {
+ return ret;
+ }
if (--(*context->remaining_elements) == 0) {
njs_mp_free(vm->mem_pool, context->remaining_elements);
- njs_set_array(&arguments, context->values);
-
return njs_function_call(vm,
njs_function(&context->capability->resolve),
- &njs_value_undefined, &arguments, 1,
+ &njs_value_undefined, &arr_value, 1,
&vm->retval);
}
{
njs_int_t ret;
njs_array_t *array;
- njs_value_t arguments[2], next;
+ njs_value_t arguments[2], next, arr_value;
njs_function_t *on_fulfilled, *on_rejected;
njs_promise_capability_t *capability;
njs_promise_all_context_t *context;
capability = pargs->capability;
array = args->data;
- njs_set_undefined(&array->start[index]);
+ njs_set_array(&arr_value, array);
+
+ ret = njs_value_property_i64_set(vm, &arr_value, index,
+ njs_value_arg(&njs_value_undefined));
+ if (njs_slow_path(ret == NJS_ERROR)) {
+ return ret;
+ }
ret = njs_function_call(vm, pargs->function, pargs->constructor, value,
1, &next);
njs_value_t *args, njs_uint_t nargs, njs_index_t rejected)
{
njs_int_t ret;
- njs_value_t arguments, *value;
+ njs_value_t obj_value, arr_value;
njs_object_t *obj;
const njs_value_t *status, *set;
njs_promise_all_context_t *context;
return NJS_ERROR;
}
- value = &context->values->start[context->index];
-
- njs_set_object(value, obj);
+ njs_set_object(&obj_value, obj);
if (rejected) {
status = &string_rejected;
set = &string_value;
}
- ret = njs_value_property_set(vm, value, njs_value_arg(&string_status),
+ ret = njs_value_property_set(vm, &obj_value, njs_value_arg(&string_status),
njs_value_arg(status));
if (njs_slow_path(ret == NJS_ERROR)) {
return ret;
}
- ret = njs_value_property_set(vm, value, njs_value_arg(set),
+ ret = njs_value_property_set(vm, &obj_value, njs_value_arg(set),
njs_arg(args, nargs, 1));
if (njs_slow_path(ret == NJS_ERROR)) {
return ret;
}
+ njs_set_array(&arr_value, context->values);
+
+ ret = njs_value_property_i64_set(vm, &arr_value, context->index,
+ &obj_value);
+ if (njs_slow_path(ret == NJS_ERROR)) {
+ return ret;
+ }
+
if (--(*context->remaining_elements) == 0) {
njs_mp_free(vm->mem_pool, context->remaining_elements);
- njs_set_array(&arguments, context->values);
-
return njs_function_call(vm,
njs_function(&context->capability->resolve),
- &njs_value_undefined, &arguments, 1,
+ &njs_value_undefined, &arr_value, 1,
&vm->retval);
}
{
njs_int_t ret;
njs_array_t *array;
- njs_value_t arguments[2], next;
+ njs_value_t arguments[2], next, arr_value;
njs_function_t *on_rejected;
njs_promise_capability_t *capability;
njs_promise_all_context_t *context;
capability = pargs->capability;
- array = pargs->args.data;
- njs_set_undefined(&array->start[index]);
+ array = args->data;
+ njs_set_array(&arr_value, array);
+
+ ret = njs_value_property_i64_set(vm, &arr_value, index,
+ njs_value_arg(&njs_value_undefined));
+ if (njs_slow_path(ret == NJS_ERROR)) {
+ return ret;
+ }
ret = njs_function_call(vm, pargs->function, pargs->constructor, value, 1,
&next);
njs_promise_any_reject_element_functions(njs_vm_t *vm, njs_value_t *args,
njs_uint_t nargs, njs_index_t unused)
{
- njs_value_t argument;
+ njs_int_t ret;
+ njs_value_t argument, arr_value;
njs_object_t *error;
njs_promise_all_context_t *context;
}
context->already_called = 1;
- context->values->start[context->index] = *njs_arg(args, nargs, 1);
+
+ njs_set_array(&arr_value, context->values);
+
+ ret = njs_value_property_i64_set(vm, &arr_value, context->index,
+ njs_arg(args, nargs, 1));
+ if (njs_slow_path(ret == NJS_ERROR)) {
+ return ret;
+ }
if (--(*context->remaining_elements) == 0) {
njs_mp_free(vm->mem_pool, context->remaining_elements);
- njs_set_array(&argument, context->values);
-
error = njs_error_alloc(vm, NJS_OBJ_TYPE_AGGREGATE_ERROR,
- NULL, &string_any_rejected, &argument);
+ NULL, &string_any_rejected, &arr_value);
if (njs_slow_path(error == NULL)) {
return NJS_ERROR;
}