Lines Matching refs:fp
37 static void funccal_unref(funccall_T *fc, ufunc_T *fp, int force);
38 static void func_clear(ufunc_T *fp, int force);
39 static int func_free(ufunc_T *fp, int force);
374 parse_argument_types(ufunc_T *fp, garray_T *argtypes, int varargs) in parse_argument_types() argument
378 ga_init2(&fp->uf_type_list, sizeof(type_T *), 10); in parse_argument_types()
386 fp->uf_arg_types = ALLOC_CLEAR_MULT(type_T *, len); in parse_argument_types()
387 if (fp->uf_arg_types != NULL) in parse_argument_types()
400 type = parse_type(&p, &fp->uf_type_list, TRUE); in parse_argument_types()
403 fp->uf_arg_types[i] = type; in parse_argument_types()
414 fp->uf_va_name = ((char_u **)fp->uf_args.ga_data) in parse_argument_types()
415 [fp->uf_args.ga_len - 1]; in parse_argument_types()
416 --fp->uf_args.ga_len; in parse_argument_types()
420 fp->uf_va_type = &t_list_any; in parse_argument_types()
423 fp->uf_va_type = parse_type(&p, &fp->uf_type_list, TRUE); in parse_argument_types()
424 if (fp->uf_va_type != NULL && fp->uf_va_type->tt_type != VAR_LIST) in parse_argument_types()
431 if (fp->uf_va_type == NULL) in parse_argument_types()
439 parse_return_type(ufunc_T *fp, char_u *ret_type) in parse_return_type() argument
442 fp->uf_ret_type = &t_void; in parse_return_type()
447 fp->uf_ret_type = parse_type(&p, &fp->uf_type_list, TRUE); in parse_return_type()
448 if (fp->uf_ret_type == NULL) in parse_return_type()
450 fp->uf_ret_type = &t_void; in parse_return_type()
461 register_closure(ufunc_T *fp) in register_closure() argument
463 if (fp->uf_scoped == current_funccal) in register_closure()
466 funccal_unref(fp->uf_scoped, fp, FALSE); in register_closure()
467 fp->uf_scoped = current_funccal; in register_closure()
473 [current_funccal->fc_funcs.ga_len++] = fp; in register_closure()
478 set_ufunc_name(ufunc_T *fp, char_u *name) in set_ufunc_name() argument
482 STRCPY((void *)fp->uf_name, name); in set_ufunc_name()
486 fp->uf_name_exp = alloc(STRLEN(name) + 3); in set_ufunc_name()
487 if (fp->uf_name_exp != NULL) in set_ufunc_name()
489 STRCPY(fp->uf_name_exp, "<SNR>"); in set_ufunc_name()
490 STRCAT(fp->uf_name_exp, fp->uf_name + 3); in set_ufunc_name()
517 ufunc_T *fp; in register_cfunc() local
519 fp = alloc_clear(offsetof(ufunc_T, uf_name) + STRLEN(name) + 1); in register_cfunc()
520 if (fp == NULL) in register_cfunc()
523 fp->uf_def_status = UF_NOT_COMPILED; in register_cfunc()
524 fp->uf_refcount = 1; in register_cfunc()
525 fp->uf_varargs = TRUE; in register_cfunc()
526 fp->uf_flags = FC_CFUNC; in register_cfunc()
527 fp->uf_calls = 0; in register_cfunc()
528 fp->uf_script_ctx = current_sctx; in register_cfunc()
529 fp->uf_cb = cb; in register_cfunc()
530 fp->uf_cb_free = cb_free; in register_cfunc()
531 fp->uf_cb_state = state; in register_cfunc()
533 set_ufunc_name(fp, name); in register_cfunc()
534 hash_add(&func_hashtab, UF2HIKEY(fp)); in register_cfunc()
622 function_using_block_scopes(ufunc_T *fp, cstack_T *cstack) in function_using_block_scopes() argument
629 fp->uf_block_ids = ALLOC_MULT(int, count); in function_using_block_scopes()
630 if (fp->uf_block_ids != NULL) in function_using_block_scopes()
632 mch_memmove(fp->uf_block_ids, cstack->cs_block_id, in function_using_block_scopes()
634 fp->uf_block_depth = count; in function_using_block_scopes()
1290 ufunc_T *fp = NULL; in get_lambda_tv() local
1407 fp = alloc_clear(offsetof(ufunc_T, uf_name) + STRLEN(name) + 1); in get_lambda_tv()
1408 if (fp == NULL) in get_lambda_tv()
1410 fp->uf_def_status = UF_NOT_COMPILED; in get_lambda_tv()
1454 fp->uf_refcount = 1; in get_lambda_tv()
1455 set_ufunc_name(fp, name); in get_lambda_tv()
1456 fp->uf_args = newargs; in get_lambda_tv()
1457 ga_init(&fp->uf_def_args); in get_lambda_tv()
1460 if (parse_argument_types(fp, &argtypes, in get_lambda_tv()
1465 fp->uf_ret_type = parse_type(&ret_type, in get_lambda_tv()
1466 &fp->uf_type_list, TRUE); in get_lambda_tv()
1467 if (fp->uf_ret_type == NULL) in get_lambda_tv()
1471 fp->uf_ret_type = &t_unknown; in get_lambda_tv()
1474 fp->uf_lines = newlines; in get_lambda_tv()
1478 if (register_closure(fp) == FAIL) in get_lambda_tv()
1484 func_do_profile(fp); in get_lambda_tv()
1490 fp->uf_varargs = !in_vim9script() || varargs; in get_lambda_tv()
1491 fp->uf_flags = flags; in get_lambda_tv()
1492 fp->uf_calls = 0; in get_lambda_tv()
1493 fp->uf_script_ctx = current_sctx; in get_lambda_tv()
1494 fp->uf_script_ctx.sc_lnum += SOURCING_LNUM - newlines.ga_len + 1; in get_lambda_tv()
1496 function_using_block_scopes(fp, evalarg->eval_cstack); in get_lambda_tv()
1498 pt->pt_func = fp; in get_lambda_tv()
1503 hash_add(&func_hashtab, UF2HIKEY(fp)); in get_lambda_tv()
1525 if (fp != NULL) in get_lambda_tv()
1526 vim_free(fp->uf_arg_types); in get_lambda_tv()
1528 vim_free(fp); in get_lambda_tv()
1940 ufunc_T *fp = find_func_even_dead(name, is_global, cctx); in find_func() local
1942 if (fp != NULL && (fp->uf_flags & FC_DEAD) == 0) in find_func()
1943 return fp; in find_func()
1962 cat_func_name(char_u *buf, ufunc_T *fp) in cat_func_name() argument
1964 if (!func_is_global(fp)) in cat_func_name()
1967 STRCAT(buf, fp->uf_name + 3); in cat_func_name()
1970 STRCPY(buf, fp->uf_name); in cat_func_name()
2001 ufunc_T *fp = ((ufunc_T **)(fc->fc_funcs.ga_data))[i]; in free_funccal() local
2007 if (fp != NULL && fp->uf_scoped == fc) in free_funccal()
2008 fp->uf_scoped = NULL; in free_funccal()
2143 funccal_unref(funccall_T *fc, ufunc_T *fp, int force) in funccal_unref() argument
2165 if (((ufunc_T **)(fc->fc_funcs.ga_data))[i] == fp) in funccal_unref()
2175 func_remove(ufunc_T *fp) in func_remove() argument
2180 if (fp->uf_flags & FC_DEAD) in func_remove()
2183 hi = hash_find(&func_hashtab, UF2HIKEY(fp)); in func_remove()
2189 if (fp->uf_def_status == UF_COMPILED && (fp->uf_flags & FC_COPY) == 0) in func_remove()
2191 fp->uf_flags |= FC_DEAD; in func_remove()
2195 fp->uf_flags |= FC_DELETED; in func_remove()
2202 func_clear_items(ufunc_T *fp) in func_clear_items() argument
2204 ga_clear_strings(&(fp->uf_args)); in func_clear_items()
2205 ga_clear_strings(&(fp->uf_def_args)); in func_clear_items()
2206 ga_clear_strings(&(fp->uf_lines)); in func_clear_items()
2207 VIM_CLEAR(fp->uf_arg_types); in func_clear_items()
2208 VIM_CLEAR(fp->uf_block_ids); in func_clear_items()
2209 VIM_CLEAR(fp->uf_va_name); in func_clear_items()
2210 clear_type_list(&fp->uf_type_list); in func_clear_items()
2214 fp->uf_refcount += 3; in func_clear_items()
2215 partial_unref(fp->uf_partial); in func_clear_items()
2216 fp->uf_partial = NULL; in func_clear_items()
2217 fp->uf_refcount -= 3; in func_clear_items()
2220 if (fp->uf_cb_free != NULL) in func_clear_items()
2222 fp->uf_cb_free(fp->uf_cb_state); in func_clear_items()
2223 fp->uf_cb_free = NULL; in func_clear_items()
2226 fp->uf_cb_state = NULL; in func_clear_items()
2227 fp->uf_cb = NULL; in func_clear_items()
2230 VIM_CLEAR(fp->uf_tml_count); in func_clear_items()
2231 VIM_CLEAR(fp->uf_tml_total); in func_clear_items()
2232 VIM_CLEAR(fp->uf_tml_self); in func_clear_items()
2242 func_clear(ufunc_T *fp, int force) in func_clear() argument
2244 if (fp->uf_cleared) in func_clear()
2246 fp->uf_cleared = TRUE; in func_clear()
2249 func_clear_items(fp); in func_clear()
2250 funccal_unref(fp->uf_scoped, fp, force); in func_clear()
2251 unlink_def_function(fp); in func_clear()
2261 func_free(ufunc_T *fp, int force) in func_free() argument
2265 if ((fp->uf_flags & (FC_DELETED | FC_REMOVED)) == 0) in func_free()
2266 func_remove(fp); in func_free()
2268 if ((fp->uf_flags & FC_DEAD) == 0 || force) in func_free()
2270 if (fp->uf_dfunc_idx > 0) in func_free()
2271 unlink_def_function(fp); in func_free()
2272 VIM_CLEAR(fp->uf_name_exp); in func_free()
2273 vim_free(fp); in func_free()
2284 func_clear_free(ufunc_T *fp, int force) in func_clear_free() argument
2286 func_clear(fp, force); in func_clear_free()
2287 if (force || fp->uf_dfunc_idx == 0 || func_name_refcount(fp->uf_name) in func_clear_free()
2288 || (fp->uf_flags & FC_COPY)) in func_clear_free()
2289 func_free(fp, force); in func_clear_free()
2291 fp->uf_flags |= FC_DEAD; in func_clear_free()
2302 ufunc_T *fp = NULL; in copy_func() local
2310 fp = find_func(global, TRUE, NULL); in copy_func()
2311 if (fp != NULL) in copy_func()
2318 fp = alloc_clear(offsetof(ufunc_T, uf_name) + STRLEN(global) + 1); in copy_func()
2319 if (fp == NULL) in copy_func()
2322 fp->uf_varargs = ufunc->uf_varargs; in copy_func()
2323 fp->uf_flags = (ufunc->uf_flags & ~FC_VIM9) | FC_COPY; in copy_func()
2324 fp->uf_def_status = ufunc->uf_def_status; in copy_func()
2325 fp->uf_dfunc_idx = ufunc->uf_dfunc_idx; in copy_func()
2326 if (ga_copy_strings(&ufunc->uf_args, &fp->uf_args) == FAIL in copy_func()
2327 || ga_copy_strings(&ufunc->uf_def_args, &fp->uf_def_args) in copy_func()
2329 || ga_copy_strings(&ufunc->uf_lines, &fp->uf_lines) == FAIL) in copy_func()
2332 fp->uf_name_exp = ufunc->uf_name_exp == NULL ? NULL in copy_func()
2336 fp->uf_arg_types = ALLOC_MULT(type_T *, fp->uf_args.ga_len); in copy_func()
2337 if (fp->uf_arg_types == NULL) in copy_func()
2339 mch_memmove(fp->uf_arg_types, ufunc->uf_arg_types, in copy_func()
2340 sizeof(type_T *) * fp->uf_args.ga_len); in copy_func()
2344 fp->uf_va_name = vim_strsave(ufunc->uf_va_name); in copy_func()
2345 if (fp->uf_va_name == NULL) in copy_func()
2348 fp->uf_ret_type = ufunc->uf_ret_type; in copy_func()
2350 fp->uf_refcount = 1; in copy_func()
2351 STRCPY(fp->uf_name, global); in copy_func()
2352 hash_add(&func_hashtab, UF2HIKEY(fp)); in copy_func()
2355 link_def_function(fp); in copy_func()
2378 func_clear_free(fp, TRUE); in copy_func()
2432 ufunc_T *fp, // pointer to function in call_user_func() argument
2477 fc->func = fp; in call_user_func()
2481 fc->breakpoint = dbg_find_breakpoint(FALSE, fp->uf_name, (linenr_T)0); in call_user_func()
2485 func_ptr_ref(fp); in call_user_func()
2487 if (fp->uf_def_status != UF_NOT_COMPILED) in call_user_func()
2495 profile_may_start_func(&profile_info, fp, caller); in call_user_func()
2497 call_def_function(fp, argcount, argvars, funcexe->partial, rettv); in call_user_func()
2500 if (do_profiling == PROF_YES && (fp->uf_profiling in call_user_func()
2502 profile_may_end_func(&profile_info, fp, caller); in call_user_func()
2509 if (STRNCMP(fp->uf_name, "<lambda>", 8) == 0) in call_user_func()
2542 if ((fp->uf_flags & FC_NOARGS) == 0) in call_user_func()
2544 (varnumber_T)(argcount >= fp->uf_args.ga_len in call_user_func()
2545 ? argcount - fp->uf_args.ga_len : 0)); in call_user_func()
2547 if ((fp->uf_flags & FC_NOARGS) == 0) in call_user_func()
2570 if ((fp->uf_flags & FC_NOARGS) == 0) in call_user_func()
2577 for (i = 0; i < argcount || i < fp->uf_args.ga_len; ++i) in call_user_func()
2583 ai = i - fp->uf_args.ga_len; in call_user_func()
2587 name = FUNCARG(fp, i); in call_user_func()
2592 isdefault = ai + fp->uf_def_args.ga_len >= 0 in call_user_func()
2602 default_expr = ((char_u **)(fp->uf_def_args.ga_data)) in call_user_func()
2603 [ai + fp->uf_def_args.ga_len]; in call_user_func()
2613 if ((fp->uf_flags & FC_NOARGS) != 0) in call_user_func()
2667 if (fp->uf_flags & FC_SANDBOX) in call_user_func()
2673 estack_push_ufunc(fp, 1); in call_user_func()
2722 profile_may_start_func(&profile_info, fp, in call_user_func()
2727 current_sctx = fp->uf_script_ctx; in call_user_func()
2731 if (default_arg_err && (fp->uf_flags & FC_ABORT)) in call_user_func()
2735 char_u *p = *(char_u **)fp->uf_lines.ga_data + 7; in call_user_func()
2751 if ((did_emsg && (fp->uf_flags & FC_ABORT)) || rettv->v_type == VAR_UNKNOWN) in call_user_func()
2763 if (fp->uf_profiling || (caller != NULL && caller->uf_profiling)) in call_user_func()
2764 profile_may_end_func(&profile_info, fp, caller); in call_user_func()
2843 check_user_func_argcount(ufunc_T *fp, int argcount) in check_user_func_argcount() argument
2845 int regular_args = fp->uf_args.ga_len; in check_user_func_argcount()
2847 if (argcount < regular_args - fp->uf_def_args.ga_len) in check_user_func_argcount()
2849 else if (!has_varargs(fp) && argcount > regular_args) in check_user_func_argcount()
2859 ufunc_T *fp, in call_user_func_check() argument
2868 if (fp->uf_flags & FC_RANGE && funcexe->doesrange != NULL) in call_user_func_check()
2870 error = check_user_func_argcount(fp, argcount); in call_user_func_check()
2873 if ((fp->uf_flags & FC_DICT) && selfdict == NULL) in call_user_func_check()
2891 ++fp->uf_calls; in call_user_func_check()
2892 call_user_func(fp, argcount, argvars, rettv, funcexe, in call_user_func_check()
2893 (fp->uf_flags & FC_DICT) ? selfdict : NULL); in call_user_func_check()
2894 if (--fp->uf_calls <= 0 && fp->uf_refcount <= 0) in call_user_func_check()
2896 func_clear_free(fp, FALSE); in call_user_func_check()
2945 ufunc_T *fp; in delete_script_functions() local
2962 fp = HI2UF(hi); in delete_script_functions()
2963 if (STRNCMP(fp->uf_name, buf, len) == 0) in delete_script_functions()
2967 fp->uf_flags |= FC_DEAD; in delete_script_functions()
2969 if (fp->uf_calls > 0) in delete_script_functions()
2973 if (func_remove(fp)) in delete_script_functions()
2974 fp->uf_refcount--; in delete_script_functions()
2978 func_clear(fp, TRUE); in delete_script_functions()
2996 ufunc_T *fp; in free_all_functions() local
3020 fp = HI2UF(hi); in free_all_functions()
3021 fp->uf_flags &= ~FC_DEAD; in free_all_functions()
3022 fp->uf_def_status = UF_NOT_COMPILED; in free_all_functions()
3026 if (func_name_refcount(fp->uf_name)) in free_all_functions()
3031 func_clear(fp, TRUE); in free_all_functions()
3054 fp = HI2UF(hi); in free_all_functions()
3055 if (func_name_refcount(fp->uf_name)) in free_all_functions()
3059 if (func_free(fp, FALSE) == OK) in free_all_functions()
3227 ufunc_T *fp = NULL; in call_func() local
3247 fp = partial->pt_func; in call_func()
3248 if (fp == NULL) in call_func()
3312 if (fp == NULL && fname[0] == 'g' && fname[1] == ':') in call_func()
3322 if (fp != NULL || !builtin_function(rfname, -1)) in call_func()
3327 if (fp == NULL) in call_func()
3328 fp = find_func(rfname, is_global, NULL); in call_func()
3331 if (fp == NULL in call_func()
3337 fp = find_func(rfname, is_global, NULL); in call_func()
3340 if (fp == NULL && script_autoload(rfname, TRUE) && !aborting()) in call_func()
3343 fp = find_func(rfname, is_global, NULL); in call_func()
3345 if (fp == NULL) in call_func()
3352 fp = find_func(p, is_global, NULL); in call_func()
3355 if (fp != NULL && (fp->uf_flags & FC_DELETED)) in call_func()
3358 else if (fp != NULL && (fp->uf_flags & FC_CFUNC)) in call_func()
3360 cfunc_T cb = fp->uf_cb; in call_func()
3362 error = (*cb)(argcount, argvars, rettv, fp->uf_cb_state); in call_func()
3365 else if (fp != NULL) in call_func()
3370 fp->uf_args.ga_len); in call_func()
3382 error = call_user_func_check(fp, argcount, argvars, rettv, in call_func()
3439 printable_func_name(ufunc_T *fp) in printable_func_name() argument
3441 return fp->uf_name_exp != NULL ? fp->uf_name_exp : fp->uf_name; in printable_func_name()
3448 list_func_head(ufunc_T *fp, int indent) in list_func_head() argument
3455 if (fp->uf_def_status != UF_NOT_COMPILED) in list_func_head()
3459 msg_puts((char *)printable_func_name(fp)); in list_func_head()
3461 for (j = 0; j < fp->uf_args.ga_len; ++j) in list_func_head()
3465 msg_puts((char *)FUNCARG(fp, j)); in list_func_head()
3466 if (fp->uf_arg_types != NULL) in list_func_head()
3471 msg_puts(type_name(fp->uf_arg_types[j], &tofree)); in list_func_head()
3474 if (j >= fp->uf_args.ga_len - fp->uf_def_args.ga_len) in list_func_head()
3477 msg_puts(((char **)(fp->uf_def_args.ga_data)) in list_func_head()
3478 [j - fp->uf_args.ga_len + fp->uf_def_args.ga_len]); in list_func_head()
3481 if (fp->uf_varargs) in list_func_head()
3487 if (fp->uf_va_name != NULL) in list_func_head()
3492 msg_puts((char *)fp->uf_va_name); in list_func_head()
3493 if (fp->uf_va_type != NULL) in list_func_head()
3498 msg_puts(type_name(fp->uf_va_type, &tofree)); in list_func_head()
3504 if (fp->uf_def_status != UF_NOT_COMPILED) in list_func_head()
3506 if (fp->uf_ret_type != &t_void) in list_func_head()
3511 msg_puts(type_name(fp->uf_ret_type, &tofree)); in list_func_head()
3515 else if (fp->uf_flags & FC_ABORT) in list_func_head()
3517 if (fp->uf_flags & FC_RANGE) in list_func_head()
3519 if (fp->uf_flags & FC_DICT) in list_func_head()
3521 if (fp->uf_flags & FC_CLOSURE) in list_func_head()
3525 last_set_msg(fp->uf_script_ctx); in list_func_head()
3828 ufunc_T *fp = HI2UF(hi); in list_functions() local
3831 if ((fp->uf_flags & FC_DEAD) == 0 in list_functions()
3833 ? !message_filtered(fp->uf_name) in list_functions()
3834 && !func_name_refcount(fp->uf_name) in list_functions()
3835 : !isdigit(*fp->uf_name) in list_functions()
3836 && vim_regexec(regmatch, fp->uf_name, 0))) in list_functions()
3838 list_func_head(fp, FALSE); in list_functions()
3875 ufunc_T *fp = NULL; in define_function() local
4003 fp = find_func(name, is_global, NULL); in define_function()
4004 if (fp == NULL && ASCII_ISUPPER(*eap->arg)) in define_function()
4011 fp = find_func(up, FALSE, NULL); in define_function()
4014 if (fp != NULL) in define_function()
4016 list_func_head(fp, TRUE); in define_function()
4017 for (j = 0; j < fp->uf_lines.ga_len && !got_int; ++j) in define_function()
4019 if (FUNCLINE(fp, j) == NULL) in define_function()
4027 msg_prt_line(FUNCLINE(fp, j), FALSE); in define_function()
4034 if (fp->uf_def_status != UF_NOT_COMPILED) in define_function()
4239 fp = find_func_even_dead(name, is_global, NULL); in define_function()
4247 if (fp != NULL || import != NULL) in define_function()
4249 int dead = fp != NULL && (fp->uf_flags & FC_DEAD); in define_function()
4256 && (fp->uf_script_ctx.sc_sid != current_sctx.sc_sid in define_function()
4257 || fp->uf_script_ctx.sc_seq == current_sctx.sc_seq))) in define_function()
4266 if (fp->uf_calls > 0) in define_function()
4273 if (fp->uf_refcount > 1) in define_function()
4277 --fp->uf_refcount; in define_function()
4278 fp->uf_flags |= FC_REMOVED; in define_function()
4279 fp = NULL; in define_function()
4284 char_u *exp_name = fp->uf_name_exp; in define_function()
4288 fp->uf_name_exp = NULL; in define_function()
4289 func_clear_items(fp); in define_function()
4290 fp->uf_name_exp = exp_name; in define_function()
4291 fp->uf_flags &= ~FC_DEAD; in define_function()
4293 fp->uf_profiling = FALSE; in define_function()
4294 fp->uf_prof_initialized = FALSE; in define_function()
4296 fp->uf_def_status = UF_NOT_COMPILED; in define_function()
4304 fp = NULL; in define_function()
4329 if (fp == NULL) in define_function()
4363 fp = alloc_clear(offsetof(ufunc_T, uf_name) + STRLEN(name) + 1); in define_function()
4364 if (fp == NULL) in define_function()
4375 vim_free(fp); in define_function()
4376 fp = NULL; in define_function()
4382 vim_free(fp); in define_function()
4383 fp = NULL; in define_function()
4398 set_ufunc_name(fp, name); in define_function()
4402 hi->hi_key = UF2HIKEY(fp); in define_function()
4404 else if (hash_add(&func_hashtab, UF2HIKEY(fp)) == FAIL) in define_function()
4406 vim_free(fp); in define_function()
4407 fp = NULL; in define_function()
4410 fp->uf_refcount = 1; in define_function()
4412 fp->uf_args = newargs; in define_function()
4413 fp->uf_def_args = default_args; in define_function()
4414 fp->uf_ret_type = &t_any; in define_function()
4415 fp->uf_func_type = &t_func_any; in define_function()
4422 fp->uf_def_status = UF_TO_BE_COMPILED; in define_function()
4428 function_using_block_scopes(fp, cstack); in define_function()
4430 if (parse_argument_types(fp, &argtypes, varargs) == FAIL) in define_function()
4438 if (parse_return_type(fp, ret_type) == FAIL) in define_function()
4446 fp->uf_def_status = UF_NOT_COMPILED; in define_function()
4448 fp->uf_lines = newlines; in define_function()
4451 if (register_closure(fp) == FAIL) in define_function()
4455 fp->uf_scoped = NULL; in define_function()
4459 func_do_profile(fp); in define_function()
4461 fp->uf_varargs = varargs; in define_function()
4464 if (vim9script && !ASCII_ISUPPER(*fp->uf_name)) in define_function()
4466 fp->uf_flags = flags; in define_function()
4467 fp->uf_calls = 0; in define_function()
4468 fp->uf_cleared = FALSE; in define_function()
4469 fp->uf_script_ctx = current_sctx; in define_function()
4470 fp->uf_script_ctx_version = current_sctx.sc_version; in define_function()
4471 fp->uf_script_ctx.sc_lnum += sourcing_lnum_top; in define_function()
4474 fp->uf_flags |= FC_EXPORT; in define_function()
4480 set_function_type(fp); in define_function()
4481 else if (fp->uf_script_ctx.sc_version == SCRIPT_VERSION_VIM9) in define_function()
4483 fp->uf_script_ctx.sc_version = SCRIPT_VERSION_MAX; in define_function()
4490 if (fp != NULL) in define_function()
4492 ga_init(&fp->uf_args); in define_function()
4493 ga_init(&fp->uf_def_args); in define_function()
4497 if (fp != NULL) in define_function()
4498 VIM_CLEAR(fp->uf_arg_types); in define_function()
4508 return fp; in define_function()
4650 ufunc_T *fp; in get_user_func_name() local
4664 fp = HI2UF(hi); in get_user_func_name()
4667 if ((fp->uf_flags & FC_DEAD) || (fp->uf_flags & FC_DICT) in get_user_func_name()
4668 || STRNCMP(fp->uf_name, "<lambda>", 8) == 0) in get_user_func_name()
4671 if (STRLEN(fp->uf_name) + 4 >= IOSIZE) in get_user_func_name()
4672 return fp->uf_name; // prevents overflow in get_user_func_name()
4674 cat_func_name(IObuff, fp); in get_user_func_name()
4679 if (!has_varargs(fp) && fp->uf_args.ga_len == 0) in get_user_func_name()
4693 ufunc_T *fp = NULL; in ex_delfunction() local
4727 fp = find_func(name, is_global, NULL); in ex_delfunction()
4732 if (fp == NULL) in ex_delfunction()
4738 if (fp->uf_calls > 0) in ex_delfunction()
4743 if (fp->uf_flags & FC_VIM9) in ex_delfunction()
4762 if (fp->uf_refcount > (func_name_refcount(fp->uf_name) ? 0 : 1)) in ex_delfunction()
4766 if (func_remove(fp)) in ex_delfunction()
4767 fp->uf_refcount--; in ex_delfunction()
4770 func_clear_free(fp, FALSE); in ex_delfunction()
4782 ufunc_T *fp = NULL; in func_unref() local
4786 fp = find_func(name, FALSE, NULL); in func_unref()
4787 if (fp == NULL && isdigit(*name)) in func_unref()
4794 func_ptr_unref(fp); in func_unref()
4803 func_ptr_unref(ufunc_T *fp) in func_ptr_unref() argument
4805 if (fp != NULL && (--fp->uf_refcount <= 0 in func_ptr_unref()
4806 || (fp->uf_refcount == 1 && fp->uf_partial != NULL in func_ptr_unref()
4807 && fp->uf_partial->pt_refcount <= 1 in func_ptr_unref()
4808 && fp->uf_partial->pt_func == fp))) in func_ptr_unref()
4812 if (fp->uf_calls == 0) in func_ptr_unref()
4813 func_clear_free(fp, FALSE); in func_ptr_unref()
4823 ufunc_T *fp; in func_ref() local
4827 fp = find_func(name, FALSE, NULL); in func_ref()
4828 if (fp != NULL) in func_ref()
4829 ++fp->uf_refcount; in func_ref()
4840 func_ptr_ref(ufunc_T *fp) in func_ptr_ref() argument
4842 if (fp != NULL) in func_ptr_ref()
4843 ++fp->uf_refcount; in func_ptr_ref()
5217 ufunc_T *fp = fcp->func; in get_func_line() local
5224 fcp->breakpoint = dbg_find_breakpoint(FALSE, fp->uf_name, in get_func_line()
5233 gap = &fp->uf_lines; in get_func_line()
5234 if (((fp->uf_flags & FC_ABORT) && did_emsg && !aborted_in_try()) in get_func_line()
5259 dbg_breakpoint(fp->uf_name, SOURCING_LNUM); in get_func_line()
5261 fcp->breakpoint = dbg_find_breakpoint(FALSE, fp->uf_name, in get_func_line()
5307 ufunc_T *fp; in make_partial() local
5313 fp = rettv->vval.v_partial->pt_func; in make_partial()
5320 fp = find_func(fname, FALSE, NULL); in make_partial()
5324 if (fp != NULL && (fp->uf_flags & FC_DICT)) in make_partial()
5686 ufunc_T *fp; in set_ref_in_functions() local
5694 fp = HI2UF(hi); in set_ref_in_functions()
5695 if (!func_name_refcount(fp->uf_name) in set_ref_in_functions()
5696 && set_ref_in_func(NULL, fp, copyID)) in set_ref_in_functions()
5725 ufunc_T *fp = fp_in; in set_ref_in_func() local
5739 fp = find_func(fname, FALSE, NULL); in set_ref_in_func()
5741 if (fp != NULL) in set_ref_in_func()
5743 for (fc = fp->uf_scoped; fc != NULL; fc = fc->func->uf_scoped) in set_ref_in_func()