This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Author rhettinger
Recipients rhettinger
Date 2011-04-10.21:11:39
SpamBayes Score 8.495973e-06
Marked as misclassified No
Message-id <1302469900.48.0.983863495872.issue11823@psf.upfronthosting.co.za>
In-reply-to
Content
The argument to CALL_FUNCTION is overloaded to show both the number of positional arguments and keyword arguments (shifted by 8-bits):

>>> dis("foo(10, opt=True)")
  1           0 LOAD_NAME                0 (foo) 
              3 LOAD_CONST               0 (10) 
              6 LOAD_CONST               1 ('opt') 
              9 LOAD_CONST               2 (True) 
             12 CALL_FUNCTION          257 
             15 RETURN_VALUE         

It is not obvious that the 257 argument causes three stack arguments to be popped.

The disassembly should add a parenthetical to explain the composition:

>>> dis("foo(10, opt=True)")
  1           0 LOAD_NAME                0 (foo) 
              3 LOAD_CONST               0 (10) 
              6 LOAD_CONST               1 ('opt') 
              9 LOAD_CONST               2 (True) 
             12 CALL_FUNCTION          257 (1 positional, 1 keyword pair)
             15 RETURN_VALUE
History
Date User Action Args
2011-04-10 21:11:40rhettingersetrecipients: + rhettinger
2011-04-10 21:11:40rhettingersetmessageid: <1302469900.48.0.983863495872.issue11823@psf.upfronthosting.co.za>
2011-04-10 21:11:39rhettingerlinkissue11823 messages
2011-04-10 21:11:39rhettingercreate