Commit e3625d6d authored by Stefan Behnel's avatar Stefan Behnel

code simplification in len(char*) optimisation

parent 8f88561f
...@@ -1232,20 +1232,15 @@ class OptimizeBuiltinCalls(Visitor.EnvTransform): ...@@ -1232,20 +1232,15 @@ class OptimizeBuiltinCalls(Visitor.EnvTransform):
arg = arg.arg arg = arg.arg
if not arg.type.is_string: if not arg.type.is_string:
return node return node
if not node.type.is_numeric: new_node = ExprNodes.PythonCapiCallNode(
# this optimisation only works when we already replaced
# len() by PyObject_Length() which returns a Py_ssize_t
# instead of a Python object, so we can return a plain
# size_t instead without caring about Python object
# conversion etc.
return node
node = ExprNodes.PythonCapiCallNode(
node.pos, "strlen", self.Pyx_strlen_func_type, node.pos, "strlen", self.Pyx_strlen_func_type,
args = [arg], args = [arg],
is_temp = node.is_temp, is_temp = node.is_temp,
utility_code = include_string_h_utility_code utility_code = include_string_h_utility_code
) )
return node if node.type not in (PyrexTypes.c_size_t_type, PyrexTypes.c_py_ssize_t_type):
new_node = new_node.coerce_to(node.type, self.env_stack[-1])
return new_node
Pyx_Type_func_type = PyrexTypes.CFuncType( Pyx_Type_func_type = PyrexTypes.CFuncType(
Builtin.type_type, [ Builtin.type_type, [
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment