diff options
author | Guido van Rossum <guido@python.org> | 2006-10-27 23:31:49 +0000 |
---|---|---|
committer | Guido van Rossum <guido@python.org> | 2006-10-27 23:31:49 +0000 |
commit | 4f72a78684bbfcdc43ceeabb240ceee54706c4b0 (patch) | |
tree | 743c27c5125dcef580cffe77395fe97bedf40d5f /Lib/compiler/pyassem.py | |
parent | fc2a0a8e3cb1d40fd965576060c28c8bd2ea1ad5 (diff) | |
download | cpython-git-4f72a78684bbfcdc43ceeabb240ceee54706c4b0.tar.gz |
Jiwon Seo's PEP 3102 implementation.
See SF#1549670.
The compiler package has not yet been updated.
Diffstat (limited to 'Lib/compiler/pyassem.py')
-rw-r--r-- | Lib/compiler/pyassem.py | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/Lib/compiler/pyassem.py b/Lib/compiler/pyassem.py index 5e3eb304a2..7f44d463e9 100644 --- a/Lib/compiler/pyassem.py +++ b/Lib/compiler/pyassem.py @@ -313,13 +313,15 @@ DONE = "DONE" class PyFlowGraph(FlowGraph): super_init = FlowGraph.__init__ - def __init__(self, name, filename, args=(), optimized=0, klass=None): + def __init__(self, name, filename, + args=(), kwonlyargs={}, optimized=0, klass=None): self.super_init() self.name = name self.filename = filename self.docstring = None self.args = args # XXX self.argcount = getArgCount(args) + self.kwonlyargs = kwonlyargs self.klass = klass if optimized: self.flags = CO_OPTIMIZED | CO_NEWLOCALS @@ -595,7 +597,9 @@ class PyFlowGraph(FlowGraph): argcount = self.argcount if self.flags & CO_VARKEYWORDS: argcount = argcount - 1 - return new.code(argcount, nlocals, self.stacksize, self.flags, + kwonlyargcount = len(self.kwonlyargs) + return new.code(argcount, kwonlyargcount, + nlocals, self.stacksize, self.flags, self.lnotab.getCode(), self.getConsts(), tuple(self.names), tuple(self.varnames), self.filename, self.name, self.lnotab.firstline, @@ -804,7 +808,8 @@ class StackDepthTracker: def CALL_FUNCTION_VAR_KW(self, argc): return self.CALL_FUNCTION(argc)-2 def MAKE_FUNCTION(self, argc): - return -argc + hi, lo = divmod(argc, 256) + return -(lo + hi * 2) def MAKE_CLOSURE(self, argc): # XXX need to account for free variables too! return -argc |