python testrunner/pypyjit_tests.py
in dir /Users/matti/build-worker-arm64/pypy-c-jit-macos-arm64/build (timeout 4000 secs)
watching logfiles {'pytestLog': 'pypyjit_new.log'}
argv: ['python', 'testrunner/pypyjit_tests.py']
environment:
HOME=/Users/matti
HOMEBREW_CELLAR=/opt/homebrew/Cellar
HOMEBREW_PREFIX=/opt/homebrew
HOMEBREW_REPOSITORY=/opt/homebrew
INFOPATH=/opt/homebrew/share/info:
LANG=en_US.UTF-8
LC_ADDRESS=en_AU.UTF-8
LC_IDENTIFICATION=en_AU.UTF-8
LC_MEASUREMENT=en_AU.UTF-8
LC_MONETARY=en_AU.UTF-8
LC_NAME=en_AU.UTF-8
LC_NUMERIC=en_AU.UTF-8
LC_PAPER=en_AU.UTF-8
LC_TELEPHONE=en_AU.UTF-8
LC_TIME=en_AU.UTF-8
LOGNAME=matti
OLDPWD=/Users/matti
PATH=/Users/matti/oss/pypy-arm64-buildbot/bin:/opt/homebrew/bin:/opt/homebrew/sbin:/Library/Frameworks/Python.framework/Versions/3.11/bin:/usr/local/bin:/System/Cryptexes/App/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin:/Library/Apple/usr/bin
PKG_CONFIG_PATH=/opt/homebrew/Cellar/openssl@1.1/1.1.1t/lib/pkgconfig
PWD=/Users/matti/build-worker-arm64/pypy-c-jit-macos-arm64/build
PYPY_USESSION_DIR=/tmp/buildbot-arm64
SHELL=/bin/zsh
SHLVL=2
SSH_CLIENT=10.0.0.15 50492 22
SSH_CONNECTION=10.0.0.15 50492 10.0.0.16 22
SSH_TTY=/dev/ttys000
TERM=xterm-256color
TMPDIR=/tmp/buildbot-arm64/pytest
USER=matti
_=/Users/matti/oss/pypy-arm64-buildbot/bin/buildslave
using PTY: False
/Users/matti/oss/pypy-arm64-buildbot/site-packages/hypothesis/extra/pytestplugin.py:61: HypothesisWarning:
You are using Pytest version 2.9.2. Hypothesis tests work with any test
runner, but our Pytest plugin requires Pytest 4.3 or newer.
Note that the Pytest developers no longer support this version either!
Disabling the Hypothesis pytest plugin...
warnings.warn(PYTEST_TOO_OLD_MESSAGE % (pytest.__version__,), HypothesisWarning)
============================= test session starts ==============================
platform darwin -- Python 2.7.18[pypy-7.3.17-final], pytest-2.9.2, py-1.4.29, pluggy-0.3.1
pytest-2.9.2 from /Users/matti/build-worker-arm64/pypy-c-jit-macos-arm64/build/pytest.pyc
rootdir: /Users/matti/build-worker-arm64/pypy-c-jit-macos-arm64/build, inifile: pytest.ini
plugins: hypothesis-4.57.1
collected 1194 items / 1 skipped
pypy/module/pypyjit/test_pypy_c/test_00_model.py ........................
pypy/module/pypyjit/test_pypy_c/test_alloc.py ...................................................
pypy/module/pypyjit/test_pypy_c/test_array.py ....s...
pypy/module/pypyjit/test_pypy_c/test_boolrewrite.py ......................................................................................................................................................................................................................................................................................................................................
pypy/module/pypyjit/test_pypy_c/test_buffers.py ..
pypy/module/pypyjit/test_pypy_c/test_bug.py s
pypy/module/pypyjit/test_pypy_c/test_call.py .........................s.
pypy/module/pypyjit/test_pypy_c/test_capture_locals.py .
pypy/module/pypyjit/test_pypy_c/test_cprofile.py .
pypy/module/pypyjit/test_pypy_c/test_exception.py .....
pypy/module/pypyjit/test_pypy_c/test_ffi.py s..s......
pypy/module/pypyjit/test_pypy_c/test_generators.py ...
pypy/module/pypyjit/test_pypy_c/test_getframe.py ..
pypy/module/pypyjit/test_pypy_c/test_globals.py .
pypy/module/pypyjit/test_pypy_c/test_import.py ....
pypy/module/pypyjit/test_pypy_c/test_instance.py ...............
pypy/module/pypyjit/test_pypy_c/test_intbound.py ...................................................................................................................................................................................................................................................................................
pypy/module/pypyjit/test_pypy_c/test_itertools.py ..
pypy/module/pypyjit/test_pypy_c/test_jitlogparser.py F
pypy/module/pypyjit/test_pypy_c/test_math.py ..s..
pypy/module/pypyjit/test_pypy_c/test_micronumpy.py ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss
pypy/module/pypyjit/test_pypy_c/test_min_max.py ...
pypy/module/pypyjit/test_pypy_c/test_misc.py .......................
pypy/module/pypyjit/test_pypy_c/test_shift.py ...........................................................................................................................................................................................................................
pypy/module/pypyjit/test_pypy_c/test_string.py ......x............
pypy/module/pypyjit/test_pypy_c/test_struct.py ...F.F
pypy/module/pypyjit/test_pypy_c/test_thread.py ...
pypy/module/pypyjit/test_pypy_c/test_weakref.py .
=================================== FAILURES ===================================
______________________________ TestLogParser.test ______________________________
self = <pypy.module.pypyjit.test_pypy_c.test_jitlogparser.TestLogParser object at 0x000000015a8dc448>
def test(self):
def fn_with_bridges(N):
def is_prime(x):
for y in range(2, x):
if x % y == 0:
return False
return True
result = 0
for x in range(N):
if x % 3 == 0:
result += 5
elif x % 5 == 0:
result += 3
elif is_prime(x):
result += x
elif x == 99:
result *= 2
return result
#
N = 10000
_log = self.run(fn_with_bridges, [N])
log, loops = import_log(_log.logfile)
parse_log_counts(extract_category(log, 'jit-backend-count'), loops)
is_prime_loops = []
fn_with_bridges_loops = []
bridges = {}
for loop in loops:
if hasattr(loop, 'force_asm'):
try:
> loop.force_asm()
pypy/module/pypyjit/test_pypy_c/test_jitlogparser.py:45:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
rpython/tool/jitlogparser/parser.py:472: in <lambda>
dump_start=start_ofs))
rpython/tool/jitlogparser/parser.py:110: in postprocess
backend_tp, dump_start)
rpython/tool/jitlogparser/parser.py:151: in _asm_disassemble
return list(machine_code_dump(d, origin_addr, tp))
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
data = '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\...xca\x82\xd2P \xa0\xf20\x00\xc0\xf2\xb0\x13\x00\xf9\x10\x00\x80\xd2P \xa0\xf20\x00\xc0\xf2\x10\x00\xe0\xf2\x00\x02?\xd6'
originaddr = 4311881312L, backend_name = 'arm', label_list = None
def machine_code_dump(data, originaddr, backend_name, label_list=None):
objdump_machine_option = {
'x86': 'i386',
'x86-without-sse2': 'i386',
'x86_32': 'i386',
'x86_64': 'i386:x86-64',
'x86-64': 'i386:x86-64',
'i386': 'i386',
'arm': 'arm',
'arm_32': 'arm',
'aarch64': 'aarch64',
'ppc' : 'powerpc:common64',
'ppc-64' : 'powerpc:common64',
'riscv64': 'riscv:rv64',
's390x': 's390:64-bit',
}
machine_endianness = {
# default value: 'little'
'ppc' : sys.byteorder, # i.e. same as the running machine...
'ppc-64' : sys.byteorder, # i.e. same as the running machine...
's390x' : sys.byteorder, # i.e. same as the running machine...
}
cmd = find_objdump()
objdump = ('%(command)s -b binary -m %(machine)s '
'--endian=%(endianness)s '
'--disassembler-options=intel-mnemonics '
'--adjust-vma=%(origin)d -D %(file)s')
#
f = open(tmpfile, 'wb')
f.write(data)
f.close()
p = subprocess.Popen(objdump % {
'command': cmd,
'file': tmpfile,
'origin': originaddr,
'machine': objdump_machine_option[backend_name],
'endianness': machine_endianness.get(backend_name, 'little'),
}, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
stdout, stderr = p.communicate()
assert not p.returncode, ('Encountered an error running objdump: %s' %
> stderr)
E AssertionError: Encountered an error running objdump: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/objdump: error: unknown argument '-b'
rpython/jit/backend/tool/viewcode.py:82: AssertionError
----------------------------- Captured stdout call -----------------------------
loading symbols from /Users/matti/build-worker-arm64/pypy-c-jit-macos-arm64/build/pypy/goal/pypy3.11-c...
3 symbols found
----------------------------- Captured stderr call -----------------------------
0%..loaded
_______________________ TestStruct.test_unpack_bytearray _______________________
self = <pypy.module.pypyjit.test_pypy_c.test_struct.TestStruct object at 0x000000015ae286e8>
def test_unpack_bytearray(self):
def main(n):
import struct
buf = struct.pack('H', 0x1234)
buf = bytearray(buf)
i = 1
res = 0
while i < n:
val = struct.unpack("h", buf)[0] # ID: unpack
res += val
i += 1
return res
log = self.run(main, [1000])
assert log.result == main(1000)
loop, = log.loops_by_filename(self.filepath)
# the offset of gc_load_indexed_i used to be the constant 0. However,
# now it is 'i46' because we need to add 0 to
# W_BytearrayObject._offset
> assert loop.match_by_id('unpack', """
guard_not_invalidated(descr=...)
i70 = gc_load_indexed_i(p48, i46, 1, _, -2)
""")
pypy/module/pypyjit/test_pypy_c/test_struct.py:156:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
pypy/module/pypyjit/test_pypy_c/model.py:182: in match_by_id
return matcher.match(expected_src, ignore_ops=ignore_ops)
pypy/module/pypyjit/test_pypy_c/model.py:524: in match
self.match_loop(expected_ops, ignore_ops)
pypy/module/pypyjit/test_pypy_c/model.py:500: in match_loop
self.match_op(op, exp_op)
pypy/module/pypyjit/test_pypy_c/model.py:409: in match_op
self._assert(op.name == exp_opname, "operation mismatch")
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <pypy.module.pypyjit.test_pypy_c.model.OpMatcher object at 0x000000015b7c43a0>
cond = False, message = 'operation mismatch'
def _assert(self, cond, message):
if not cond:
> raise InvalidMatch(message, frame=sys._getframe(1))
E InvalidMatch: operation mismatch
pypy/module/pypyjit/test_pypy_c/model.py:402: InvalidMatch
----------------------------- Captured stdout call -----------------------------
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Loops don't match
=================
loop id = 'unpack'
('operation mismatch',)
<could not determine information>
Ignore ops: []
Got:
guard_not_invalidated(descr=<Guard0x1481e1eb0>)
===== HERE =====
setfield_gc(p12, i43, descr=<FieldS pypy.objspace.std.bytearrayobject.W_BytearrayObject.inst__exports 16>)
i74 = gc_load_indexed_i(p52, i46, 1, 16, -2)
Expected:
guard_not_invalidated(descr=...)
i70 = gc_load_indexed_i(p48, i46, 1, _, -2)
_____________________ TestStruct.test_pack_into_bytearray ______________________
self = <pypy.module.pypyjit.test_pypy_c.test_struct.TestStruct object at 0x000000014b12e950>
def test_pack_into_bytearray(self):
def main(n):
import struct
buf = bytearray(8)
i = 1
while i < n:
struct.pack_into("h", buf, 4, i) # ID: pack_into
i += 1
return i
log = self.run(main, [1000])
assert log.result == main(1000)
loop, = log.loops_by_filename(self.filepath)
> assert loop.match_by_id('pack_into', """\
dummy_get_utf8?
guard_not_invalidated(descr=...)
dummy_get_utf8?
p68 = getfield_gc_r(p14, descr=<FieldP pypy.objspace.std.bytearrayobject.W_BytearrayObject.inst__data \d+>)
i69 = getfield_gc_i(p68, descr=<FieldS list.length \d+>)
i70 = getfield_gc_i(p14, descr=<FieldS pypy.objspace.std.bytearrayobject.W_BytearrayObject.inst__offset \d+>)
i71 = int_sub(i69, i70)
i72 = int_sub(i71, 1)
i73 = int_sub(i71, 5)
i75 = int_lt(i73, 2)
guard_false(i75, descr=...)
i77 = int_le(i62, 32767)
guard_true(i77, descr=...)
p78 = getfield_gc_r(p68, descr=<FieldP list.items \d+>)
i81 = int_add(4, i70)
gc_store_indexed(p78, i81, i62, 1, _, 2, descr=<ArrayS 2>)
""")
pypy/module/pypyjit/test_pypy_c/test_struct.py:193:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
pypy/module/pypyjit/test_pypy_c/model.py:182: in match_by_id
return matcher.match(expected_src, ignore_ops=ignore_ops)
pypy/module/pypyjit/test_pypy_c/model.py:524: in match
self.match_loop(expected_ops, ignore_ops)
pypy/module/pypyjit/test_pypy_c/model.py:500: in match_loop
self.match_op(op, exp_op)
pypy/module/pypyjit/test_pypy_c/model.py:409: in match_op
self._assert(op.name == exp_opname, "operation mismatch")
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <pypy.module.pypyjit.test_pypy_c.model.OpMatcher object at 0x0000000129797de0>
cond = False, message = 'operation mismatch'
def _assert(self, cond, message):
if not cond:
> raise InvalidMatch(message, frame=sys._getframe(1))
E InvalidMatch: operation mismatch
pypy/module/pypyjit/test_pypy_c/model.py:402: InvalidMatch
----------------------------- Captured stdout call -----------------------------
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Loops don't match
=================
loop id = 'pack_into'
('operation mismatch',)
<could not determine information>
Ignore ops: []
Got:
guard_not_invalidated(descr=<Guard0x12876a380>)
===== HERE =====
i77 = int_add(i68, 1)
p78 = getfield_gc_r(p12, descr=<FieldP pypy.objspace.std.bytearrayobject.W_BytearrayObject.inst__data 8>)
i79 = getfield_gc_i(p78, descr=<FieldS list.length 8>)
i80 = getfield_gc_i(p12, descr=<FieldS pypy.objspace.std.bytearrayobject.W_BytearrayObject.inst__offset 24>)
i81 = int_sub(i79, i80)
i83 = int_sub(i81, 1)
i85 = int_sub(i81, 5)
setfield_gc(p12, i77, descr=<FieldS pypy.objspace.std.bytearrayobject.W_BytearrayObject.inst__exports 16>)
i87 = int_lt(i85, 2)
guard_false(i87, descr=<Guard0x128752de8>)
i89 = int_le(i70, 32767)
guard_true(i89, descr=<Guard0x12876a410>)
p90 = getfield_gc_r(p78, descr=<FieldP list.items 16>)
i92 = int_add(4, i80)
gc_store_indexed(p90, i92, i70, 1, 16, 2, descr=<ArrayS 2>)
i96 = getfield_gc_i(p12, descr=<FieldS pypy.objspace.std.bytearrayobject.W_BytearrayObject.inst__exports 16>)
i98 = int_le(i96, 0)
guard_false(i98, descr=<Guard0x128752e30>)
i100 = int_sub(i96, 1)
Expected:
dummy_get_utf8?
guard_not_invalidated(descr=...)
dummy_get_utf8?
p68 = getfield_gc_r(p14, descr=<FieldP pypy.objspace.std.bytearrayobject.W_BytearrayObject.inst__data \d+>)
i69 = getfield_gc_i(p68, descr=<FieldS list.length \d+>)
i70 = getfield_gc_i(p14, descr=<FieldS pypy.objspace.std.bytearrayobject.W_BytearrayObject.inst__offset \d+>)
i71 = int_sub(i69, i70)
i72 = int_sub(i71, 1)
i73 = int_sub(i71, 5)
i75 = int_lt(i73, 2)
guard_false(i75, descr=...)
i77 = int_le(i62, 32767)
guard_true(i77, descr=...)
p78 = getfield_gc_r(p68, descr=<FieldP list.items \d+>)
i81 = int_add(4, i70)
gc_store_indexed(p78, i81, i62, 1, _, 2, descr=<ArrayS 2>)
=========================== short test summary info ============================
FAIL pypy/module/pypyjit/test_pypy_c/test_jitlogparser.py::TestLogParser::()::test
FAIL pypy/module/pypyjit/test_pypy_c/test_struct.py::TestStruct::()::test_unpack_bytearray
FAIL pypy/module/pypyjit/test_pypy_c/test_struct.py::TestStruct::()::test_pack_into_bytearray
======= 3 failed, 1028 passed, 163 skipped, 1 xfailed in 115.87 seconds ========
program finished with exit code 1
elapsedTime=116.493404