arguments[0] = *entry;
njs_set_number(&arguments[1], n);
- arguments[2] = *args->value;
+ njs_value_assign(&arguments[2], &args->value);
- return njs_function_call(vm, args->function, args->argument, arguments, 3,
- retval);
+ return njs_function_call(vm, args->function, njs_value_arg(&args->argument),
+ arguments, 3, retval);
}
entry = njs_value_arg(&njs_value_undefined);
}
- if (njs_values_same_zero(args->argument, entry)) {
+ if (njs_values_same_zero(njs_value_arg(&args->argument), entry)) {
njs_set_true(retval);
return NJS_DONE;
njs_array_handler_index_of(njs_vm_t *vm, njs_iterator_args_t *args,
njs_value_t *entry, int64_t n, njs_value_t *retval)
{
- if (njs_values_strict_equal(args->argument, entry)) {
+ if (njs_values_strict_equal(njs_value_arg(&args->argument), entry)) {
njs_set_number(retval, n);
return NJS_DONE;
njs_value_t arguments[5];
if (njs_is_valid(entry)) {
- if (!njs_is_valid(args->argument)) {
- *(args->argument) = *entry;
+ if (!njs_value_is_valid(njs_value_arg(&args->argument))) {
+ njs_value_assign(&args->argument, entry);
return NJS_OK;
}
/* GC: array elt, array */
njs_set_undefined(&arguments[0]);
- arguments[1] = *args->argument;
+ njs_value_assign(&arguments[1], &args->argument);
arguments[2] = *entry;
njs_set_number(&arguments[3], n);
- arguments[4] = *args->value;
+ njs_value_assign(&arguments[4], &args->value);
ret = njs_function_apply(vm, args->function, arguments, 5,
- args->argument);
+ njs_value_arg(&args->argument));
if (njs_slow_path(ret != NJS_OK)) {
return ret;
}
int64_t i, length;
njs_int_t ret;
njs_array_t *array;
- njs_value_t accumulator;
njs_iterator_args_t iargs;
njs_iterator_handler_t handler;
- iargs.value = njs_argument(args, 0);
+ njs_value_assign(&iargs.value, njs_argument(args, 0));
- ret = njs_value_to_object(vm, iargs.value);
+ ret = njs_value_to_object(vm, njs_value_arg(&iargs.value));
if (njs_slow_path(ret != NJS_OK)) {
return ret;
}
- ret = njs_value_length(vm, iargs.value, &iargs.to);
+ ret = njs_value_length(vm, njs_value_arg(&iargs.value), &iargs.to);
if (njs_slow_path(ret != NJS_OK)) {
return ret;
}
}
iargs.function = njs_function(njs_argument(args, 1));
- iargs.argument = njs_arg(args, nargs, 2);
+ njs_value_assign(&iargs.argument, njs_arg(args, nargs, 2));
} else {
- iargs.argument = njs_arg(args, nargs, 1);
+ njs_value_assign(&iargs.argument, njs_arg(args, nargs, 1));
}
switch (njs_array_type(magic)) {
case NJS_ARRAY_REDUCE:
handler = njs_array_handler_reduce;
- njs_set_invalid(&accumulator);
-
- if (nargs > 2) {
- accumulator = *iargs.argument;
+ if (nargs <= 2) {
+ njs_value_invalid_set(njs_value_arg(&iargs.argument));
}
- iargs.argument = &accumulator;
break;
case NJS_ARRAY_FILTER:
break;
case NJS_ARRAY_REDUCE:
- if (!njs_is_valid(&accumulator)) {
+ if (!njs_value_is_valid(njs_value_arg(&iargs.argument))) {
njs_type_error(vm, "Reduce of empty object with no initial value");
return NJS_ERROR;
}
- njs_value_assign(retval, &accumulator);
+ njs_value_assign(retval, njs_value_arg(&iargs.argument));
break;
case NJS_ARRAY_FILTER:
{
int64_t from, length;
njs_int_t ret;
- njs_value_t accumulator;
njs_iterator_args_t iargs;
njs_iterator_handler_t handler;
- iargs.value = njs_argument(args, 0);
+ njs_value_assign(&iargs.value, njs_argument(args, 0));
- ret = njs_value_to_object(vm, iargs.value);
+ ret = njs_value_to_object(vm, njs_value_arg(&iargs.value));
if (njs_slow_path(ret != NJS_OK)) {
return ret;
}
- iargs.argument = njs_arg(args, nargs, 1);
+ njs_value_assign(&iargs.argument, njs_arg(args, nargs, 1));
- ret = njs_value_length(vm, iargs.value, &length);
+ ret = njs_value_length(vm, njs_value_arg(&iargs.value), &length);
if (njs_slow_path(ret != NJS_OK)) {
return ret;
}
return NJS_ERROR;
}
- njs_set_invalid(&accumulator);
iargs.function = njs_function(njs_argument(args, 1));
- iargs.argument = &accumulator;
+ njs_value_invalid_set(njs_value_arg(&iargs.argument));
if (nargs > 2) {
- accumulator = *njs_argument(args, 2);
+ njs_value_assign(&iargs.argument, njs_argument(args, 2));
} else if (length == 0) {
goto done;
case NJS_ARRAY_REDUCE_RIGHT:
default:
- if (!njs_is_valid(&accumulator)) {
+ if (!njs_value_is_valid(njs_value_arg(&iargs.argument))) {
njs_type_error(vm, "Reduce of empty object with no initial value");
return NJS_ERROR;
}
- njs_value_assign(retval, &accumulator);
+ njs_value_assign(retval, njs_value_arg(&iargs.argument));
break;
}
int64_t length, i, from, to;
njs_int_t ret;
njs_array_t *array, *keys;
- njs_value_t *value, *entry, prop, character, string_obj;
+ njs_value_t *value, *entry, prop, character;
const u_char *p, *end, *pos;
njs_string_prop_t string_prop;
njs_object_value_t *object;
- value = args->value;
+ value = njs_value_arg(&args->value);
from = args->from;
to = args->to;
return NJS_ERROR;
}
- njs_set_object_value(&string_obj, object);
-
- args->value = &string_obj;
+ njs_set_object_value(njs_value_arg(&args->value), object);
}
else {
value = njs_object_value(value);
int64_t i, from, to, length;
njs_int_t ret;
njs_array_t *array, *keys;
- njs_value_t *entry, *value, prop, character, string_obj;
+ njs_value_t *entry, *value, prop, character;
const u_char *p, *end, *pos;
njs_string_prop_t string_prop;
njs_object_value_t *object;
- value = args->value;
+ value = njs_value_arg(&args->value);
from = args->from;
to = args->to;
return NJS_ERROR;
}
- njs_set_object_value(&string_obj, object);
-
- args->value = &string_obj;
+ njs_set_object_value(njs_value_arg(&args->value), object);
}
else {
value = njs_object_value(value);
njs_value_t prop, *entry;
if (key != NULL) {
- ret = njs_value_property(vm, args->value, key, &prop);
+ ret = njs_value_property(vm, njs_value_arg(&args->value), key, &prop);
if (njs_slow_path(ret == NJS_ERROR)) {
return ret;
}
} else {
- ret = njs_value_property_i64(vm, args->value, i, &prop);
+ ret = njs_value_property_i64(vm, njs_value_arg(&args->value), i, &prop);
if (njs_slow_path(ret == NJS_ERROR)) {
return ret;
}
return NULL;
}
- args.value = iterator;
+ njs_value_assign(&args.value, iterator);
args.to = length;
ret = njs_object_iterate(vm, &args, njs_iterator_to_array_handler, retval);