]> git.kaiwu.me - njs.git/commitdiff
The njs_vm_continuation() macro.
authorIgor Sysoev <igor@sysoev.ru>
Tue, 21 Mar 2017 13:35:22 +0000 (16:35 +0300)
committerIgor Sysoev <igor@sysoev.ru>
Tue, 21 Mar 2017 13:35:22 +0000 (16:35 +0300)
njs/njs_array.c
njs/njs_date.c
njs/njs_function.c
njs/njs_function.h
njs/njs_string.c
njs/njs_vm.c

index dfd9ac44c4be41ca4bcea040af63b2fdba657fdb..80c1f17f200a469360b7daf672a20864c34f58a9 100644 (file)
@@ -701,7 +701,7 @@ njs_array_prototype_to_string(njs_vm_t *vm, njs_value_t *args, nxt_uint_t nargs,
     njs_continuation_t  *cont;
     nxt_lvlhsh_query_t  lhq;
 
-    cont = (njs_continuation_t *) njs_continuation(vm->frame);
+    cont = njs_vm_continuation(vm);
     cont->function = njs_array_prototype_to_string_continuation;
 
     if (njs_is_object(&args[0])) {
@@ -751,7 +751,7 @@ njs_array_prototype_join(njs_vm_t *vm, njs_value_t *args, nxt_uint_t nargs,
         goto empty;
     }
 
-    join = (njs_array_join_t *) njs_continuation(vm->frame);
+    join = njs_vm_continuation(vm);
     join->values = NULL;
     join->max = 0;
     max = 0;
@@ -774,7 +774,7 @@ njs_array_prototype_join(njs_vm_t *vm, njs_value_t *args, nxt_uint_t nargs,
             return NXT_ERROR;
         }
 
-        join = (njs_array_join_t *) njs_continuation(vm->frame);
+        join = njs_vm_continuation(vm);
         join->cont.function = njs_array_prototype_join_continuation;
         join->values = values;
         join->max = max;
@@ -820,7 +820,7 @@ njs_array_prototype_join_continuation(njs_vm_t *vm, njs_value_t *args,
     njs_array_join_t   *join;
     njs_string_prop_t  separator, string;
 
-    join = (njs_array_join_t *) njs_continuation(vm->frame);
+    join = njs_vm_continuation(vm);
     values = join->values;
     max = join->max;
 
@@ -1177,7 +1177,7 @@ njs_array_prototype_for_each(njs_vm_t *vm, njs_value_t *args, nxt_uint_t nargs,
         return ret;
     }
 
-    iter = njs_continuation(vm->frame);
+    iter = njs_vm_continuation(vm);
     iter->u.cont.function = njs_array_prototype_for_each_continuation;
 
     return njs_array_prototype_for_each_continuation(vm, args, nargs, unused);
@@ -1190,7 +1190,7 @@ njs_array_prototype_for_each_continuation(njs_vm_t *vm, njs_value_t *args,
 {
     njs_array_iter_t  *iter;
 
-    iter = njs_continuation(vm->frame);
+    iter = njs_vm_continuation(vm);
 
     if (iter->next_index >= args[0].data.u.array->length) {
         vm->retval = njs_value_void;
@@ -1213,7 +1213,7 @@ njs_array_prototype_some(njs_vm_t *vm, njs_value_t *args, nxt_uint_t nargs,
         return ret;
     }
 
-    iter = njs_continuation(vm->frame);
+    iter = njs_vm_continuation(vm);
     iter->u.cont.function = njs_array_prototype_some_continuation;
     iter->retval.data.truth = 0;
 
@@ -1228,7 +1228,7 @@ njs_array_prototype_some_continuation(njs_vm_t *vm, njs_value_t *args,
     njs_array_iter_t   *iter;
     const njs_value_t  *retval;
 
-    iter = njs_continuation(vm->frame);
+    iter = njs_vm_continuation(vm);
 
     if (njs_is_true(&iter->retval)) {
         retval = &njs_value_true;
@@ -1258,7 +1258,7 @@ njs_array_prototype_every(njs_vm_t *vm, njs_value_t *args, nxt_uint_t nargs,
         return ret;
     }
 
-    iter = njs_continuation(vm->frame);
+    iter = njs_vm_continuation(vm);
     iter->u.cont.function = njs_array_prototype_every_continuation;
     iter->retval.data.truth = 1;
 
@@ -1273,7 +1273,7 @@ njs_array_prototype_every_continuation(njs_vm_t *vm, njs_value_t *args,
     njs_array_iter_t   *iter;
     const njs_value_t  *retval;
 
-    iter = njs_continuation(vm->frame);
+    iter = njs_vm_continuation(vm);
 
     if (!njs_is_true(&iter->retval)) {
         retval = &njs_value_false;
@@ -1366,7 +1366,7 @@ njs_array_prototype_filter(njs_vm_t *vm, njs_value_t *args, nxt_uint_t nargs,
         return ret;
     }
 
-    filter = njs_continuation(vm->frame);
+    filter = njs_vm_continuation(vm);
     filter->iter.u.cont.function = njs_array_prototype_filter_continuation;
     filter->iter.retval.data.truth = 0;
 
@@ -1387,7 +1387,7 @@ njs_array_prototype_filter_continuation(njs_vm_t *vm, njs_value_t *args,
     njs_array_t         *array;
     njs_array_filter_t  *filter;
 
-    filter = njs_continuation(vm->frame);
+    filter = njs_vm_continuation(vm);
 
     if (njs_is_true(&filter->iter.retval)) {
         ret = njs_array_add(vm, filter->array, &filter->value);
@@ -1428,7 +1428,7 @@ njs_array_prototype_map(njs_vm_t *vm, njs_value_t *args, nxt_uint_t nargs,
         return ret;
     }
 
-    map = njs_continuation(vm->frame);
+    map = njs_vm_continuation(vm);
     map->iter.u.cont.function = njs_array_prototype_map_continuation;
     njs_set_invalid(&map->iter.retval);
 
@@ -1458,7 +1458,7 @@ njs_array_prototype_map_continuation(njs_vm_t *vm, njs_value_t *args,
 {
     njs_array_map_t  *map;
 
-    map = njs_continuation(vm->frame);
+    map = njs_vm_continuation(vm);
 
     if (njs_is_valid(&map->iter.retval)) {
         map->array->start[map->index] = map->iter.retval;
@@ -1492,7 +1492,7 @@ njs_array_prototype_reduce(njs_vm_t *vm, njs_value_t *args, nxt_uint_t nargs,
         return ret;
     }
 
-    iter = njs_continuation(vm->frame);
+    iter = njs_vm_continuation(vm);
     iter->u.cont.function = njs_array_prototype_reduce_continuation;
 
     if (nargs > 2) {
@@ -1525,7 +1525,7 @@ njs_array_prototype_reduce_continuation(njs_vm_t *vm, njs_value_t *args,
     njs_value_t       arguments[5];
     njs_array_iter_t  *iter;
 
-    iter = njs_continuation(vm->frame);
+    iter = njs_vm_continuation(vm);
 
     if (iter->next_index >= args[0].data.u.array->length) {
         vm->retval = iter->retval;
@@ -1562,7 +1562,7 @@ njs_array_iterator_args(njs_vm_t *vm, njs_value_t *args, nxt_uint_t nargs)
     if (nargs > 1 && njs_is_array(&args[0]) && njs_is_function(&args[1])) {
 
         array = args[0].data.u.array;
-        iter = njs_continuation(vm->frame);
+        iter = njs_vm_continuation(vm);
         iter->length = array->length;
         iter->next_index = njs_array_iterator_next(array, 0, array->length);
 
@@ -1640,7 +1640,7 @@ njs_array_prototype_reduce_right(njs_vm_t *vm, njs_value_t *args,
         goto type_error;
     }
 
-    iter = njs_continuation(vm->frame);
+    iter = njs_vm_continuation(vm);
     iter->u.cont.function = njs_array_prototype_reduce_right_continuation;
 
     array = args[0].data.u.array;
@@ -1680,7 +1680,7 @@ njs_array_prototype_reduce_right_continuation(njs_vm_t *vm, njs_value_t *args,
     njs_value_t       arguments[5];
     njs_array_iter_t  *iter;
 
-    iter = njs_continuation(vm->frame);
+    iter = njs_vm_continuation(vm);
 
     if ((int32_t) iter->next_index < 0) {
         vm->retval = iter->retval;
@@ -1764,7 +1764,7 @@ njs_array_prototype_sort(njs_vm_t *vm, njs_value_t *args,
 
     if (njs_is_array(&args[0]) && args[0].data.u.array->length > 1) {
 
-        sort = njs_continuation(vm->frame);
+        sort = njs_vm_continuation(vm);
         sort->u.cont.function = njs_array_prototype_sort_continuation;
         sort->current = 0;
         sort->retval = njs_value_zero;
@@ -1797,7 +1797,7 @@ njs_array_prototype_sort_continuation(njs_vm_t *vm, njs_value_t *args,
     array = args[0].data.u.array;
     start = array->start;
 
-    sort = njs_continuation(vm->frame);
+    sort = njs_vm_continuation(vm);
 
     if (njs_is_number(&sort->retval)) {
 
index 77bfce9c745ca0b8abcf318fe48c4c7b624da1ad..48286bc88f249abc4da3dd5933d4995fad484271 100644 (file)
@@ -1866,7 +1866,7 @@ njs_date_prototype_to_json(njs_vm_t *vm, njs_value_t *args, nxt_uint_t nargs,
     njs_continuation_t  *cont;
     nxt_lvlhsh_query_t  lhq;
 
-    cont = (njs_continuation_t *) njs_continuation(vm->frame);
+    cont = njs_vm_continuation(vm);
     cont->function = njs_date_prototype_to_json_continuation;
 
     if (njs_is_object(&args[0])) {
index bbba2cb1a14c9a5147e0f35fe55b28765297d82c..a44bd0aa4a010e3fec1ec093a2eda46a7d85bf06 100644 (file)
@@ -106,7 +106,7 @@ njs_function_native_frame(njs_vm_t *vm, njs_function_t *function,
     frame->nargs = function->args_offset + nargs;
     frame->ctor = ctor;
 
-    value = (njs_value_t *) ((u_char *) njs_continuation(frame) + reserve);
+    value = (njs_value_t *) (njs_continuation(frame) + reserve);
 
     bound = function->bound;
 
@@ -265,7 +265,7 @@ njs_function_apply(njs_vm_t *vm, njs_function_t *function, njs_value_t *args,
             return ret;
         }
 
-        cont = njs_continuation(vm->frame);
+        cont = njs_vm_continuation(vm);
 
         cont->function = function->u.native;
         cont->args_types = function->args_types;
@@ -500,7 +500,7 @@ njs_function_activate(njs_vm_t *vm, njs_function_t *function, njs_value_t *this,
         /* Skip the "call/apply" method frame. */
         vm->frame->previous->skip = 1;
 
-        cont = njs_continuation(vm->frame);
+        cont = njs_vm_continuation(vm);
 
         cont->function = function->u.native;
         cont->args_types = function->args_types;
index 7320be3ed5a6733a89630a8b1b34e9f90c4125b2..ca8ba9434ad1f53241d25d444832ab35b2531d46 100644 (file)
@@ -56,8 +56,11 @@ typedef struct {
 } njs_continuation_t;
 
 
+#define njs_vm_continuation(vm)                                               \
+    (void *) njs_continuation((vm)->frame)
+
 #define njs_continuation(frame)                                               \
-    (void *) ((u_char *) frame + NJS_NATIVE_FRAME_SIZE)
+    ((u_char *) frame + NJS_NATIVE_FRAME_SIZE)
 
 #define njs_continuation_size(size)                                           \
     nxt_align_size(sizeof(size), sizeof(njs_value_t))
index 95a48cce77bc759c3c0005bb1977255bdf10a05b..47bd87bdc23fdc641baaec1cab54b2c360351c0d 100644 (file)
@@ -2274,7 +2274,7 @@ njs_string_prototype_replace(njs_vm_t *vm, njs_value_t *args, nxt_uint_t nargs,
         goto original;
     }
 
-    r = njs_continuation(vm->frame);
+    r = njs_vm_continuation(vm);
 
     r->utf8 = NJS_STRING_BYTE;
     r->type = NJS_REGEXP_BYTE;
@@ -2521,7 +2521,7 @@ njs_string_replace_regexp_continuation(njs_vm_t *vm, njs_value_t *args,
 {
     njs_string_replace_t  *r;
 
-    r = njs_continuation(vm->frame);
+    r = njs_vm_continuation(vm);
 
     if (njs_is_string(&r->retval)) {
         njs_string_replacement_copy(&r->part[1], &r->retval);
@@ -2640,7 +2640,7 @@ njs_string_replace_search_continuation(njs_vm_t *vm, njs_value_t *args,
 {
     njs_string_replace_t  *r;
 
-    r = njs_continuation(vm->frame);
+    r = njs_vm_continuation(vm);
 
     if (njs_is_string(&r->retval)) {
         njs_string_replacement_copy(&r->part[1], &r->retval);
index a07daa5446ee3ade581c158c3f36968db68527e1..1232f836847477611c90fcee894a650b99025f75 100644 (file)
@@ -2343,7 +2343,7 @@ njs_vmcode_function_call(njs_vm_t *vm, njs_value_t *invld, njs_value_t *retval)
     }
 
     if (function->continuation_size != 0) {
-        cont = njs_continuation(vm->frame);
+        cont = njs_vm_continuation(vm);
 
         cont->function = function->u.native;
         cont->args_types = function->args_types;
@@ -2594,8 +2594,8 @@ njs_vmcode_continuation(njs_vm_t *vm, njs_value_t *invld1, njs_value_t *invld2)
     njs_native_frame_t  *frame;
     njs_continuation_t  *cont;
 
+    cont = njs_vm_continuation(vm);
     frame = vm->frame;
-    cont = njs_continuation(frame);
     args = frame->arguments - frame->function->args_offset;
 
     if (cont->args_types != NULL) {