njs_array_prototype_slice(njs_vm_t *vm, njs_value_t *args, njs_uint_t nargs,
njs_index_t unused)
{
- int64_t start, end, length;
- uint32_t object_length;
- njs_int_t ret;
+ int64_t start, end, length;
+ uint32_t object_length;
+ njs_int_t ret;
+ njs_value_t *value;
- if (njs_slow_path(njs_is_null_or_undefined(njs_arg(args, nargs, 0)))) {
- njs_type_error(vm, "cannot convert undefined to object");
- return NJS_ERROR;
+ value = njs_arg(args, nargs, 0);
+
+ ret = njs_value_to_object(vm, value);
+ if (njs_slow_path(ret != NJS_OK)) {
+ return ret;
}
- ret = njs_object_length(vm, njs_arg(args, nargs, 0), &object_length);
+ ret = njs_object_length(vm, value, &object_length);
if (njs_slow_path(ret == NJS_ERROR)) {
return ret;
}
}
}
- return njs_array_prototype_slice_copy(vm, &args[0], start, length);
+ return njs_array_prototype_slice_copy(vm, value, start, length);
}
value = njs_arg(args, nargs, 0);
length = 0;
- if (njs_slow_path(njs_is_null_or_undefined(value))) {
- njs_type_error(vm, "Cannot convert undefined or null to object");
- return NJS_ERROR;
+ ret = njs_value_to_object(vm, value);
+ if (njs_slow_path(ret != NJS_OK)) {
+ return ret;
}
if (njs_is_array(&args[0])) {
value = njs_arg(args, nargs, 0);
- if (njs_slow_path(njs_is_null_or_undefined(value))) {
- njs_type_error(vm, "Cannot convert undefined or null to object");
- return NJS_ERROR;
+ ret = njs_value_to_object(vm, value);
+ if (njs_slow_path(ret != NJS_OK)) {
+ return ret;
}
njs_set_undefined(&vm->retval);
length = 0;
n = nargs - 1;
- if (njs_slow_path(njs_is_null_or_undefined(value))) {
- njs_type_error(vm, "Cannot convert undefined or null to object");
- return NJS_ERROR;
+ ret = njs_value_to_object(vm, value);
+ if (njs_slow_path(ret != NJS_OK)) {
+ return ret;
}
if (njs_is_array(value)) {
value = njs_arg(args, nargs, 0);
length = 0;
- if (njs_slow_path(njs_is_null_or_undefined(value))) {
- njs_type_error(vm, "Cannot convert undefined or null to object");
- return NJS_ERROR;
+ ret = njs_value_to_object(vm, value);
+ if (njs_slow_path(ret != NJS_OK)) {
+ return ret;
}
njs_set_undefined(&vm->retval);
njs_value_t *value;
njs_array_t *array, *deleted;
- if (njs_slow_path(njs_is_null_or_undefined(njs_arg(args, nargs, 0)))) {
- njs_type_error(vm, "cannot convert undefined to object");
- return NJS_ERROR;
+ value = njs_arg(args, nargs, 0);
+
+ ret = njs_value_to_object(vm, value);
+ if (njs_slow_path(ret != NJS_OK)) {
+ return ret;
}
array = NULL;
start = 0;
delete = 0;
- if (njs_is_array(&args[0])) {
- array = njs_array(&args[0]);
+ if (njs_is_array(value)) {
+ array = njs_array(value);
length = array->length;
if (nargs > 1) {
njs_array_prototype_reverse(njs_vm_t *vm, njs_value_t *args, njs_uint_t nargs,
njs_index_t unused)
{
+ njs_int_t ret;
njs_uint_t i, n, length;
- njs_value_t value;
+ njs_value_t value, *this;
njs_array_t *array;
- if (njs_slow_path(njs_is_null_or_undefined(njs_arg(args, nargs, 0)))) {
- njs_type_error(vm, "cannot convert undefined to object");
- return NJS_ERROR;
+ this = njs_arg(args, nargs, 0);
+
+ ret = njs_value_to_object(vm, this);
+ if (njs_slow_path(ret != NJS_OK)) {
+ return ret;
}
- if (njs_is_array(&args[0])) {
- array = njs_array(&args[0]);
+ if (njs_is_array(this)) {
+ array = njs_array(this);
length = array->length;
if (length > 1) {
} else {
/* STUB */
- vm->retval = args[0];
+ vm->retval = *this;
}
return NJS_OK;
njs_value_t *value, *values;
njs_string_prop_t separator, string;
- if (njs_slow_path(njs_is_null_or_undefined(njs_arg(args, nargs, 0)))) {
- njs_type_error(vm, "cannot convert undefined to object");
- return NJS_ERROR;
+ ret = njs_value_to_object(vm, &args[0]);
+ if (njs_slow_path(ret != NJS_OK)) {
+ return ret;
}
if (nargs > 1 && !njs_is_string(&args[1])) {
njs_index_t unused)
{
uint64_t length;
+ njs_int_t ret;
njs_uint_t i;
njs_value_t *value;
njs_array_t *array;
+ ret = njs_value_to_object(vm, &args[0]);
+ if (njs_slow_path(ret != NJS_OK)) {
+ return ret;
+ }
+
length = 0;
for (i = 0; i < nargs; i++) {
njs_int_t ret;
njs_array_iterator_args_t iargs;
- if (njs_slow_path(njs_is_null_or_undefined(njs_arg(args, nargs, 0)))) {
- njs_type_error(vm, "unexpected iterator arguments");
- return NJS_ERROR;
+ iargs.value = njs_arg(args, nargs, 0);
+
+ ret = njs_value_to_object(vm, iargs.value);
+ if (njs_slow_path(ret != NJS_OK)) {
+ return ret;
}
- iargs.value = njs_argument(args, 0);
iargs.argument = njs_arg(args, nargs, 1);
ret = njs_value_length(vm, iargs.value, &length);
njs_int_t ret;
njs_array_iterator_args_t iargs;
- if (njs_slow_path(njs_is_null_or_undefined(njs_arg(args, nargs, 0)))) {
- njs_type_error(vm, "unexpected iterator arguments");
- return NJS_ERROR;
+ iargs.value = njs_arg(args, nargs, 0);
+
+ ret = njs_value_to_object(vm, iargs.value);
+ if (njs_slow_path(ret != NJS_OK)) {
+ return ret;
}
- iargs.value = njs_argument(args, 0);
iargs.argument = njs_arg(args, nargs, 1);
ret = njs_value_length(vm, iargs.value, &length);
njs_int_t ret;
njs_array_iterator_args_t iargs;
- if (njs_slow_path(njs_is_null_or_undefined(njs_arg(args, nargs, 0)))) {
- njs_type_error(vm, "unexpected iterator arguments");
- return NJS_ERROR;
+ iargs.value = njs_arg(args, nargs, 0);
+
+ ret = njs_value_to_object(vm, iargs.value);
+ if (njs_slow_path(ret != NJS_OK)) {
+ return ret;
}
- iargs.value = njs_argument(args, 0);
iargs.argument = njs_arg(args, nargs, 1);
ret = njs_value_length(vm, iargs.value, &length);
njs_int_t i, ret;
njs_array_t *array;
njs_value_t name, *this, *value;
- njs_object_t *object;
this = njs_arg(args, nargs, 0);
- if (njs_is_primitive(this)) {
- if (njs_is_null_or_undefined(this)) {
- njs_type_error(vm, "\"this\" argument cannot be "
- "undefined or null value");
- return NJS_ERROR;
- }
-
- object = njs_object_value_alloc(vm, this, this->type);
- if (njs_slow_path(object == NULL)) {
- return NJS_ERROR;
- }
-
- njs_set_type_object(&vm->retval, object, object->type);
-
- return NJS_OK;
+ ret = njs_value_to_object(vm, this);
+ if (njs_slow_path(ret != NJS_OK)) {
+ return ret;
}
array = NULL;
{
njs_int_t ret;
- if (njs_is_null_or_undefined(njs_arg(args, nargs, 0))) {
- goto failed;
- }
+ iargs->value = njs_arg(args, nargs, 0);
- iargs->value = njs_argument(args, 0);
+ ret = njs_value_to_object(vm, iargs->value);
+ if (njs_slow_path(ret != NJS_OK)) {
+ return ret;
+ }
ret = njs_value_length(vm, iargs->value, &iargs->to);
if (njs_slow_path(ret != NJS_OK)) {
njs_array_t *array;
njs_array_iterator_args_t iargs;
- if (njs_is_null_or_undefined(njs_arg(args, nargs, 0))) {
- goto unexpected_args;
- }
+ iargs.value = njs_arg(args, nargs, 0);
- iargs.value = njs_argument(args, 0);
+ ret = njs_value_to_object(vm, iargs.value);
+ if (njs_slow_path(ret != NJS_OK)) {
+ return ret;
+ }
ret = njs_value_length(vm, iargs.value, &length);
if (njs_slow_path(ret != NJS_OK)) {
njs_value_t accumulator;
njs_array_iterator_args_t iargs;
- if (njs_is_null_or_undefined(njs_arg(args, nargs, 0))) {
- goto unexpected_args;
- }
+ iargs.value = njs_arg(args, nargs, 0);
- iargs.value = njs_argument(args, 0);
+ ret = njs_value_to_object(vm, iargs.value);
+ if (njs_slow_path(ret != NJS_OK)) {
+ return ret;
+ }
ret = njs_value_length(vm, iargs.value, &iargs.from);
if (njs_slow_path(ret != NJS_OK)) {