From: hongzhidao Date: Mon, 7 Jan 2019 22:14:36 +0000 (+0800) Subject: Refactored out njs_function_apply(). X-Git-Tag: 0.2.8~80 X-Git-Url: http://www.kaiwu.me/postgresql/commit/?a=commitdiff_plain;h=c66cca8714017050371e79648980daa9059686a9;p=njs.git Refactored out njs_function_apply(). As a variant of njs_function_activate(). --- diff --git a/njs/njs_function.c b/njs/njs_function.c index dd100014..27b6f238 100644 --- a/njs/njs_function.c +++ b/njs/njs_function.c @@ -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; diff --git a/njs/njs_function.h b/njs/njs_function.h index fee32ad1..ef5bfc15 100644 --- a/njs/njs_function.h +++ b/njs/njs_function.h @@ -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) {