summaryrefslogtreecommitdiff
path: root/Lib/opcode.py
diff options
context:
space:
mode:
authorLarry Hastings <larry@hastings.org>2013-11-23 14:49:22 -0800
committerLarry Hastings <larry@hastings.org>2013-11-23 14:49:22 -0800
commit3a9079742f2d71e6968823e155f3778473113538 (patch)
tree742dd59d633f184a06858baec56ab83c20192e59 /Lib/opcode.py
parent8d0d369067462080f5ea9d50416a12bee0ef3a6a (diff)
downloadcpython-git-3a9079742f2d71e6968823e155f3778473113538.tar.gz
Issue #19722: Added opcode.stack_effect(), which accurately
computes the stack effect of bytecode instructions.
Diffstat (limited to 'Lib/opcode.py')
-rw-r--r--Lib/opcode.py13
1 files changed, 13 insertions, 0 deletions
diff --git a/Lib/opcode.py b/Lib/opcode.py
index 78d12294e3..0bd1ee679c 100644
--- a/Lib/opcode.py
+++ b/Lib/opcode.py
@@ -8,6 +8,19 @@ __all__ = ["cmp_op", "hasconst", "hasname", "hasjrel", "hasjabs",
"haslocal", "hascompare", "hasfree", "opname", "opmap",
"HAVE_ARGUMENT", "EXTENDED_ARG", "hasnargs"]
+# It's a chicken-and-egg I'm afraid:
+# We're imported before _opcode's made.
+# With exception unheeded
+# (stack_effect is not needed)
+# Both our chickens and eggs are allayed.
+# --Larry Hastings, 2013/11/23
+
+try:
+ from _opcode import stack_effect
+ __all__.append('stack_effect')
+except ImportError:
+ pass
+
cmp_op = ('<', '<=', '==', '!=', '>', '>=', 'in', 'not in', 'is',
'is not', 'exception match', 'BAD')