Lines Matching refs:ufunc
343 ufunc_T *ufunc; in find_script_var() local
377 ufunc = cctx->ctx_ufunc; in find_script_var()
385 for (idx = 0; idx < ufunc->uf_block_depth; ++idx) in find_script_var()
386 if (ufunc->uf_block_ids[idx] == sav->sav_block_id) in find_script_var()
494 ufunc_T *ufunc = NULL; in check_defined() local
514 || (ufunc = find_func_even_dead(p, FALSE, cctx)) != NULL) in check_defined()
517 if (ufunc == NULL || ((ufunc->uf_flags & FC_DEAD) == 0 in check_defined()
518 && (!func_is_global(ufunc) in check_defined()
1670 generate_FUNCREF(cctx_T *cctx, ufunc_T *ufunc) in generate_FUNCREF() argument
1678 isn->isn_arg.funcref.fr_func = ufunc->uf_dfunc_idx; in generate_FUNCREF()
1683 if (ufunc->uf_flags & FC_CLOSURE) in generate_FUNCREF()
1689 ufunc->uf_func_type == NULL ? &t_func_any : ufunc->uf_func_type; in generate_FUNCREF()
1940 func_needs_compiling(ufunc_T *ufunc, compiletype_T compile_type) in func_needs_compiling() argument
1942 switch (ufunc->uf_def_status) in func_needs_compiling()
1950 + ufunc->uf_dfunc_idx; in func_needs_compiling()
1978 generate_CALL(cctx_T *cctx, ufunc_T *ufunc, int pushed_argcount) in generate_CALL() argument
1982 int regular_args = ufunc->uf_args.ga_len; in generate_CALL()
1986 if (argcount > regular_args && !has_varargs(ufunc)) in generate_CALL()
1988 semsg(_(e_toomanyarg), printable_func_name(ufunc)); in generate_CALL()
1991 if (argcount < regular_args - ufunc->uf_def_args.ga_len) in generate_CALL()
1993 semsg(_(e_toofewarg), printable_func_name(ufunc)); in generate_CALL()
1997 if (ufunc->uf_def_status != UF_NOT_COMPILED in generate_CALL()
1998 && ufunc->uf_def_status != UF_COMPILE_ERROR) in generate_CALL()
2009 && i >= regular_args - ufunc->uf_def_args.ga_len) in generate_CALL()
2016 if (ufunc->uf_arg_types == NULL) in generate_CALL()
2018 expected = ufunc->uf_arg_types[i]; in generate_CALL()
2020 else if (ufunc->uf_va_type == NULL in generate_CALL()
2021 || ufunc->uf_va_type == &t_list_any) in generate_CALL()
2025 expected = ufunc->uf_va_type->tt_member; in generate_CALL()
2033 if (func_needs_compiling(ufunc, COMPILE_TYPE(ufunc)) in generate_CALL()
2034 && compile_def_function(ufunc, ufunc->uf_ret_type == NULL, in generate_CALL()
2035 COMPILE_TYPE(ufunc), NULL) == FAIL) in generate_CALL()
2038 if (ufunc->uf_def_status == UF_COMPILE_ERROR) in generate_CALL()
2041 ufunc->uf_name); in generate_CALL()
2046 ufunc->uf_def_status != UF_NOT_COMPILED ? ISN_DCALL in generate_CALL()
2051 isn->isn_arg.dfunc.cdf_idx = ufunc->uf_dfunc_idx; in generate_CALL()
2058 isn->isn_arg.ufunc.cuf_name = vim_strsave(ufunc->uf_name); in generate_CALL()
2059 isn->isn_arg.ufunc.cuf_argcount = argcount; in generate_CALL()
2066 ((type_T **)stack->ga_data)[stack->ga_len] = ufunc->uf_ret_type; in generate_CALL()
2084 isn->isn_arg.ufunc.cuf_name = vim_strsave(name); in generate_UCALL()
2085 isn->isn_arg.ufunc.cuf_argcount = argcount; in generate_UCALL()
3041 ufunc_T *ufunc; in compile_load_scriptvar() local
3064 idx = find_exported(import->imp_sid, exp_name, &ufunc, &type, in compile_load_scriptvar()
3072 if (*p == '(' && ufunc != NULL) in compile_load_scriptvar()
3074 generate_PUSHFUNC(cctx, ufunc->uf_name, import->imp_type); in compile_load_scriptvar()
3103 ufunc_T *ufunc = find_func(name, FALSE, cctx); in generate_funcref() local
3105 if (ufunc == NULL) in generate_funcref()
3109 if (func_needs_compiling(ufunc, COMPILE_TYPE(ufunc)) in generate_funcref()
3110 && compile_def_function(ufunc, TRUE, COMPILE_TYPE(ufunc), NULL) in generate_funcref()
3113 return generate_PUSHFUNC(cctx, ufunc->uf_name, ufunc->uf_func_type); in generate_funcref()
3425 ufunc_T *ufunc = NULL; in compile_call() local
3544 ufunc = find_func(name, FALSE, cctx); in compile_call()
3545 if (ufunc != NULL && !func_is_global(ufunc)) in compile_call()
3547 res = generate_CALL(cctx, ufunc, argcount); in compile_call()
3567 if (ufunc != NULL) in compile_call()
3569 res = generate_CALL(cctx, ufunc, argcount); in compile_call()
3702 ufunc_T *ufunc; in compile_lambda() local
3718 ufunc = rettv.vval.v_partial->pt_func; in compile_lambda()
3719 ++ufunc->uf_refcount; in compile_lambda()
3725 if (ufunc->uf_ret_type->tt_type == VAR_VOID) in compile_lambda()
3726 ufunc->uf_ret_type = &t_unknown; in compile_lambda()
3727 compile_def_function(ufunc, FALSE, cctx->ctx_compile_type, cctx); in compile_lambda()
3733 compile_def_function(ufunc, FALSE, CT_NONE, cctx); in compile_lambda()
3750 if (ufunc->uf_def_status == UF_COMPILED) in compile_lambda()
3753 set_function_type(ufunc); in compile_lambda()
3758 return generate_FUNCREF(cctx, ufunc); in compile_lambda()
3761 func_ptr_unref(ufunc); in compile_lambda()
3776 ufunc_T *ufunc; in get_lambda_tv_and_compile() local
3787 ufunc = rettv->vval.v_partial->pt_func; in get_lambda_tv_and_compile()
3792 if (ufunc->uf_ret_type == NULL || ufunc->uf_ret_type->tt_type == VAR_VOID) in get_lambda_tv_and_compile()
3793 ufunc->uf_ret_type = &t_unknown; in get_lambda_tv_and_compile()
3794 compile_def_function(ufunc, FALSE, CT_NONE, NULL); in get_lambda_tv_and_compile()
3796 if (ufunc->uf_def_status == UF_COMPILED) in get_lambda_tv_and_compile()
3799 set_function_type(ufunc); in get_lambda_tv_and_compile()
5794 ufunc_T *ufunc; in compile_nested_function() local
5841 ufunc = define_function(eap, lambda_name); in compile_nested_function()
5843 if (ufunc == NULL) in compile_nested_function()
5854 ufunc->uf_block_ids = ALLOC_MULT(int, block_depth); in compile_nested_function()
5855 if (ufunc->uf_block_ids != NULL) in compile_nested_function()
5857 mch_memmove(ufunc->uf_block_ids, cctx->ctx_ufunc->uf_block_ids, in compile_nested_function()
5859 ufunc->uf_block_depth = block_depth; in compile_nested_function()
5863 compile_type = COMPILE_TYPE(ufunc); in compile_nested_function()
5870 if (func_needs_compiling(ufunc, compile_type) in compile_nested_function()
5871 && compile_def_function(ufunc, TRUE, compile_type, cctx) == FAIL) in compile_nested_function()
5873 func_ptr_unref(ufunc); in compile_nested_function()
5880 if (compile_type == CT_PROFILE && func_needs_compiling(ufunc, CT_NONE)) in compile_nested_function()
5881 compile_def_function(ufunc, FALSE, CT_NONE, cctx); in compile_nested_function()
5901 TRUE, ufunc->uf_func_type); in compile_nested_function()
5905 if (generate_FUNCREF(cctx, ufunc) == FAIL) in compile_nested_function()
9503 add_def_function(ufunc_T *ufunc) in add_def_function() argument
9522 ufunc->uf_dfunc_idx = dfunc->df_idx; in add_def_function()
9523 dfunc->df_ufunc = ufunc; in add_def_function()
9524 dfunc->df_name = vim_strsave(ufunc->uf_name); in add_def_function()
9546 ufunc_T *ufunc, in compile_def_function() argument
9572 if (ufunc->uf_dfunc_idx > 0) in compile_def_function()
9575 + ufunc->uf_dfunc_idx; in compile_def_function()
9594 if (add_def_function(ufunc) == FAIL) in compile_def_function()
9599 ufunc->uf_def_status = UF_COMPILING; in compile_def_function()
9604 cctx.ctx_ufunc = ufunc; in compile_def_function()
9610 cctx.ctx_type_list = &ufunc->uf_type_list; in compile_def_function()
9617 current_sctx = ufunc->uf_script_ctx; in compile_def_function()
9624 do_estack_push = !estack_top_is_ufunc(ufunc, 1); in compile_def_function()
9626 estack_push_ufunc(ufunc, 1); in compile_def_function()
9629 if (ufunc->uf_def_args.ga_len > 0) in compile_def_function()
9631 int count = ufunc->uf_def_args.ga_len; in compile_def_function()
9632 int first_def_arg = ufunc->uf_args.ga_len - count; in compile_def_function()
9635 int off = STACK_FRAME_SIZE + (ufunc->uf_va_name != NULL ? 1 : 0); in compile_def_function()
9655 ufunc->uf_args_visible = arg_idx; in compile_def_function()
9657 arg = ((char_u **)(ufunc->uf_def_args.ga_data))[i]; in compile_def_function()
9668 if (ufunc->uf_arg_types[arg_idx] == &t_unknown) in compile_def_function()
9671 ufunc->uf_arg_types[arg_idx] = val_type; in compile_def_function()
9673 else if (check_type(ufunc->uf_arg_types[arg_idx], val_type, in compile_def_function()
9686 set_function_type(ufunc); in compile_def_function()
9688 ufunc->uf_args_visible = ufunc->uf_args.ga_len; in compile_def_function()
9720 if (cctx.ctx_lnum >= ufunc->uf_lines.ga_len) in compile_def_function()
10200 if (ufunc->uf_ret_type->tt_type == VAR_UNKNOWN) in compile_def_function()
10201 ufunc->uf_ret_type = &t_void; in compile_def_function()
10202 else if (ufunc->uf_ret_type->tt_type != VAR_VOID) in compile_def_function()
10217 + ufunc->uf_dfunc_idx; in compile_def_function()
10241 ufunc->uf_flags |= FC_CLOSURE; in compile_def_function()
10242 ufunc->uf_def_status = UF_COMPILED; in compile_def_function()
10248 if (ufunc->uf_def_status == UF_COMPILING) in compile_def_function()
10251 + ufunc->uf_dfunc_idx; in compile_def_function()
10261 && ufunc->uf_dfunc_idx == def_functions.ga_len - 1) in compile_def_function()
10264 ufunc->uf_dfunc_idx = 0; in compile_def_function()
10266 ufunc->uf_def_status = UF_COMPILE_ERROR; in compile_def_function()
10302 set_function_type(ufunc_T *ufunc) in set_function_type() argument
10304 int varargs = ufunc->uf_va_name != NULL; in set_function_type()
10305 int argcount = ufunc->uf_args.ga_len; in set_function_type()
10313 if (ufunc->uf_type_list.ga_itemsize == 0) in set_function_type()
10314 ga_init2(&ufunc->uf_type_list, sizeof(type_T *), 10); in set_function_type()
10315 ufunc->uf_func_type = alloc_func_type(ufunc->uf_ret_type, in set_function_type()
10316 argcount, &ufunc->uf_type_list); in set_function_type()
10318 if (func_type_add_arg_types(ufunc->uf_func_type, in set_function_type()
10320 &ufunc->uf_type_list) == FAIL) in set_function_type()
10322 ufunc->uf_func_type->tt_argcount = argcount + varargs; in set_function_type()
10323 ufunc->uf_func_type->tt_min_argcount = in set_function_type()
10324 argcount - ufunc->uf_def_args.ga_len; in set_function_type()
10325 if (ufunc->uf_arg_types == NULL) in set_function_type()
10331 ufunc->uf_func_type->tt_args[i] = &t_any; in set_function_type()
10334 mch_memmove(ufunc->uf_func_type->tt_args, in set_function_type()
10335 ufunc->uf_arg_types, sizeof(type_T *) * argcount); in set_function_type()
10338 ufunc->uf_func_type->tt_args[argcount] = in set_function_type()
10339 ufunc->uf_va_type == NULL ? &t_list_any : ufunc->uf_va_type; in set_function_type()
10340 ufunc->uf_func_type->tt_flags = TTFLAG_VARARGS; in set_function_type()
10345 ufunc->uf_func_type = get_func_type(ufunc->uf_ret_type, in set_function_type()
10346 argcount, &ufunc->uf_type_list); in set_function_type()
10438 vim_free(isn->isn_arg.ufunc.cuf_name); in delete_instr()
10445 ufunc_T *ufunc = dfunc->df_ufunc; in delete_instr() local
10447 if (ufunc != NULL && func_name_refcount(ufunc->uf_name)) in delete_instr()
10448 func_ptr_unref(ufunc); in delete_instr()
10466 ufunc_T *ufunc = find_func_even_dead(lambda, TRUE, NULL); in delete_instr() local
10468 if (ufunc != NULL) in delete_instr()
10470 unlink_def_function(ufunc); in delete_instr()
10471 func_ptr_unref(ufunc); in delete_instr()
10649 unlink_def_function(ufunc_T *ufunc) in unlink_def_function() argument
10651 if (ufunc->uf_dfunc_idx > 0) in unlink_def_function()
10654 + ufunc->uf_dfunc_idx; in unlink_def_function()
10658 ufunc->uf_def_status = UF_NOT_COMPILED; in unlink_def_function()
10659 ufunc->uf_dfunc_idx = 0; in unlink_def_function()
10660 if (dfunc->df_ufunc == ufunc) in unlink_def_function()
10669 link_def_function(ufunc_T *ufunc) in link_def_function() argument
10671 if (ufunc->uf_dfunc_idx > 0) in link_def_function()
10674 + ufunc->uf_dfunc_idx; in link_def_function()