} njs_array_sort_t;
-static njs_ret_t
-njs_array_prototype_to_string_continuation(njs_vm_t *vm, njs_value_t *args,
- nxt_uint_t nargs, njs_index_t retval);
+static njs_ret_t njs_array_prototype_to_string_continuation(njs_vm_t *vm,
+ njs_value_t *args, nxt_uint_t nargs, njs_index_t retval);
static njs_ret_t njs_array_prototype_join_continuation(njs_vm_t *vm,
njs_value_t *args, nxt_uint_t nargs, njs_index_t unused);
-static nxt_noinline njs_value_t *njs_array_copy(njs_value_t *dst,
- njs_value_t *src);
+static njs_value_t *njs_array_copy(njs_value_t *dst, njs_value_t *src);
static njs_ret_t njs_array_index_of(njs_vm_t *vm, njs_value_t *args,
nxt_uint_t nargs, nxt_bool_t first);
-static nxt_noinline njs_ret_t njs_array_prototype_for_each_cont(njs_vm_t *vm,
+static njs_ret_t njs_array_prototype_for_each_continuation(njs_vm_t *vm,
+ njs_value_t *args, nxt_uint_t nargs, njs_index_t unused);
+static njs_ret_t njs_array_prototype_some_continuation(njs_vm_t *vm,
njs_value_t *args, nxt_uint_t nargs, njs_index_t unused);
-static nxt_noinline njs_ret_t njs_array_prototype_some_cont(njs_vm_t *vm,
+static njs_ret_t njs_array_prototype_every_continuation(njs_vm_t *vm,
njs_value_t *args, nxt_uint_t nargs, njs_index_t unused);
-static nxt_noinline njs_ret_t njs_array_prototype_every_cont(njs_vm_t *vm,
+static njs_ret_t njs_array_prototype_filter_continuation(njs_vm_t *vm,
njs_value_t *args, nxt_uint_t nargs, njs_index_t unused);
-static njs_ret_t njs_array_prototype_filter_cont(njs_vm_t *vm,
+static njs_ret_t njs_array_prototype_map_continuation(njs_vm_t *vm,
njs_value_t *args, nxt_uint_t nargs, njs_index_t unused);
-static njs_ret_t njs_array_prototype_map_cont(njs_vm_t *vm, njs_value_t *args,
- nxt_uint_t nargs, njs_index_t unused);
-static njs_ret_t njs_array_prototype_reduce_cont(njs_vm_t *vm,
+static njs_ret_t njs_array_prototype_reduce_continuation(njs_vm_t *vm,
njs_value_t *args, nxt_uint_t nargs, njs_index_t unused);
-static njs_ret_t njs_array_prototype_reduce_right_cont(njs_vm_t *vm,
+static njs_ret_t njs_array_prototype_reduce_right_continuation(njs_vm_t *vm,
njs_value_t *args, nxt_uint_t nargs, njs_index_t unused);
static nxt_noinline njs_ret_t njs_array_iterator_args(njs_vm_t *vm,
njs_value_t *args, nxt_uint_t nargs);
static nxt_noinline njs_ret_t njs_array_iterator_apply(njs_vm_t *vm,
njs_array_iter_t *iter, njs_value_t *args, nxt_uint_t nargs);
static uint32_t njs_array_reduce_right_next(njs_array_t *array, int32_t n);
-static njs_ret_t njs_array_prototype_sort_cont(njs_vm_t *vm, njs_value_t *args,
- nxt_uint_t nargs, njs_index_t unused);
+static njs_ret_t njs_array_prototype_sort_continuation(njs_vm_t *vm,
+ njs_value_t *args, nxt_uint_t nargs, njs_index_t unused);
nxt_noinline njs_array_t *
}
-static nxt_noinline njs_value_t *
+static njs_value_t *
njs_array_copy(njs_value_t *dst, njs_value_t *src)
{
nxt_uint_t n;
}
iter = njs_continuation(vm->frame);
- iter->u.cont.function = njs_array_prototype_for_each_cont;
+ iter->u.cont.function = njs_array_prototype_for_each_continuation;
- return njs_array_prototype_for_each_cont(vm, args, nargs, unused);
+ return njs_array_prototype_for_each_continuation(vm, args, nargs, unused);
}
static njs_ret_t
-njs_array_prototype_for_each_cont(njs_vm_t *vm, njs_value_t *args,
+njs_array_prototype_for_each_continuation(njs_vm_t *vm, njs_value_t *args,
nxt_uint_t nargs, njs_index_t unused)
{
njs_array_iter_t *iter;
}
iter = njs_continuation(vm->frame);
- iter->u.cont.function = njs_array_prototype_some_cont;
+ iter->u.cont.function = njs_array_prototype_some_continuation;
iter->retval.data.truth = 0;
- return njs_array_prototype_some_cont(vm, args, nargs, unused);
+ return njs_array_prototype_some_continuation(vm, args, nargs, unused);
}
static njs_ret_t
-njs_array_prototype_some_cont(njs_vm_t *vm, njs_value_t *args,
+njs_array_prototype_some_continuation(njs_vm_t *vm, njs_value_t *args,
nxt_uint_t nargs, njs_index_t unused)
{
njs_array_iter_t *iter;
}
iter = njs_continuation(vm->frame);
- iter->u.cont.function = njs_array_prototype_every_cont;
+ iter->u.cont.function = njs_array_prototype_every_continuation;
iter->retval.data.truth = 1;
- return njs_array_prototype_every_cont(vm, args, nargs, unused);
+ return njs_array_prototype_every_continuation(vm, args, nargs, unused);
}
static njs_ret_t
-njs_array_prototype_every_cont(njs_vm_t *vm, njs_value_t *args,
+njs_array_prototype_every_continuation(njs_vm_t *vm, njs_value_t *args,
nxt_uint_t nargs, njs_index_t unused)
{
njs_array_iter_t *iter;
}
filter = njs_continuation(vm->frame);
- filter->iter.u.cont.function = njs_array_prototype_filter_cont;
+ filter->iter.u.cont.function = njs_array_prototype_filter_continuation;
filter->iter.retval.data.truth = 0;
filter->array = njs_array_alloc(vm, 0, NJS_ARRAY_SPARE);
return NXT_ERROR;
}
- return njs_array_prototype_filter_cont(vm, args, nargs, unused);
+ return njs_array_prototype_filter_continuation(vm, args, nargs, unused);
}
static njs_ret_t
-njs_array_prototype_filter_cont(njs_vm_t *vm, njs_value_t *args,
+njs_array_prototype_filter_continuation(njs_vm_t *vm, njs_value_t *args,
nxt_uint_t nargs, njs_index_t unused)
{
nxt_int_t ret;
}
map = njs_continuation(vm->frame);
- map->iter.u.cont.function = njs_array_prototype_map_cont;
+ map->iter.u.cont.function = njs_array_prototype_map_continuation;
njs_set_invalid(&map->iter.retval);
array = args[0].data.u.array;
size--;
}
- return njs_array_prototype_map_cont(vm, args, nargs, unused);
+ return njs_array_prototype_map_continuation(vm, args, nargs, unused);
}
static njs_ret_t
-njs_array_prototype_map_cont(njs_vm_t *vm, njs_value_t *args,
+njs_array_prototype_map_continuation(njs_vm_t *vm, njs_value_t *args,
nxt_uint_t nargs, njs_index_t unused)
{
njs_array_map_t *map;
}
iter = njs_continuation(vm->frame);
- iter->u.cont.function = njs_array_prototype_reduce_cont;
+ iter->u.cont.function = njs_array_prototype_reduce_continuation;
if (nargs > 2) {
iter->retval = args[2];
iter->next_index = njs_array_iterator_next(array, n + 1, array->length);
}
- return njs_array_prototype_reduce_cont(vm, args, nargs, unused);
+ return njs_array_prototype_reduce_continuation(vm, args, nargs, unused);
}
static njs_ret_t
-njs_array_prototype_reduce_cont(njs_vm_t *vm, njs_value_t *args,
+njs_array_prototype_reduce_continuation(njs_vm_t *vm, njs_value_t *args,
nxt_uint_t nargs, njs_index_t unused)
{
nxt_int_t n;
}
iter = njs_continuation(vm->frame);
- iter->u.cont.function = njs_array_prototype_reduce_right_cont;
+ iter->u.cont.function = njs_array_prototype_reduce_right_continuation;
array = args[0].data.u.array;
iter->next_index = njs_array_reduce_right_next(array, array->length);
iter->next_index = njs_array_reduce_right_next(array, n);
}
- return njs_array_prototype_reduce_right_cont(vm, args, nargs, unused);
-
+ return njs_array_prototype_reduce_right_continuation(vm, args, nargs,
+ unused);
type_error:
vm->exception = &njs_exception_type_error;
static njs_ret_t
-njs_array_prototype_reduce_right_cont(njs_vm_t *vm, njs_value_t *args,
+njs_array_prototype_reduce_right_continuation(njs_vm_t *vm, njs_value_t *args,
nxt_uint_t nargs, njs_index_t unused)
{
nxt_int_t n;
if (njs_is_array(&args[0]) && args[0].data.u.array->length > 1) {
sort = njs_continuation(vm->frame);
- sort->u.cont.function = njs_array_prototype_sort_cont;
+ sort->u.cont.function = njs_array_prototype_sort_continuation;
sort->current = 0;
sort->retval = njs_value_zero;
sort->function = (njs_function_t *) &njs_array_string_sort_function;
}
- return njs_array_prototype_sort_cont(vm, args, nargs, unused);
+ return njs_array_prototype_sort_continuation(vm, args, nargs, unused);
}
vm->retval = args[0];
static njs_ret_t
-njs_array_prototype_sort_cont(njs_vm_t *vm, njs_value_t *args,
+njs_array_prototype_sort_continuation(njs_vm_t *vm, njs_value_t *args,
nxt_uint_t nargs, njs_index_t unused)
{
nxt_int_t n;
njs_slice_prop_t *slice, njs_value_t *args, nxt_uint_t nargs);
static nxt_noinline void njs_string_slice_args(njs_slice_prop_t *slice,
njs_value_t *args, nxt_uint_t nargs);
-static njs_ret_t njs_string_prototype_from_char_code(njs_vm_t *vm,
+static njs_ret_t njs_string_from_char_code(njs_vm_t *vm,
njs_value_t *args, nxt_uint_t nargs, njs_index_t unused);
static nxt_noinline ssize_t njs_string_index_of(njs_vm_t *vm,
njs_value_t *src, njs_value_t *search_string, size_t index);
.value = njs_native_getter(njs_object_prototype_create),
},
+ /* String.fromCharCode(). */
{
.type = NJS_METHOD,
.name = njs_string("fromCharCode"),
- .value = njs_native_function(njs_string_prototype_from_char_code, 0, 0),
+ .value = njs_native_function(njs_string_from_char_code, 0, 0),
},
-
- /* ECMAScript 6, fromCodePoint(). */
+ /* String.fromCodePoint(), ECMAScript 6. */
{
.type = NJS_METHOD,
.name = njs_string("fromCodePoint"),
- .value = njs_native_function(njs_string_prototype_from_char_code, 0, 0),
+ .value = njs_native_function(njs_string_from_char_code, 0, 0),
},
};
static njs_ret_t
-njs_string_prototype_from_char_code(njs_vm_t *vm, njs_value_t *args,
+njs_string_from_char_code(njs_vm_t *vm, njs_value_t *args,
nxt_uint_t nargs, njs_index_t unused)
{
u_char *p;
}
+/*
+ * String.search([regexp])
+ */
+
static njs_ret_t
njs_string_prototype_search(njs_vm_t *vm, njs_value_t *args, nxt_uint_t nargs,
njs_index_t unused)
njs_string_prototype_match(njs_vm_t *vm, njs_value_t *args, nxt_uint_t nargs,
njs_index_t unused)
{
+ int *captures;
u_char *start;
int32_t size, length;
njs_ret_t ret;
njs_array_t *array;
njs_string_prop_t string;
njs_regexp_pattern_t *pattern;
- int *captures;
if (nargs == 1) {
goto empty;
NJS_STRING_OBJECT_ARG, NJS_INTEGER_ARG),
},
- /* ECMAScript 6, codePointAt(). */
+ /* String.codePointAt(), ECMAScript 6. */
{
.type = NJS_METHOD,
.name = njs_string("codePointAt"),
* several levels.
*/
-#define nxt_lvlhsh_is_bucket(p) \
+#define nxt_lvlhsh_is_bucket(p) \
((uintptr_t) (p) & 1)
-#define nxt_lvlhsh_count_inc(n) \
+#define nxt_lvlhsh_count_inc(n) \
n = (void *) ((uintptr_t) (n) + 2)
-#define nxt_lvlhsh_count_dec(n) \
+#define nxt_lvlhsh_count_dec(n) \
n = (void *) ((uintptr_t) (n) - 2)
-#define nxt_lvlhsh_level_size(proto, nlvl) \
+#define nxt_lvlhsh_level_size(proto, nlvl) \
((uintptr_t) 1 << proto->shift[nlvl])
-#define nxt_lvlhsh_level(lvl, mask) \
+#define nxt_lvlhsh_level(lvl, mask) \
(void **) ((uintptr_t) lvl & (~mask << 2))
-#define nxt_lvlhsh_level_entries(lvl, mask) \
+#define nxt_lvlhsh_level_entries(lvl, mask) \
((uintptr_t) lvl & (mask << 1))
-#define nxt_lvlhsh_store_bucket(slot, bkt) \
+#define nxt_lvlhsh_store_bucket(slot, bkt) \
slot = (void **) ((uintptr_t) bkt | 2 | 1)
-#define nxt_lvlhsh_bucket_size(proto) \
+#define nxt_lvlhsh_bucket_size(proto) \
proto->bucket_size
-#define nxt_lvlhsh_bucket(proto, bkt) \
+#define nxt_lvlhsh_bucket(proto, bkt) \
(uint32_t *) ((uintptr_t) bkt & ~(uintptr_t) proto->bucket_mask)
-#define nxt_lvlhsh_bucket_entries(proto, bkt) \
+#define nxt_lvlhsh_bucket_entries(proto, bkt) \
(((uintptr_t) bkt & (uintptr_t) proto->bucket_mask) >> 1)
-#define nxt_lvlhsh_bucket_end(proto, bkt) \
+#define nxt_lvlhsh_bucket_end(proto, bkt) \
&bkt[proto->bucket_end]
-#define nxt_lvlhsh_free_entry(e) \
+#define nxt_lvlhsh_free_entry(e) \
(!(nxt_lvlhsh_valid_entry(e)))
-#define nxt_lvlhsh_next_bucket(proto, bkt) \
+#define nxt_lvlhsh_next_bucket(proto, bkt) \
((void **) &bkt[proto->bucket_end])
#if (NXT_64BIT)
-#define nxt_lvlhsh_valid_entry(e) \
+#define nxt_lvlhsh_valid_entry(e) \
(((e)[0] | (e)[1]) != 0)
-#define nxt_lvlhsh_entry_value(e) \
+#define nxt_lvlhsh_entry_value(e) \
(void *) (((uintptr_t) (e)[1] << 32) + (e)[0])
-#define nxt_lvlhsh_set_entry_value(e, n) \
+#define nxt_lvlhsh_set_entry_value(e, n) \
(e)[0] = (uint32_t) (uintptr_t) n; \
(e)[1] = (uint32_t) ((uintptr_t) n >> 32)
-#define nxt_lvlhsh_entry_key(e) \
+#define nxt_lvlhsh_entry_key(e) \
(e)[2]
-#define nxt_lvlhsh_set_entry_key(e, n) \
+#define nxt_lvlhsh_set_entry_key(e, n) \
(e)[2] = n
#else
-#define nxt_lvlhsh_valid_entry(e) \
+#define nxt_lvlhsh_valid_entry(e) \
((e)[0] != 0)
-#define nxt_lvlhsh_entry_value(e) \
+#define nxt_lvlhsh_entry_value(e) \
(void *) (e)[0]
-#define nxt_lvlhsh_set_entry_value(e, n) \
+#define nxt_lvlhsh_set_entry_value(e, n) \
(e)[0] = (uint32_t) n
-#define nxt_lvlhsh_entry_key(e) \
+#define nxt_lvlhsh_entry_key(e) \
(e)[1]
-#define nxt_lvlhsh_set_entry_key(e, n) \
+#define nxt_lvlhsh_set_entry_key(e, n) \
(e)[1] = n
#endif