comments
authorStefan Behnel <scoder@users.berlios.de>
Tue, 23 Mar 2010 19:13:05 +0000 (20:13 +0100)
committerStefan Behnel <scoder@users.berlios.de>
Tue, 23 Mar 2010 19:13:05 +0000 (20:13 +0100)
Cython/Compiler/Optimize.py

index db1750d00187e3f0090b37630739b6d08e82f57c..7fa1a9d02ab748df126d66e8f3b82e78a437e78b 100644 (file)
@@ -1237,7 +1237,7 @@ class OptimizeBuiltinCalls(Visitor.EnvTransform):
 
     _map_to_capi_len_function = {
         Builtin.unicode_type   : "PyUnicode_GET_SIZE",
-        Builtin.str_type       : "Py_SIZE",
+        Builtin.str_type       : "Py_SIZE", # works in Py2 and Py3
         Builtin.bytes_type     : "__Pyx_PyBytes_GET_SIZE",
         Builtin.list_type      : "PyList_GET_SIZE",
         Builtin.tuple_type     : "PyTuple_GET_SIZE",
@@ -1247,7 +1247,8 @@ class OptimizeBuiltinCalls(Visitor.EnvTransform):
         }.get
 
     def _handle_simple_function_len(self, node, pos_args):
-        """Replace len(char*) by the equivalent call to strlen().
+        """Replace len(char*) by the equivalent call to strlen() and
+        len(known_builtin_type) by an equivalent C-API call.
         """
         if len(pos_args) != 1:
             self._error_wrong_arg_count('len', node, pos_args, 1)