From eb748568993d26f91ed0b1cff8ccbee4df2e0cb0 Mon Sep 17 00:00:00 2001 From: Turiiya <34311583+ttytm@users.noreply.github.com> Date: Thu, 2 Nov 2023 13:56:14 +0100 Subject: [PATCH] cgen: reduce expense in repetitively called functions by using consts (#19732) --- vlib/v/gen/c/fn.v | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/vlib/v/gen/c/fn.v b/vlib/v/gen/c/fn.v index a5e6e1887483ad..734dc2f6aded7b 100644 --- a/vlib/v/gen/c/fn.v +++ b/vlib/v/gen/c/fn.v @@ -7,6 +7,8 @@ import strings import v.ast import v.util +const c_fn_name_escape_seq = ['[', '_T_', ']', ''] + fn (mut g Gen) is_used_by_main(node ast.FnDecl) bool { mut is_used_by_main := true if g.pref.skip_unused { @@ -449,7 +451,7 @@ fn (mut g Gen) c_fn_name(node &ast.FnDecl) string { unwrapped_rec_typ := g.unwrap_generic(node.receiver.typ) name = g.cc_type(unwrapped_rec_typ, false) + '_' + name if g.table.sym(unwrapped_rec_typ).kind == .placeholder { - name = name.replace_each(['[', '_T_', ']', '']) + name = name.replace_each(c.c_fn_name_escape_seq) } } if node.language == .c { @@ -613,7 +615,7 @@ fn (mut g Gen) fn_decl_params(params []ast.Param, scope &ast.Scope, is_variadic typ = g.table.sym(typ).array_info().elem_type.set_flag(.variadic) } param_type_sym := g.table.sym(typ) - mut param_type_name := g.typ(typ).replace_each(['[', '_T_', ']', '']) + mut param_type_name := g.typ(typ).replace_each(c.c_fn_name_escape_seq) if param_type_sym.kind == .function && !typ.has_flag(.option) { info := param_type_sym.info as ast.FnType func := info.func