2012/1/25 mark florisson <markflorisso...@gmail.com>: > On 25 January 2012 06:49, Vitja Makarov <vitja.maka...@gmail.com> wrote: >> 2012/1/25 mark florisson <markflorisso...@gmail.com>: >>> I just noticed the inline defnode call code. When I try to compile >>> with 'cython -Xoptimize.inline_defnode_calls=True test.pyx' with the >>> following code: >>> >>> def foo(x): print foo >>> foo(10) >>> >>> I get >>> >>> Error compiling Cython file: >>> ------------------------------------------------------------ >>> ... >>> def foo(x): >>> print x >>> >>> foo(10) >>> ^ >>> ------------------------------------------------------------ >>> >>> test.pyx:4:3: Compiler crash in InlineDefNodeCalls >>> >>> ModuleNode.body = StatListNode(test.pyx:1:0) >>> StatListNode.stats[2] = ExprStatNode(test.pyx:4:3) >>> ExprStatNode.expr = SimpleCallNode(test.pyx:4:3, >>> result_is_used = True, >>> use_managed_ref = True) >>> >>> Compiler crash traceback from this point on: >>> File "/Users/mark/cy/Cython/Compiler/Visitor.py", line 176, in _visitchild >>> result = handler_method(child) >>> File "/Users/mark/cy/Cython/Compiler/Optimize.py", line 1656, in >>> visit_SimpleCallNode >>> if not function_name.cf_state.is_single: >>> AttributeError: 'NoneType' object has no attribute 'is_single' >> >> >> Thanks for the report! The feature is still experimental and by >> default is disabled. >> Anyway it wouldn't work for your example. It works when we know what >> exactly function is referred by the name so it's closure case: >> >> def foo(): >> def bar(): >> pass >> bar() >> >> -- >> vitja. >> _______________________________________________ >> cython-devel mailing list >> cython-devel@python.org >> http://mail.python.org/mailman/listinfo/cython-devel > > Ah, neat. I thought it was perhaps also defying monkeypatching.
I'm thinking about implementing "conditional inlining": depending on what function actually is it'll make direct call to C function or PyObject_Call(). -- vitja. _______________________________________________ cython-devel mailing list cython-devel@python.org http://mail.python.org/mailman/listinfo/cython-devel