{"set_module_sha1_map": "设置全局模块 SHA1 映射", "_lookup_module_sha1": "查找模块名对应的 SHA1,找不到返回 None", "_lookup_module_sha1_suffix": "后缀匹配查找模块 SHA1,如 mod_suffix=\"__types\" 匹配 \"llvmlite.__types\"\n\n 用于 from .X import Y 的相对导入:impf.module 是 \".X\"(带前导点),\n 去掉前导点后为 \"X\",SHA1 映射表中键是 \"pkg.X\",需要后缀匹配。\n ", "register_cexport_func": "注册 CExport 函数到全局表(sha1+func_name 二元组)", "is_cexport_func": "检查 (sha1, func_name) 是否是 CExport 函数", "_lookup_mod_sha1": "从 from_imports 查找类所属模块的 SHA1,返回 None=未找到", "find_func_in_module": "在模块的函数链表中按名称查找函数\n\n 查找策略:\n 1. 精确匹配(如 \"strlen\" 匹配 @strlen,有 t.CExport 的函数)\n 2. 后缀匹配(如 \"atoi\" 匹配 @\"83210a72e829a086.atoi\",无 t.CExport 的函数)\n\n 使用 llvmlite.function_get_name/next 访问器绕过 stub 类型限制\n (stub 类型字段不足且字段类型可能错误,直接字段访问会被静默跳过)。\n ", "_infer_external_func_ret_ty": "根据函数名推断外部 includes 函数的返回类型", "translate_c_deref": "c.Deref(ptr) → load i8 from ptr", "translate_c_derefas": "c.DerefAs(ptr, val) → store val to ptr(bitcast 后 store)", "translate_c_addr": "c.Addr(var) → 返回变量的 alloca 指针(不 load)", "translate_c_load": "c.Load(a, b) → *a = *b(加载 b 的值,存储到 a)", "AsmOperand": "内联汇编操作数条目", "_asm_append_cstr": "将 C 字符串 src 追加到 dst 末尾", "_asm_escape_for_ir": "转义汇编文本用于 LLVM IR 字符串字面量", "_resolve_register": "将 t.ASM_DESCR.XXX 的属性名映射到约束字符串值", "_resolve_asm_descr": "递归解析约束表达式,返回约束字符串", "_asm_get_operand": "获取操作数数组中第 idx 个元素的指针", "_asm_is_c_call": "检查 Call 节点是否是 c.XXX 调用,返回属性名或 None", "_asm_add_operand": "添加操作数到数组,返回新计数(失败返回原计数)", "translate_c_asm": "翻译 c.Asm 内联汇编,返回结果 Value(无输出时返回 None)", "_llvmir_get_op": "获取第 i 个操作数槽位", "_llvmir_find_op_marker": "查找 %__OP 标记,返回标记开始位置或 None", "_llvmir_parse_op_num": "从 %__OPN__ 标记中解析编号 N", "_llvmir_match_icmp_pred": "将 icmp 预测字符串转为常量", "_llvmir_match_fcmp_pred": "将 fcmp 预测字符串转为常量", "_llvmir_extract_two_ops": "从模板中提取前两个 %__OP 标记的编号\n\n 结果写入 out_nums[0] 和 out_nums[1]\n 返回 1 成功, 0 失败\n ", "_llvmir_resolve_op": "根据操作数编号解析实际 Value", "_llvmir_store_outputs": "将结果存储到所有输出变量", "translate_c_llvmir": "翻译 c.LLVMIR 内联 LLVM IR,返回结果 Value", "_apply_struct_defaults": "应用结构体字段的默认值", "_translate_struct_ctor": "结构体构造函数:按字段顺序 store 参数值,返回结构体值\n\n OOP 结构体:alloca → call __before_init__(ptr) → call __init__(ptr, args) 或 store 参数 → load\n 普通结构体:alloca → zero + defaults → store 参数 → load\n ", "_do_virtual_call": "通过虚表间接调用虚方法,返回 call 结果(void 方法返回 None)", "_call_method_on_ptr": "在结构体指针上调用方法,返回 call 结果(void 方法返回 None)", "_infer_method_ret_ty": "根据方法名推断返回类型(stub 未注入时的回退方案)", "_translate_method_call": "翻译方法调用,返回 call 结果 Value", "_kwarg_name_matches": "检查关键字参数名 kw_arg 是否匹配参数名 param_name(跳过 % 前缀)", "_translate_struct_ctor_kw": "结构体构造函数(关键字参数版本)", "_translate_call_with_kwargs": "带关键字参数的函数调用,按参数顺序构建调用链表\n\n 使用 llvmlite 访问器函数绕过 stub 类型限制:\n found_func.Params/RetTy/Name 和 cur_param.Name/Ty/Next 在 stub\n 类型中字段不足,直接访问会被 TransPyC 静默跳过。\n ", "_translate_t_type_cast": "类型转换:根据参数类型和目标类型选择转换方式", "_extract_type_args_from_slice": "从 Subscript.slice 提取类型实参名列表\n\n list[int] -> [\"int\"]\n dict[str, int] -> [\"str\", \"int\"]\n list[AST | t.CPtr] -> [\"AST|t.CPtr\"]\n ", "translate_call": "翻译函数调用,返回 call 结果 Value", "translate_closure_call": "通过闭包指针间接调用", "translate_printf_call": "翻译 printf 调用(特殊处理格式字符串)", "FuncEntry": "函数表条目", "init_func_table": "分配并清零函数表数组", "find_func_in_table": "在函数表中按名称查找,返回 Function 指针或 None", "add_func_to_table": "添加函数到函数表,返回 0 成功", "_init_global_func_table": "初始化全局函数表(用 stdlib.malloc 分配,生命周期=整个程序)", "_register_global_func": "注册函数到全局表(已存在则跳过),返回 0 成功\n\n 直接操作全局表,不调用 add_func_to_table,避免递归。\n ", "find_func_global": "在全局函数表中按名称查找,返回 Function 指针或 None", "ExprCallHandle": "函数调用处理器:继承 Mixin 获得 Trans 回指针", "ExprCallHandle.HandleCall": "翻译函数调用,从 self.Trans 获取共享状态", "ExprCallHandle.HandlePrintfCall": "翻译 printf 调用,从 self.Trans 获取共享状态"}