From: Stefan Behnel Date: Fri, 26 Dec 2008 15:01:02 +0000 (+0100) Subject: code simplification X-Git-Tag: 0.11-beta~73 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=b692ef7167cbd947733118c06c66ae684322513b;p=cython.git code simplification --- diff --git a/Cython/Compiler/Nodes.py b/Cython/Compiler/Nodes.py index 66b837f7..85d57ab1 100644 --- a/Cython/Compiler/Nodes.py +++ b/Cython/Compiler/Nodes.py @@ -2126,9 +2126,10 @@ class DefNode(FuncDefNode): for i, arg in enumerate(all_args): if not arg.default: last_required_arg = i - code.putln('switch (PyTuple_GET_SIZE(%s)) {' % Naming.args_cname) + if max_positional_args > 0: + code.putln('switch (PyTuple_GET_SIZE(%s)) {' % Naming.args_cname) for i, arg in enumerate(all_args[:last_required_arg+1]): - if i <= max_positional_args: + if max_positional_args > 0 and i <= max_positional_args: if self.star_arg and i == max_positional_args: code.putln('default:') else: @@ -2138,8 +2139,8 @@ class DefNode(FuncDefNode): continue code.putln('values[%d] = PyDict_GetItem(%s, %s);' % ( i, Naming.kwds_cname, arg.name_entry.pystring_cname)) + code.putln('if (likely(values[%d])) kw_args--;' % i); if i < min_positional_args: - code.putln('if (likely(values[%d])) kw_args--;' % i); if i == 0: # special case: we know arg 0 is missing code.put('else ') @@ -2154,15 +2155,14 @@ class DefNode(FuncDefNode): min_positional_args, max_positional_args, i)) code.putln(code.error_goto(self.pos)) code.putln('}') - else: - code.putln('if (values[%d]) kw_args--;' % i); - if arg.kw_only and not arg.default: - code.putln('else {') - code.put('__Pyx_RaiseKeywordRequired("%s", %s); ' %( - self.name.utf8encode(), arg.name_entry.pystring_cname)) - code.putln(code.error_goto(self.pos)) - code.putln('}') - code.putln('}') + elif arg.kw_only: + code.putln('else {') + code.put('__Pyx_RaiseKeywordRequired("%s", %s); ' %( + self.name.utf8encode(), arg.name_entry.pystring_cname)) + code.putln(code.error_goto(self.pos)) + code.putln('}') + if max_positional_args > 0: + code.putln('}') code.putln('if (unlikely(kw_args > 0)) {') # non-positional kw args left in dict: default args, **kwargs or error