From 04160be88fa211d16d56c60cd415e9d91f6206ba Mon Sep 17 00:00:00 2001 From: Stefan Behnel Date: Sat, 23 Feb 2013 16:25:33 +0100 Subject: [PATCH] only include CythonFunction utility code if it's really used, might be unused if .pxd overrides all def functions to cdef --- Cython/Compiler/ExprNodes.py | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/Cython/Compiler/ExprNodes.py b/Cython/Compiler/ExprNodes.py index 9f73c59..612efaa 100755 --- a/Cython/Compiler/ExprNodes.py +++ b/Cython/Compiler/ExprNodes.py @@ -6781,14 +6781,7 @@ class PyCFunctionNode(ExprNode, ModuleNameMixin): def analyse_types(self, env): if self.binding: - if self.specialized_cpdefs or self.is_specialization: - env.use_utility_code( - UtilityCode.load_cached("FusedFunction", "CythonFunction.c")) - else: - env.use_utility_code( - UtilityCode.load_cached("CythonFunction", "CythonFunction.c")) self.analyse_default_args(env) - #TODO(craig,haoyu) This should be moved to a better place self.set_qualified_name(env, self.def_node.name) return self @@ -6888,14 +6881,18 @@ class PyCFunctionNode(ExprNode, ModuleNameMixin): code.put_gotref(self.py_result()) def generate_cyfunction_code(self, code): - def_node = self.def_node - if self.specialized_cpdefs: - constructor = "__pyx_FusedFunction_NewEx" def_node = self.specialized_cpdefs[0] - elif self.is_specialization: + else: + def_node = self.def_node + + if self.specialized_cpdefs or self.is_specialization: + code.globalstate.use_utility_code( + UtilityCode.load_cached("FusedFunction", "CythonFunction.c")) constructor = "__pyx_FusedFunction_NewEx" else: + code.globalstate.use_utility_code( + UtilityCode.load_cached("CythonFunction", "CythonFunction.c")) constructor = "__Pyx_CyFunction_NewEx" if self.code_object: -- 2.7.4