mirror of
https://github.com/python/cpython.git
synced 2025-09-26 18:29:57 +00:00
SF patch 836879.
Don't generate code for asserts in -O mode.
This commit is contained in:
parent
4c989ddc9c
commit
2876f5ad21
1 changed files with 19 additions and 21 deletions
|
@ -707,27 +707,25 @@ class CodeGenerator:
|
||||||
def visitAssert(self, node):
|
def visitAssert(self, node):
|
||||||
# XXX would be interesting to implement this via a
|
# XXX would be interesting to implement this via a
|
||||||
# transformation of the AST before this stage
|
# transformation of the AST before this stage
|
||||||
end = self.newBlock()
|
if __debug__:
|
||||||
self.set_lineno(node)
|
end = self.newBlock()
|
||||||
# XXX __debug__ and AssertionError appear to be special cases
|
self.set_lineno(node)
|
||||||
# -- they are always loaded as globals even if there are local
|
# XXX AssertionError appears to be special case -- it is always
|
||||||
# names. I guess this is a sort of renaming op.
|
# loaded as a global even if there is a local name. I guess this
|
||||||
self.emit('LOAD_GLOBAL', '__debug__')
|
# is a sort of renaming op.
|
||||||
self.emit('JUMP_IF_FALSE', end)
|
self.nextBlock()
|
||||||
self.nextBlock()
|
self.visit(node.test)
|
||||||
self.emit('POP_TOP')
|
self.emit('JUMP_IF_TRUE', end)
|
||||||
self.visit(node.test)
|
self.nextBlock()
|
||||||
self.emit('JUMP_IF_TRUE', end)
|
self.emit('POP_TOP')
|
||||||
self.nextBlock()
|
self.emit('LOAD_GLOBAL', 'AssertionError')
|
||||||
self.emit('POP_TOP')
|
if node.fail:
|
||||||
self.emit('LOAD_GLOBAL', 'AssertionError')
|
self.visit(node.fail)
|
||||||
if node.fail:
|
self.emit('RAISE_VARARGS', 2)
|
||||||
self.visit(node.fail)
|
else:
|
||||||
self.emit('RAISE_VARARGS', 2)
|
self.emit('RAISE_VARARGS', 1)
|
||||||
else:
|
self.nextBlock(end)
|
||||||
self.emit('RAISE_VARARGS', 1)
|
self.emit('POP_TOP')
|
||||||
self.nextBlock(end)
|
|
||||||
self.emit('POP_TOP')
|
|
||||||
|
|
||||||
def visitRaise(self, node):
|
def visitRaise(self, node):
|
||||||
self.set_lineno(node)
|
self.set_lineno(node)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue