]> git.kaiwu.me - njs.git/commitdiff
Refactored out njs_function_apply().
authorhongzhidao <hongzhidao@gmail.com>
Mon, 7 Jan 2019 22:14:36 +0000 (06:14 +0800)
committerhongzhidao <hongzhidao@gmail.com>
Mon, 7 Jan 2019 22:14:36 +0000 (06:14 +0800)
As a variant of njs_function_activate().

njs/njs_function.c
njs/njs_function.h

index dd100014dc352acb2dd60c9248ee200d926df2c8..27b6f23896af1de1dbf455d35eb4574aec904f2c 100644 (file)
@@ -392,42 +392,6 @@ njs_function_frame_alloc(njs_vm_t *vm, size_t size)
 }
 
 
-nxt_noinline njs_ret_t
-njs_function_apply(njs_vm_t *vm, njs_function_t *function, njs_value_t *args,
-    nxt_uint_t nargs, njs_index_t retval)
-{
-    njs_ret_t           ret;
-    njs_continuation_t  *cont;
-
-    if (function->native) {
-        ret = njs_function_native_frame(vm, function, &args[0], &args[1],
-                                        nargs - 1, NJS_CONTINUATION_SIZE, 0);
-        if (ret != NJS_OK) {
-            return ret;
-        }
-
-        cont = njs_vm_continuation(vm);
-
-        cont->function = function->u.native;
-        cont->args_types = function->args_types;
-        cont->retval = retval;
-
-        cont->return_address = vm->current;
-        vm->current = (u_char *) njs_continuation_nexus;
-
-        return NJS_APPLIED;
-    }
-
-    ret = njs_function_frame(vm, function, &args[0], &args[1], nargs - 1, 0);
-
-    if (nxt_fast_path(ret == NXT_OK)) {
-        return njs_function_call(vm, retval, 0);
-    }
-
-    return ret;
-}
-
-
 nxt_noinline njs_ret_t
 njs_function_call(njs_vm_t *vm, njs_index_t retval, size_t advance)
 {
@@ -978,9 +942,9 @@ njs_function_prototype_apply(njs_vm_t *vm, njs_value_t *args, nxt_uint_t nargs,
 
 
 njs_ret_t
-njs_function_activate(njs_vm_t *vm, njs_function_t *function, njs_value_t *this,
-    const njs_value_t *args, nxt_uint_t nargs, njs_index_t retval,
-    size_t advance)
+njs_function_activate(njs_vm_t *vm, njs_function_t *function,
+    const njs_value_t *this, const njs_value_t *args, nxt_uint_t nargs,
+    njs_index_t retval, size_t advance)
 {
     njs_ret_t           ret;
     njs_continuation_t  *cont;
index fee32ad169bce7a11a76f8e10246fba34456b4c5..ef5bfc15c53ccfdbcbe4c7b296884aeb46f3f395 100644 (file)
@@ -162,8 +162,6 @@ njs_value_t *njs_function_property_prototype_create(njs_vm_t *vm,
     njs_value_t *value);
 njs_ret_t njs_function_constructor(njs_vm_t *vm, njs_value_t *args,
     nxt_uint_t nargs, njs_index_t unused);
-njs_ret_t njs_function_apply(njs_vm_t *vm, njs_function_t *function,
-    njs_value_t *args, nxt_uint_t nargs, njs_index_t retval);
 njs_ret_t njs_function_native_frame(njs_vm_t *vm, njs_function_t *function,
     const njs_value_t *this, const njs_value_t *args, nxt_uint_t nargs,
     size_t reserve, nxt_bool_t ctor);
@@ -171,7 +169,7 @@ njs_ret_t njs_function_frame(njs_vm_t *vm, njs_function_t *function,
     const njs_value_t *this, const njs_value_t *args, nxt_uint_t nargs,
     nxt_bool_t ctor);
 njs_ret_t njs_function_activate(njs_vm_t *vm, njs_function_t *function,
-    njs_value_t *this, const njs_value_t *args, nxt_uint_t nargs,
+    const njs_value_t *this, const njs_value_t *args, nxt_uint_t nargs,
     njs_index_t retval, size_t advance);
 njs_ret_t njs_function_call(njs_vm_t *vm, njs_index_t retval, size_t advance);
 njs_ret_t njs_function_native_call(njs_vm_t *vm, njs_function_native_t native,
@@ -180,6 +178,15 @@ njs_ret_t njs_function_native_call(njs_vm_t *vm, njs_function_native_t native,
 void njs_function_frame_free(njs_vm_t *vm, njs_native_frame_t *frame);
 
 
+nxt_inline njs_ret_t
+njs_function_apply(njs_vm_t *vm, njs_function_t *function,
+    const njs_value_t *args, nxt_uint_t nargs, njs_index_t retval)
+{
+    return njs_function_activate(vm, function, &args[0], &args[1], nargs - 1,
+                                 retval, 0);
+}
+
+
 nxt_inline njs_native_frame_t *
 njs_function_previous_frame(njs_native_frame_t *frame)
 {