Pypy 3.6 tolerance

This commit is contained in:
rocky
2019-04-30 05:12:42 -04:00
parent c5d7944e65
commit a981db884c
6 changed files with 25 additions and 10 deletions

View File

@@ -58,7 +58,7 @@ entry_points = {
]} ]}
ftp_url = None ftp_url = None
install_requires = ['spark-parser >= 1.8.7, < 1.9.0', install_requires = ['spark-parser >= 1.8.7, < 1.9.0',
'xdis >= 4.0.0, < 4.1.0'] 'xdis >= 4.0.1, < 4.1.0']
license = 'GPL3' license = 'GPL3'
mailing_list = 'python-debugger@googlegroups.com' mailing_list = 'python-debugger@googlegroups.com'

View File

@@ -308,6 +308,12 @@ pypy-2.7 5.0 5.3 6.0:
pypy-3.2 2.4: pypy-3.2 2.4:
$(PYTHON) test_pythonlib.py --bytecode-pypy3.2 --verify $(PYTHON) test_pythonlib.py --bytecode-pypy3.2 --verify
#: PyPy 5.0.x with Python 3.6 ...
7.1:
$(PYTHON) test_pythonlib.py --bytecode-pypy3.6 --verify
clean: clean-py-dis clean-dis clean-unverified clean: clean-py-dis clean-dis clean-unverified
clean-dis: clean-dis:

View File

@@ -81,7 +81,7 @@ for vers in (2.7, 3.4, 3.5, 3.6):
for vers in (1.3, 1.4, 1.5, for vers in (1.3, 1.4, 1.5,
2.1, 2.2, 2.3, 2.4, 2.5, 2.6, 2.7, 2.1, 2.2, 2.3, 2.4, 2.5, 2.6, 2.7,
3.0, 3.1, 3.2, 3.3, 3.0, 3.1, 3.2, 3.3,
3.4, 3.5, 3.6, 3.7, 3.8, 'pypy3.2', 'pypy2.7'): 3.4, 3.5, 3.6, 3.7, 3.8, 'pypy3.2', 'pypy2.7', 'pypy3.6'):
bytecode = "bytecode_%s" % vers bytecode = "bytecode_%s" % vers
key = "bytecode-%s" % vers key = "bytecode-%s" % vers
test_options[key] = (bytecode, PYC, bytecode, vers) test_options[key] = (bytecode, PYC, bytecode, vers)

View File

@@ -171,7 +171,13 @@ class Python36Parser(Python35Parser):
for i, token in enumerate(tokens): for i, token in enumerate(tokens):
opname = token.kind opname = token.kind
if opname == 'FORMAT_VALUE': if opname == 'LOAD_ASSERT':
if 'PyPy' in customize:
rules_str = """
stmt ::= JUMP_IF_NOT_DEBUG stmts COME_FROM
"""
self.add_unique_doc_rules(rules_str, customize)
elif opname == 'FORMAT_VALUE':
rules_str = """ rules_str = """
expr ::= fstring_single expr ::= fstring_single
fstring_single ::= expr FORMAT_VALUE fstring_single ::= expr FORMAT_VALUE

View File

@@ -1,6 +1,6 @@
# Copyright (c) 2017 by Rocky Bernstein # Copyright (c) 2017, 2019 by Rocky Bernstein
""" """
Python PyPy 3.2 decompiler scanner. Python PyPy 3.5 decompiler scanner.
Does some additional massaging of xdis-disassembled instructions to Does some additional massaging of xdis-disassembled instructions to
make things easier for decompilation. make things easier for decompilation.

View File

@@ -19,23 +19,26 @@ JUMP_OPS = opc.JUMP_OPS
class Scanner36(Scanner3): class Scanner36(Scanner3):
def __init__(self, show_asm=None): def __init__(self, show_asm=None, is_pypy=False):
Scanner3.__init__(self, 3.6, show_asm) Scanner3.__init__(self, 3.6, show_asm, is_pypy)
return return
def ingest(self, co, classname=None, code_objects={}, show_asm=None): def ingest(self, co, classname=None, code_objects={}, show_asm=None):
tokens, customize = Scanner3.ingest(self, co, classname, code_objects, show_asm) tokens, customize = Scanner3.ingest(self, co, classname, code_objects, show_asm)
not_pypy36 = not (self.version == 3.6 and self.is_pypy)
for t in tokens: for t in tokens:
# The lowest bit of flags indicates whether the # The lowest bit of flags indicates whether the
# var-keyword argument is placed at the top of the stack # var-keyword argument is placed at the top of the stack
if t.op == self.opc.CALL_FUNCTION_EX and t.attr & 1: if ( not_pypy36 and
t.op == self.opc.CALL_FUNCTION_EX and t.attr & 1):
t.kind = 'CALL_FUNCTION_EX_KW' t.kind = 'CALL_FUNCTION_EX_KW'
pass pass
elif t.op == self.opc.CALL_FUNCTION_KW: elif t.op == self.opc.CALL_FUNCTION_KW:
t.kind = 'CALL_FUNCTION_KW_{t.attr}'.format(**locals()) t.kind = 'CALL_FUNCTION_KW_{t.attr}'.format(**locals())
elif t.op == self.opc.BUILD_MAP_UNPACK_WITH_CALL: elif ( not_pypy36 and
t.op == self.opc.BUILD_MAP_UNPACK_WITH_CALL ):
t.kind = 'BUILD_MAP_UNPACK_WITH_CALL_%d' % t.attr t.kind = 'BUILD_MAP_UNPACK_WITH_CALL_%d' % t.attr
elif t.op == self.opc.BUILD_TUPLE_UNPACK_WITH_CALL: elif ( not_pypy36 and t.op == self.opc.BUILD_TUPLE_UNPACK_WITH_CALL ):
t.kind = 'BUILD_TUPLE_UNPACK_WITH_CALL_%d' % t.attr t.kind = 'BUILD_TUPLE_UNPACK_WITH_CALL_%d' % t.attr
pass pass
return tokens, customize return tokens, customize