summaryrefslogtreecommitdiff
path: root/Lib/compiler
diff options
context:
space:
mode:
authorJeremy Hylton <jeremy@alum.mit.edu>2005-10-20 19:59:25 +0000
committerJeremy Hylton <jeremy@alum.mit.edu>2005-10-20 19:59:25 +0000
commit0d45400bf5d6dc0f310a12d6e9d8d99395895c0b (patch)
tree39a310a36e115aafcf9fa5052440f9c0f9a7e201 /Lib/compiler
parenta778b23cb1c7c0ecede0c6821ffd5ed9e4d9f346 (diff)
downloadcpython-0d45400bf5d6dc0f310a12d6e9d8d99395895c0b.tar.gz
Merge ast-branch to head
This change implements a new bytecode compiler, based on a transformation of the parse tree to an abstract syntax defined in Parser/Python.asdl. The compiler implementation is not complete, but it is in stable enough shape to run the entire test suite excepting two disabled tests.
Diffstat (limited to 'Lib/compiler')
-rw-r--r--Lib/compiler/pyassem.py19
1 files changed, 9 insertions, 10 deletions
diff --git a/Lib/compiler/pyassem.py b/Lib/compiler/pyassem.py
index 0547eeb068..e1fb063193 100644
--- a/Lib/compiler/pyassem.py
+++ b/Lib/compiler/pyassem.py
@@ -364,16 +364,15 @@ class PyFlowGraph(FlowGraph):
def getCode(self):
"""Get a Python code object"""
- if self.stage == RAW:
- self.computeStackDepth()
- self.flattenGraph()
- if self.stage == FLAT:
- self.convertArgs()
- if self.stage == CONV:
- self.makeByteCode()
- if self.stage == DONE:
- return self.newCodeObject()
- raise RuntimeError, "inconsistent PyFlowGraph state"
+ assert self.stage == RAW
+ self.computeStackDepth()
+ self.flattenGraph()
+ assert self.stage == FLAT
+ self.convertArgs()
+ assert self.stage == CONV
+ self.makeByteCode()
+ assert self.stage == DONE
+ return self.newCodeObject()
def dump(self, io=None):
if io: