virt_test\Scripts\python.exe testrunner/runner.py --logfile=testrun.log --config=pypy/testrunner_cfg.py --config=~/machine_cfg.py --root=pypy --timeout=4000 in dir d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build (timeout 4000 secs) watching logfiles {'pytestLog': 'testrun.log'} argv: ['virt_test\\Scripts\\python.exe', 'testrunner/runner.py', '--logfile=testrun.log', '--config=pypy/testrunner_cfg.py', '--config=~/machine_cfg.py', '--root=pypy', '--timeout=4000'] environment: ALLUSERSPROFILE=C:\ProgramData APPDATA=C:\Users\matti\AppData\Roaming ASL.LOG=Destination=file CHOCOLATEYINSTALL=C:\ProgramData\chocolatey CHOCOLATEYLASTPATHUPDATE=133185086718935289 CHOCOLATEYTOOLSLOCATION=C:\tools CLINK_DIR=C:\Program Files (x86)\clink\0.4.9 COMMONPROGRAMFILES=C:\Program Files (x86)\Common Files COMMONPROGRAMFILES(X86)=C:\Program Files (x86)\Common Files COMMONPROGRAMW6432=C:\Program Files\Common Files COMPUTERNAME=DESKTOP-RYZEN COMSPEC=C:\WINDOWS\system32\cmd.exe CONDA_BAT=d:\miniconda\condabin\conda.bat CONDA_EXE=d:\miniconda\Scripts\conda.exe CONDA_SHLVL=0 CUDA_PATH=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.7 CUDA_PATH_V11_7=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.7 DRIVERDATA=C:\Windows\System32\Drivers\DriverData LOCALAPPDATA=C:\Users\matti\AppData\Local NUMBER_OF_PROCESSORS=2 NVTOOLSEXT_PATH=C:\Program Files\NVIDIA Corporation\NvToolsExt\ OS=Windows_NT PATH=d:\CPython27\lib\site-packages\pywin32_system32;d:\pypy_stuff\pypy\externals\bin;D:\CPython27;D:\pypy_stuff\pypy2.7-v7.3.18\Scripts;D:\pypy_stuff\pypy2.7-v7.3.18;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\TortoiseHg\;C:\Program Files\Git\cmd;C:\ProgramData\chocolatey\bin;C:\WINDOWS\System32\OpenSSH PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC PROCESSOR_ARCHITECTURE=x86 PROCESSOR_ARCHITEW6432=AMD64 PROCESSOR_IDENTIFIER=AMD64 Family 23 Model 113 Stepping 0, AuthenticAMD PROCESSOR_LEVEL=23 PROCESSOR_REVISION=7100 PROGRAMDATA=C:\ProgramData PROGRAMFILES=C:\Program Files (x86) PROGRAMFILES(X86)=C:\Program Files (x86) PROGRAMW6432=C:\Program Files PROMPT=$P$G PSMODULEPATH=%ProgramFiles%\WindowsPowerShell\Modules;C:\WINDOWS\system32\WindowsPowerShell\v1.0\Modules PUBLIC=C:\Users\Public PWD=d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build PYPYCHERRYPICK= PYPY_ENABLE_WINCONSOLEIO=1 PYTEST_XDIST_AUTO_NUM_WORKERS=4 PYTHONPATH=.; RTOOLS40_HOME=C:\rtools40 RTOOLS43_HOME=C:\rtools43 RTOOLS44_HOME=C:\rtools44 SYSTEMDRIVE=C: SYSTEMROOT=C:\WINDOWS TEMP=D:\SystemTemp TMP=D:\SystemTemp TMPDIR=d:\systemtemp\pytest USERDOMAIN=DESKTOP-RYZEN USERNAME=matti USERPROFILE=C:\Users\matti VS140COMNTOOLS=C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Tools\ WINDIR=C:\WINDOWS using PTY: False using config pypy/testrunner_cfg.py using config C:\Users\matti/machine_cfg.py running 4 parallel test workers setting MAKEFLAGS to ' ' (space) -- config/test -- interpreter/astcompiler/test -- interpreter/pyparser/test -- interpreter/test -- module/__builtin__/test -- module/__pypy__/test -- module/_ast/test -- module/_cffi_backend/test -- module/_codecs/test -- module/_continuation/test -- module/_cppyy/test -- module/_csv/test -- module/_demo/test -- module/_file/test -- module/_io/test -- module/_jitlog/test -- module/_locale/test -- module/_lsprof/test -- module/_md5/test -- module/_minimal_curses/test -- module/_multibytecodec/test -- module/_multiprocessing/test -- module/_pypyjson/test -- module/_random/test -- module/_rawffi/alt/test -- module/_rawffi/test -- module/_sha/test -- module/_socket/test -- module/_sre/test -- module/_vmprof/test -- module/_warnings/test -- module/_weakref/test -- module/_winreg/test -- module/array/test -- module/binascii/test -- module/bz2/test -- module/cStringIO/test -- module/cmath/test -- module/cpyext/test/test_abstract.py -- module/cpyext/test/test_api.py -- module/cpyext/test/test_arraymodule.py -- module/cpyext/test/test_boolobject.py -- module/cpyext/test/test_borrow.py -- module/cpyext/test/test_bufferobject.py -- module/cpyext/test/test_bytearrayobject.py -- module/cpyext/test/test_bytesobject.py -- module/cpyext/test/test_capsule.py -- module/cpyext/test/test_cell.py -- module/cpyext/test/test_classobject.py -- module/cpyext/test/test_codecs.py -- module/cpyext/test/test_complexobject.py -- module/cpyext/test/test_cpyext.py -- module/cpyext/test/test_datetime.py -- module/cpyext/test/test_dictobject.py -- module/cpyext/test/test_eval.py -- module/cpyext/test/test_fileobject.py -- module/cpyext/test/test_floatobject.py -- module/cpyext/test/test_frameobject.py -- module/cpyext/test/test_funcobject.py -- module/cpyext/test/test_genobject.py -- module/cpyext/test/test_getargs.py -- module/cpyext/test/test_import.py -- module/cpyext/test/test_intobject.py -- module/cpyext/test/test_iterator.py -- module/cpyext/test/test_listobject.py -- module/cpyext/test/test_longobject.py -- module/cpyext/test/test_mapping.py -- module/cpyext/test/test_marshal.py -- module/cpyext/test/test_memoryobject.py -- module/cpyext/test/test_methodobject.py -- module/cpyext/test/test_misc.py -- module/cpyext/test/test_module.py -- module/cpyext/test/test_ndarrayobject.py -- module/cpyext/test/test_number.py -- module/cpyext/test/test_object.py -- module/cpyext/test/test_pycobject.py -- module/cpyext/test/test_pyerrors.py -- module/cpyext/test/test_pyfile.py -- module/cpyext/test/test_pysignals.py -- module/cpyext/test/test_pystate.py -- module/cpyext/test/test_pystrtod.py -- module/cpyext/test/test_sequence.py -- module/cpyext/test/test_setobject.py -- module/cpyext/test/test_sliceobject.py -- module/cpyext/test/test_structseq.py -- module/cpyext/test/test_sysmodule.py -- module/cpyext/test/test_thread.py -- module/cpyext/test/test_traceback.py -- module/cpyext/test/test_translate.py -- module/cpyext/test/test_tupleobject.py -- module/cpyext/test/test_typeobject.py -- module/cpyext/test/test_unicodeobject.py -- module/cpyext/test/test_userslots.py -- module/cpyext/test/test_version.py -- module/cpyext/test/test_weakref.py -- module/crypt/test -- module/errno/test -- module/exceptions/test -- module/faulthandler/test -- module/fcntl/test -- module/gc/test -- module/imp/test -- module/itertools/test -- module/marshal/test -- module/math/test -- module/micronumpy/test -- module/mmap/test -- module/operator/test -- module/parser/test -- module/posix/test -- module/pwd/test -- module/pyexpat/test -- module/pypyjit/test -- module/select/test -- module/signal/test -- module/struct/test -- module/sys/test -- module/termios/test -- module/test_lib_pypy -- module/thread/test -- module/time/test -- module/unicodedata/test -- module/zipimport/test -- module/zlib/test -- objspace/fake/test -- objspace/std/test -- objspace/test -- sandbox/test -- tool/bench/test -- tool/memusage/test -- tool/pytest/test -- tool/release/test -- tool/test -- total: 133 to run ++ 01:01:42 starting config/test [1 started in total] ++ 01:01:42 starting interpreter/astcompiler/test [2 started in total] ++ 01:01:42 starting interpreter/pyparser/test [3 started in total] ++ 01:01:42 starting interpreter/test [4 started in total] __ config/test [1 done in total, somefailed=False] ____________________________ ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.py rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 157 items / 1 skipped config\test\test_pypyoption.py ............................................................................................................................................................. =================== 157 passed, 1 skipped in 82.88 seconds ==================== ++ 01:03:11 starting module/__builtin__/test [5 started in total] __ interpreter/pyparser/test [2 done in total, somefailed=False] ______________ ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 119 items interpreter\pyparser\test\test_automata.py ... interpreter\pyparser\test\test_future.py ..................................... interpreter\pyparser\test\test_gendfa.py . interpreter\pyparser\test\test_metaparser.py ............... interpreter\pyparser\test\test_parser.py ............. interpreter\pyparser\test\test_parsestring.py ......... interpreter\pyparser\test\test_pyparse.py .................................... interpreter\pyparser\test\test_pytokenizer.py ..... ======================== 119 passed in 129.03 seconds ========================= ++ 01:03:55 starting module/__pypy__/test [6 started in total] __ interpreter/astcompiler/test [3 done in total, somefailed=False] ___________ ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 [platform:msg] Updated environment with vsver 160, using x64 True [platform:msg] Updated environment with vsver 160, using x64 True collected 447 items interpreter\astcompiler\test\apptest_misc.py . interpreter\astcompiler\test\test_ast.py ....... interpreter\astcompiler\test\test_astbuilder.py ..................................................... interpreter\astcompiler\test\test_compiler.py .......................................................................................................................................................................................................................................................................................................................................................................... interpreter\astcompiler\test\test_misc.py . interpreter\astcompiler\test\test_symtable.py ....................... ======================== 447 passed in 154.72 seconds ========================= ++ 01:04:24 starting module/_ast/test [7 started in total] __ module/__builtin__/test [4 done in total, somefailed=False] ________________ ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 [platform:msg] Updated environment with vsver 160, using x64 True [platform:msg] Updated environment with vsver 160, using x64 True collected 305 items module\__builtin__\test\apptest_compile.py ........ module\__builtin__\test\test_abstractinst.py ............ module\__builtin__\test\test_apply.py ... module\__builtin__\test\test_builtin.py ..............................................s..................... module\__builtin__\test\test_classobj.py ........................................................... module\__builtin__\test\test_descriptor.py .......................... module\__builtin__\test\test_filter.py ........... module\__builtin__\test\test_functional.py ................................................. module\__builtin__\test\test_minmax.py .......................... module\__builtin__\test\test_range.py ........................ module\__builtin__\test\test_rawinput.py ... module\__builtin__\test\test_reduce.py .... module\__builtin__\test\test_vars.py ... module\__builtin__\test\test_zip.py ......... =================== 304 passed, 1 skipped in 70.71 seconds ==================== ++ 01:04:26 starting module/_cffi_backend/test [8 started in total] __ module/__pypy__/test [5 done in total, somefailed=True] ____________________ ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 68 items module\__pypy__\test\test_builders.py ..... module\__pypy__\test\test_bytebuffer.py .. module\__pypy__\test\test_debug.py ...F... module\__pypy__\test\test_identitydict.py ...... module\__pypy__\test\test_intop.py ........... module\__pypy__\test\test_locals2fast.py ..... module\__pypy__\test\test_magic.py ....... module\__pypy__\test\test_newmemoryview.py ... module\__pypy__\test\test_os.py . module\__pypy__\test\test_signal.py ...ss module\__pypy__\test\test_special.py ............s module\__pypy__\test\test_time.py sss ================================== FAILURES =================================== ___________________ AppTestDebug.test_debug_read_timestamp ____________________ self = <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x0000013381966020> def test_debug_read_timestamp(self): from __pypy__ import debug_read_timestamp a = debug_read_timestamp() b = debug_read_timestamp() > assert b > a E (application-level) AssertionError: assert 892378936194000000 > 892378936194000000 [d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pypy\module\__pypy__\test\test_debug.py:52]:5: AssertionError =========================== short test summary info =========================== FAIL module\__pypy__\test\test_debug.py::AppTestDebug::()::test_debug_read_timestamp =============== 1 failed, 61 passed, 6 skipped in 64.15 seconds =============== ++ 01:05:03 starting module/_codecs/test [9 started in total] __ module/_ast/test [6 done in total, somefailed=False] _______________________ ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 36 items module\_ast\test\test_ast.py .................................... ========================= 36 passed in 32.87 seconds ========================== ++ 01:05:03 starting module/_continuation/test [10 started in total] __ module/_codecs/test [7 done in total, somefailed=False] ____________________ ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 65 items module\_codecs\test\test_codecs.py ................................................................ module\_codecs\test\test_ztranslation.py . ========================= 65 passed in 134.86 seconds ========================= ++ 01:07:23 starting module/_cppyy/test [11 started in total] __ module/_continuation/test [8 done in total, somefailed=False] ______________ ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 81 items / 1 skipped module\_continuation\test\test_generator.py ssss module\_continuation\test\test_greenlet.py s.ssssss.sssssssssssssss.sss module\_continuation\test\test_translated.py sssssssssssssssssssssssssssss module\_continuation\test\test_zpickle.py ssssssssssssssssssss =================== 3 passed, 79 skipped in 147.05 seconds ==================== ++ 01:07:38 starting module/_csv/test [12 started in total] __ module/_cppyy/test [9 done in total, somefailed=False] _____________________ ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 0 items ======================== no tests ran in 0.02 seconds ========================= ++ 01:07:39 starting module/_demo/test [13 started in total] __ module/_demo/test [10 done in total, somefailed=False] _____________________ ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 3 items module\_demo\test\test_import.py .. module\_demo\test\test_sieve.py . ========================== 3 passed in 26.15 seconds ========================== ++ 01:08:08 starting module/_file/test [14 started in total] __ module/_csv/test [11 done in total, somefailed=False] ______________________ ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 23 items module\_csv\test\test_dialect.py ......... module\_csv\test\test_reader.py ......... module\_csv\test\test_writer.py .... module\_csv\test\test_ztranslation.py . ========================= 23 passed in 35.11 seconds ========================== ++ 01:08:17 starting module/_io/test [15 started in total] __ module/_file/test [12 done in total, somefailed=False] _____________________ ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 269 items module\_file\test\test_file.py .....................ss..sss...... module\_file\test\test_file_extra.py ..................................................................................................................................................................ss..............ss..............ss..............ss...........s......s.s module\_file\test\test_large_file.py .s =================== 252 passed, 17 skipped in 86.66 seconds =================== ++ 01:09:37 starting module/_jitlog/test [16 started in total] __ module/_io/test [13 done in total, somefailed=False] _______________________ ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 [platform:msg] Updated environment with vsver 160, using x64 True [platform:msg] Updated environment with vsver 160, using x64 True collected 200 items module\_io\test\apptest_bytesio.py ............ module\_io\test\apptest_io.py ................................ module\_io\test\apptest_stringio.py ......................... module\_io\test\apptest_textio.py ........................... module\_io\test\test_bufferedio.py .............................................................................. module\_io\test\test_fileio.py ...............s...... module\_io\test\test_interp_textio.py .... =================== 199 passed, 1 skipped in 128.24 seconds =================== ++ 01:10:30 starting module/_locale/test [17 started in total] __ module/_jitlog/test [14 done in total, somefailed=False] ___________________ ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 1 items module\_jitlog\test\test__jitlog.py s ========================= 1 skipped in 50.11 seconds ========================== ++ 01:10:30 starting module/_lsprof/test [18 started in total] __ module/_locale/test [15 done in total, somefailed=True] ____________________ ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 14 items module\_locale\test\test_locale.py .......F.ssss. ================================== FAILURES =================================== ______________________ AppTestLocaleTrivia.test_strxfrm _______________________ self = <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x0000022c1b225ef8> def test_strxfrm(self): # TODO more tests would be nice import _locale _locale.setlocale(_locale.LC_ALL, "C") a = "1234" b = _locale.strxfrm(a) > assert a is not b E (application-level) AssertionError: assert '1234' is not '1234' [d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pypy\module\_locale\test\test_locale.py:186]:8: AssertionError =========================== short test summary info =========================== FAIL module\_locale\test\test_locale.py::AppTestLocaleTrivia::()::test_strxfrm =============== 1 failed, 9 passed, 4 skipped in 33.52 seconds ================ ++ 01:11:09 starting module/_md5/test [19 started in total] __ module/_lsprof/test [16 done in total, somefailed=False] ___________________ ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 6 items module\_lsprof\test\test_cprofile.py ...... ========================== 6 passed in 37.49 seconds ========================== ++ 01:11:15 starting module/_minimal_curses/test [20 started in total] __ module/_md5/test [17 done in total, somefailed=False] ______________________ ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 6 items module\_md5\test\test_md5.py .s.... ==================== 5 passed, 1 skipped in 50.46 seconds ===================== ++ 01:12:02 starting module/_multibytecodec/test [21 started in total] __ module/_minimal_curses/test [18 done in total, somefailed=False] ___________ ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 6 items [platform:msg] Updated environment with vsver 160, using x64 True [platform:msg] Updated environment with vsver 160, using x64 True module\_minimal_curses\test\test_curses.py ssssss ========================= 6 skipped in 65.23 seconds ========================== ++ 01:12:24 starting module/_multiprocessing/test [22 started in total] __ module/_cffi_backend/test [19 done in total, somefailed=True] ______________ [platform:msg] Updated environment with vsver 160, using x64 True ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 466 items module\_cffi_backend\test\test_c.py s..............................................................................ssss.s....................................................s.....s...................sss...........................s...s........................s...... module\_cffi_backend\test\test_fastpath.py .................. module\_cffi_backend\test\test_ffi_obj.py ............................................. module\_cffi_backend\test\test_file.py s.. module\_cffi_backend\test\test_parse_c_type.py ..............s... module\_cffi_backend\test\test_re_python.py .................s.. module\_cffi_backend\test\test_recompiler.py FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFsFFsFFFFFFFFFFFFssssFFsFsFssFFFFFFF module\_cffi_backend\test\test_unicode_literals.py ....... module\_cffi_backend\test\test_wchar_helper.py . module\_cffi_backend\test\test_ztranslation.py s ================================== FAILURES =================================== _______________________ AppTestRecompiler.test_math_sin _______________________ self = <CallInfo when='call' exception: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2> func = <function <lambda> at 0x000002791c700110>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ..\_pytest\runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ..\_pytest\runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_math_sin'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_math_sin'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ..\_pytest\vendored_packages\pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00000279153616a8> hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_math_sin'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_math_sin'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ..\_pytest\vendored_packages\pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_math_sin'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_math_sin'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ..\_pytest\vendored_packages\pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_math_sin'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791ace2ef8> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...t_math_sin'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002791b5c3ca0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002791b5c3ca0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...t_math_sin'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_math_sin'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791ace2ea8> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...t_math_sin'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002791b5c3c60> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002791b5c3c60> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...t_math_sin'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_math_sin'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ..\_pytest\vendored_packages\pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_math_sin'> def pytest_runtest_call(item): try: > item.runtest() ..\_pytest\runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_math_sin'> def runtest(self): target = self.obj if self.config.option.runappdirect: return target() space = target.im_self.space filename = self._getdynfilename(target) func = app2interp_temp(target.im_func, filename=filename) w_instance = self.parent.w_instance > self.execute_appex(space, func, space, w_instance) tool\pytest\apptest.py:89: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_math_sin'>, space = StdObjSpace target = <function test_math_sin at 0x000002791c700188> args = (StdObjSpace, <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>) def execute_appex(self, space, target, *args): self.space = space try: > target(*args) tool\pytest\apptest.py:30: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) w_func = <Function test_math_sin> args = <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8> def appcaller(space, *args_w): if not isinstance(space, ObjSpace): raise TypeError("first argument must be a space instance.") # the last argument can be an Arguments w_func = self.wget(space, name) if not args_w: return space.call_function(w_func) else: args = args_w[-1] assert args is not None if not isinstance(args, Arguments): > return space.call_function(w_func, *args_w) interpreter\gateway.py:1227: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <Function test_math_sin> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) nargs = 1, Function = <class 'pypy.interpreter.function.Function'> Method = <class 'pypy.interpreter.function.Method'> def call_function(self, w_func, *args_w): nargs = len(args_w) # used for pruning funccall versions if not self.config.objspace.disable_call_speedhacks and nargs < 5: # start of hack for performance from pypy.interpreter.function import Function, Method if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: if nargs < 4: func = w_func.w_function if isinstance(func, Function): return func.funccall(w_inst, *args_w) elif args_w and ( self.abstract_isinstance_w(args_w[0], w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): > return w_func.funccall(*args_w) interpreter\baseobjspace.py:1210: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <Function test_math_sin> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) gateway = <module 'pypy.interpreter.gateway' from 'd:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\interpreter\\gateway.pyc'> PyCode = <class 'pypy.interpreter.pycode.PyCode'> code = <code object test_math_sin, file '[d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:141]', line 1> def funccall(self, *args_w): # speed hack from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit nargs = len(args_w) fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, args_w[0]) elif nargs == 2: assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, args_w[0], args_w[1]) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) return code.fastcall_3(self.space, self, args_w[0], args_w[1], args_w[2]) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) return code.fastcall_4(self.space, self, args_w[0], args_w[1], args_w[2], args_w[3]) elif (nargs | PyCode.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) if nargs < 5: new_frame = self.space.createframe(code, self.w_func_globals, self) for i in funccallunrolling: if i < nargs: new_frame.locals_cells_stack_w[i] = args_w[i] > return new_frame.run() interpreter\function.py:118: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_math_sin...uild\pypy\module\_cffi_backend\test\test_recompiler.py:141]', line 1> at line 6 def run(self): """Start this frame's execution.""" if self.getcode().co_flags & pycode.CO_GENERATOR: from pypy.interpreter.generator import GeneratorIterator return GeneratorIterator(self) else: > return self.execute_frame() interpreter\pyframe.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_math_sin...uild\pypy\module\_cffi_backend\test\test_recompiler.py:141]', line 1> at line 6 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, executioncontext) except OperationError: raise except Exception as e: # general fall-back > raise self._convert_unexpected_exception(e) interpreter\pyframe.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_math_sin...uild\pypy\module\_cffi_backend\test\test_recompiler.py:141]', line 1> at line 6 e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def _convert_unexpected_exception(self, e): from pypy.interpreter import error > operr = error.get_converted_unexpected_exception(self.space, e) interpreter\pyframe.py:943: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_math_sin...uild\pypy\module\_cffi_backend\test\test_recompiler.py:141]', line 1> at line 6 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, > executioncontext) interpreter\pyframe.py:286: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_math_sin...uild\pypy\module\_cffi_backend\test\test_recompiler.py:141]', line 1> at line 6 pycode = <code object test_math_sin, file '[d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:141]', line 1> next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def dispatch(self, pycode, next_instr, ec): # For the sequel, force 'next_instr' to be unsigned for performance next_instr = r_uint(next_instr) co_code = pycode.co_code try: while True: > next_instr = self.handle_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:64: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_math_sin...uild\pypy\module\_cffi_backend\test\test_recompiler.py:141]', line 1> at line 6 co_code = 'd\x01\x00d\x00\x00l\x00\x00}\x01\x00|\x00\x00\xc9\x01\x00d\x02\x00d\x03\x00d\x04\x00\xca\x03\x00\\\x02\x00}\x02\x00}\...9\x02\x00d\x05\x00\xca\x01\x00|\x01\x00\xc9\x02\x00d\x05\x00\xca\x01\x00k\x02\x00sN\x00t\x03\x00\x82\x01\x00d\x00\x00S' next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def handle_bytecode(self, co_code, next_instr, ec): try: > next_instr = self.dispatch_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:71: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_math_sin...uild\pypy\module\_cffi_backend\test\test_recompiler.py:141]', line 1> at line 6 co_code = 'd\x01\x00d\x00\x00l\x00\x00}\x01\x00|\x00\x00\xc9\x01\x00d\x02\x00d\x03\x00d\x04\x00\xca\x03\x00\\\x02\x00}\x02\x00}\...9\x02\x00d\x05\x00\xca\x01\x00|\x01\x00\xc9\x02\x00d\x05\x00\xca\x01\x00k\x02\x00sN\x00t\x03\x00\x82\x01\x00d\x00\x00S' next_instr = 30L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> @jit.unroll_safe def dispatch_bytecode(self, co_code, next_instr, ec): while True: self.last_instr = intmask(next_instr) if jit.we_are_jitted(): if self.debugdata: ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) else: # Only reload next_instr from last_instr when something that # can modify it actually ran (trace function or action # dispatcher). In the common case (no trace, positive ticker) # next_instr is unchanged and the round-trip is skipped. _d = self.debugdata if ec.space.reverse_debugging or ( _d is not None and _d.w_f_trace is not None) or ( not we_are_translated() and 'bytecode_only_trace' in ec.__dict__): ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) actionflag = ec.space.actionflag if actionflag.decrement_ticker(TICK_COUNTER_STEP) < 0: actionflag.action_dispatcher(ec, self) next_instr = r_uint(self.last_instr) opcode = ord(co_code[next_instr]) next_instr += 1 if opcode >= HAVE_ARGUMENT: lo = ord(co_code[next_instr]) hi = ord(co_code[next_instr+1]) next_instr += 2 oparg = (hi * 256) | lo else: oparg = 0 # note: the structure of the code here is such that it makes # (after translation) a big "if/elif" chain, which is then # turned into a switch(). while opcode == opcodedesc.EXTENDED_ARG.index: opcode = ord(co_code[next_instr]) if opcode < HAVE_ARGUMENT: raise BytecodeCorruption lo = ord(co_code[next_instr+1]) hi = ord(co_code[next_instr+2]) next_instr += 3 oparg = (oparg * 65536) | (hi * 256) | lo if opcode == opcodedesc.RETURN_VALUE.index: if not self.blockstack_non_empty(): self.frame_finished_execution = True # for generators raise Return w_returnvalue = self.popvalue() block = self.unrollstack(SReturnValue.kind) if block is None: self.pushvalue(w_returnvalue) raise Return else: unroller = SReturnValue(w_returnvalue) next_instr = block.handle(self, unroller) return next_instr # now inside a 'finally' block elif opcode == opcodedesc.END_FINALLY.index: unroller = self.end_finally() if isinstance(unroller, SuspendedUnroller): # go on unrolling the stack block = self.unrollstack(unroller.kind) if block is None: w_result = unroller.nomoreblocks() self.pushvalue(w_result) raise Return else: next_instr = block.handle(self, unroller) return next_instr elif opcode == opcodedesc.JUMP_ABSOLUTE.index: return self.jump_absolute(oparg, ec) elif opcode == opcodedesc.BREAK_LOOP.index: next_instr = self.BREAK_LOOP(oparg, next_instr) elif opcode == opcodedesc.CONTINUE_LOOP.index: return self.CONTINUE_LOOP(oparg, next_instr) elif opcode == opcodedesc.FOR_ITER.index: next_instr = self.FOR_ITER(oparg, next_instr) elif opcode == opcodedesc.JUMP_FORWARD.index: next_instr = self.JUMP_FORWARD(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_FALSE_OR_POP.index: next_instr = self.JUMP_IF_FALSE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_NOT_DEBUG.index: next_instr = self.JUMP_IF_NOT_DEBUG(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_TRUE_OR_POP.index: next_instr = self.JUMP_IF_TRUE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_FALSE.index: next_instr = self.POP_JUMP_IF_FALSE(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_TRUE.index: next_instr = self.POP_JUMP_IF_TRUE(oparg, next_instr) elif opcode == opcodedesc.BINARY_ADD.index: self.BINARY_ADD(oparg, next_instr) elif opcode == opcodedesc.BINARY_AND.index: self.BINARY_AND(oparg, next_instr) elif opcode == opcodedesc.BINARY_DIVIDE.index: self.BINARY_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_FLOOR_DIVIDE.index: self.BINARY_FLOOR_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_LSHIFT.index: self.BINARY_LSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_MODULO.index: self.BINARY_MODULO(oparg, next_instr) elif opcode == opcodedesc.BINARY_MULTIPLY.index: self.BINARY_MULTIPLY(oparg, next_instr) elif opcode == opcodedesc.BINARY_OR.index: self.BINARY_OR(oparg, next_instr) elif opcode == opcodedesc.BINARY_POWER.index: self.BINARY_POWER(oparg, next_instr) elif opcode == opcodedesc.BINARY_RSHIFT.index: self.BINARY_RSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBSCR.index: self.BINARY_SUBSCR(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBTRACT.index: self.BINARY_SUBTRACT(oparg, next_instr) elif opcode == opcodedesc.BINARY_TRUE_DIVIDE.index: self.BINARY_TRUE_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_XOR.index: self.BINARY_XOR(oparg, next_instr) elif opcode == opcodedesc.BUILD_CLASS.index: self.BUILD_CLASS(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST.index: self.BUILD_LIST(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST_FROM_ARG.index: self.BUILD_LIST_FROM_ARG(oparg, next_instr) elif opcode == opcodedesc.BUILD_MAP.index: self.BUILD_MAP(oparg, next_instr) elif opcode == opcodedesc.BUILD_SET.index: self.BUILD_SET(oparg, next_instr) elif opcode == opcodedesc.BUILD_SLICE.index: self.BUILD_SLICE(oparg, next_instr) elif opcode == opcodedesc.BUILD_TUPLE.index: self.BUILD_TUPLE(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION.index: self.CALL_FUNCTION(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_KW.index: self.CALL_FUNCTION_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR.index: self.CALL_FUNCTION_VAR(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR_KW.index: self.CALL_FUNCTION_VAR_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_METHOD.index: > self.CALL_METHOD(oparg, next_instr) interpreter\pyopcode.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ f = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_math_sin...uild\pypy\module\_cffi_backend\test\test_recompiler.py:141]', line 1> at line 6 oparg = 3, ignored = (30L,), n_args = 3, n_kwargs = 0, w_self = None @jit.unroll_safe def CALL_METHOD(f, oparg, *ignored): # opargs contains the arg, and kwarg count, excluding the implicit 'self' n_args = oparg & 0xff n_kwargs = (oparg >> 8) & 0xff w_self = f.peekvalue_maybe_none(n_args + (2 * n_kwargs)) n = n_args + (w_self is not None) if not n_kwargs: w_callable = f.peekvalue(n_args + (2 * n_kwargs) + 1) w_result = f.space.call_valuestack( > w_callable, n, f, methodcall=w_self is not None, dropvalues=n_args + 2) objspace\std\callmethod.py:96: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_math_sin...uild\pypy\module\_cffi_backend\test\test_recompiler.py:141]', line 1> at line 6 dropvalues = 5, methodcall = False def call_valuestack(self, w_func, nargs, frame, dropvalues, methodcall=False): # methodcall is only used for better error messages in argument.py from pypy.interpreter.function import Function, Method, is_builtin_code if frame.get_is_being_profiled() and is_builtin_code(w_func): # XXX: this code is copied&pasted :-( from the slow path below # call_valuestack(). args = frame.make_arguments(nargs) frame.dropvalues(dropvalues) return self.call_args_and_c_profile(frame, w_func, args) if not self.config.objspace.disable_call_speedhacks: # start of hack for performance if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: w_func = w_func.w_function # reuse callable stack place for w_inst frame.settopvalue(w_inst, nargs) nargs += 1 methodcall = True elif nargs > 0 and ( self.abstract_isinstance_w(frame.peekvalue(nargs-1), # :-( w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): return w_func.funccall_valuestack( > nargs, frame, methodcall=methodcall, dropvalues=dropvalues) interpreter\baseobjspace.py:1243: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_math_sin...uild\pypy\module\_cffi_backend\test\test_recompiler.py:141]', line 1> at line 6 dropvalues = 5, methodcall = False def funccall_valuestack(self, nargs, frame, dropvalues, methodcall=False): # speed hack # methodcall is only for better error messages from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit # if (jit.we_are_jitted() and code is self.space._code_of_sys_exc_info and nargs == 0): frame.dropvalues(dropvalues) from pypy.module.sys.vm import exc_info_direct return exc_info_direct(self.space, frame) # fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: f_0 = frame.peekvalue(0) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, f_0) elif nargs == 2: f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, f_1, f_0) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) frame.dropvalues(dropvalues) return code.fastcall_3(self.space, self, f_2, f_1, f_0) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) f_3 = frame.peekvalue(3) frame.dropvalues(dropvalues) return code.fastcall_4(self.space, self, f_3, f_2, f_1, f_0) elif (nargs | Code.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) return self._flat_pycall(code, nargs, frame, dropvalues) elif fast_natural_arity & Code.FLATPYCALL: natural_arity = fast_natural_arity & 0xff if natural_arity > nargs >= natural_arity - len(self.defs_w): assert isinstance(code, PyCode) return self._flat_pycall_defaults(code, nargs, frame, natural_arity - nargs, dropvalues) elif fast_natural_arity == Code.PASSTHROUGHARGS1 and nargs >= 1: assert isinstance(code, gateway.BuiltinCodePassThroughArguments1) w_obj = frame.peekvalue(nargs-1) args = frame.make_arguments(nargs-1) frame.dropvalues(dropvalues) return code.funcrun_obj(self, w_obj, args) args = frame.make_arguments(nargs, methodcall=methodcall) frame.dropvalues(dropvalues) > return self.call_args(args) interpreter\function.py:190: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('float sin(double); double cos(double);'), W_BytesObject('test_math_sin'), W_BytesObject('#include <math.h>')]) def call_args(self, args): # delegate activation to code > w_res = self.getcode().funcrun(self, args) interpreter\function.py:68: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('float sin(double); double cos(double);'), W_BytesObject('test_math_sin'), W_BytesObject('#include <math.h>')]) def funcrun(self, func, args): > return BuiltinCode.funcrun_obj(self, func, None, args) interpreter\gateway.py:781: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('float sin(double); double cos(double);'), W_BytesObject('test_math_sin'), W_BytesObject('#include <math.h>')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: w_result = activation._run(space, scope_w) except DescrMismatch: if w_obj is not None: args = args.prepend(w_obj) return self._type_unwrap_mismatch(space, args) except Exception as e: > self.handle_exception(space, e) interpreter\gateway.py:795: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> space = StdObjSpace e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def handle_exception(self, space, e): try: if not we_are_translated(): raise raise e except OperationError: raise except Exception as e: # general fall-back from pypy.interpreter import error > raise error.get_converted_unexpected_exception(space, e) interpreter\gateway.py:819: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('float sin(double); double cos(double);'), W_BytesObject('test_math_sin'), W_BytesObject('#include <math.h>')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: > w_result = activation._run(space, scope_w) interpreter\gateway.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinActivation_UwS_ObjSpace_text_text_text_W_Root_W_Root_W_Root_int_W_Root object at 0x000002791c13af38> space = StdObjSpace scope_w = [W_BytesObject('float sin(double); double cos(double);'), W_BytesObject('test_math_sin'), W_BytesObject('#include <math.h>'), None, None, None, ...] def _run(self, space, scope_w): > return self.behavior(space, space.text_w(scope_w[0]), space.text_w(scope_w[1]), space.text_w(scope_w[2]), scope_w[3], scope_w[4], scope_w[5], space.gateway_int_w(scope_w[6]), scope_w[7]) <3152-codegen d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\rpython\tool\sourcetools.py:200>:3: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace, cdef = 'float sin(double); double cos(double);' module_name = '_CFFI_test_math_sin', source = '#include <math.h>' w_includes = None, w_extra_source = None, w_min_version = None, packed = 0 w_extra_compile_args = None @unwrap_spec(cdef='text', module_name='text', source='text', packed=int) def prepare(space, cdef, module_name, source, w_includes=None, w_extra_source=None, w_min_version=None, packed=False, w_extra_compile_args=None): try: import cffi from cffi import FFI # <== the system one, which from cffi import recompiler # needs to be at least cffi 1.0.4 from cffi import ffiplatform except ImportError: pytest.skip("system cffi module not found or older than 1.0.0") if w_min_version is None: min_version = (1, 4, 0) else: min_version = tuple(space.unwrap(w_min_version)) if cffi.__version_info__ < min_version: pytest.skip("system cffi module needs to be at least %s, got %s" % ( min_version, cffi.__version_info__)) space.appexec([], """(): import _cffi_backend # force it to be initialized """) includes = [] if w_includes: includes += space.unpackiterable(w_includes) assert module_name.startswith('test_') module_name = '_CFFI_' + module_name rdir = udir.ensure('recompiler', dir=1) rdir.join('Python.h').write( '#include <stdio.h>\n' '#define PYPY_VERSION XX\n' '#define PyMODINIT_FUNC /*exported*/ void\n' ) path = module_name.replace('.', os.sep) if '.' in module_name: subrdir = rdir.join(module_name[:module_name.index('.')]) os.mkdir(str(subrdir)) else: subrdir = rdir c_file = str(rdir.join('%s.c' % path)) ffi = FFI() for include_ffi_object in includes: ffi.include(include_ffi_object._test_recompiler_source_ffi) ffi.cdef(cdef, packed=packed) ffi.set_source(module_name, source) ffi.emit_c_code(c_file) base_module_name = module_name.split('.')[-1] sources = [] if w_extra_source is not None: sources.append(space.str_w(w_extra_source)) kwargs = {} # GCC 14 promotes -Wincompatible-pointer-types from a warning to an error # by default, which breaks cffi's intentionally-mismatched field-check # probes (e.g. test_misdeclared_field_1). Keep it a warning so the module # compiles and cffi's runtime checks can run. extra = ['-Wno-error=incompatible-pointer-types'] if w_extra_compile_args is not None: extra = extra + space.unwrap(w_extra_compile_args) kwargs['extra_compile_args'] = extra ext = ffiplatform.get_extension(c_file, module_name, include_dirs=[str(rdir)], export_symbols=['_cffi_pypyinit_' + base_module_name], sources=sources, **kwargs) > ffiplatform.compile(str(rdir), ext) module\_cffi_backend\test\test_recompiler.py:86: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x000002791ce34760> compiler_verbose = 0, debug = None def compile(tmpdir, ext, compiler_verbose=0, debug=None): """Compile a C extension module using distutils.""" saved_environ = os.environ.copy() try: > outputfilename = _build(tmpdir, ext, compiler_verbose, debug) d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x000002791ce34760> compiler_verbose = 0, debug = 0 def _build(tmpdir, ext, compiler_verbose=0, debug=None): # XXX compact but horrible :-( from cffi._shimmed_dist_utils import Distribution, CompileError, LinkError, set_threshold, set_verbosity dist = Distribution({'ext_modules': [ext]}) dist.parse_config_files() options = dist.get_option_dict('build_ext') if debug is None: debug = sys.flags.debug options['debug'] = ('ffiplatform', debug) options['force'] = ('ffiplatform', True) options['build_lib'] = ('ffiplatform', tmpdir) options['build_temp'] = ('ffiplatform', tmpdir) # try: old_level = set_threshold(0) or 0 try: set_verbosity(compiler_verbose) dist.run_command('build_ext') cmd_obj = dist.get_command_obj('build_ext') [soname] = cmd_obj.get_outputs() finally: set_threshold(old_level) except (CompileError, LinkError) as e: > raise VerificationError('%s: %s' % (e.__class__.__name__, e)) E VerificationError: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2 d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:54: VerificationError ---------------------------- Captured stdout call ----------------------------- generating d:\systemtemp\pytest\usession-main-595\recompiler\_CFFI_test_math_sin.c ---------------------------- Captured stderr call ----------------------------- cl : Command line error D8021 : invalid numeric argument '/Wno-error=incompatible-pointer-types' _______________________ AppTestRecompiler.test_repr_lib _______________________ self = <CallInfo when='call' exception: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2> func = <function <lambda> at 0x0000027925028bd8>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ..\_pytest\runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ..\_pytest\runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_repr_lib'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_repr_lib'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ..\_pytest\vendored_packages\pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00000279153616a8> hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_repr_lib'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_repr_lib'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ..\_pytest\vendored_packages\pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_repr_lib'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_repr_lib'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ..\_pytest\vendored_packages\pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_repr_lib'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791a707880> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...t_repr_lib'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00000279254aca60> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00000279254aca60> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...t_repr_lib'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_repr_lib'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791a7077e0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...t_repr_lib'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00000279254aca20> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00000279254aca20> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...t_repr_lib'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_repr_lib'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ..\_pytest\vendored_packages\pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_repr_lib'> def pytest_runtest_call(item): try: > item.runtest() ..\_pytest\runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_repr_lib'> def runtest(self): target = self.obj if self.config.option.runappdirect: return target() space = target.im_self.space filename = self._getdynfilename(target) func = app2interp_temp(target.im_func, filename=filename) w_instance = self.parent.w_instance > self.execute_appex(space, func, space, w_instance) tool\pytest\apptest.py:89: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_repr_lib'>, space = StdObjSpace target = <function test_repr_lib at 0x0000027925028c50> args = (StdObjSpace, <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>) def execute_appex(self, space, target, *args): self.space = space try: > target(*args) tool\pytest\apptest.py:30: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) w_func = <Function test_repr_lib> args = <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8> def appcaller(space, *args_w): if not isinstance(space, ObjSpace): raise TypeError("first argument must be a space instance.") # the last argument can be an Arguments w_func = self.wget(space, name) if not args_w: return space.call_function(w_func) else: args = args_w[-1] assert args is not None if not isinstance(args, Arguments): > return space.call_function(w_func, *args_w) interpreter\gateway.py:1227: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <Function test_repr_lib> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) nargs = 1, Function = <class 'pypy.interpreter.function.Function'> Method = <class 'pypy.interpreter.function.Method'> def call_function(self, w_func, *args_w): nargs = len(args_w) # used for pruning funccall versions if not self.config.objspace.disable_call_speedhacks and nargs < 5: # start of hack for performance from pypy.interpreter.function import Function, Method if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: if nargs < 4: func = w_func.w_function if isinstance(func, Function): return func.funccall(w_inst, *args_w) elif args_w and ( self.abstract_isinstance_w(args_w[0], w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): > return w_func.funccall(*args_w) interpreter\baseobjspace.py:1210: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <Function test_repr_lib> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) gateway = <module 'pypy.interpreter.gateway' from 'd:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\interpreter\\gateway.pyc'> PyCode = <class 'pypy.interpreter.pycode.PyCode'> code = <code object test_repr_lib, file '[d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:149]', line 1> def funccall(self, *args_w): # speed hack from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit nargs = len(args_w) fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, args_w[0]) elif nargs == 2: assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, args_w[0], args_w[1]) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) return code.fastcall_3(self.space, self, args_w[0], args_w[1], args_w[2]) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) return code.fastcall_4(self.space, self, args_w[0], args_w[1], args_w[2], args_w[3]) elif (nargs | PyCode.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) if nargs < 5: new_frame = self.space.createframe(code, self.w_func_globals, self) for i in funccallunrolling: if i < nargs: new_frame.locals_cells_stack_w[i] = args_w[i] > return new_frame.run() interpreter\function.py:118: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_repr_lib...uild\pypy\module\_cffi_backend\test\test_recompiler.py:149]', line 1> at line 5 def run(self): """Start this frame's execution.""" if self.getcode().co_flags & pycode.CO_GENERATOR: from pypy.interpreter.generator import GeneratorIterator return GeneratorIterator(self) else: > return self.execute_frame() interpreter\pyframe.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_repr_lib...uild\pypy\module\_cffi_backend\test\test_recompiler.py:149]', line 1> at line 5 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, executioncontext) except OperationError: raise except Exception as e: # general fall-back > raise self._convert_unexpected_exception(e) interpreter\pyframe.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_repr_lib...uild\pypy\module\_cffi_backend\test\test_recompiler.py:149]', line 1> at line 5 e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def _convert_unexpected_exception(self, e): from pypy.interpreter import error > operr = error.get_converted_unexpected_exception(self.space, e) interpreter\pyframe.py:943: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_repr_lib...uild\pypy\module\_cffi_backend\test\test_recompiler.py:149]', line 1> at line 5 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, > executioncontext) interpreter\pyframe.py:286: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_repr_lib...uild\pypy\module\_cffi_backend\test\test_recompiler.py:149]', line 1> at line 5 pycode = <code object test_repr_lib, file '[d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:149]', line 1> next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def dispatch(self, pycode, next_instr, ec): # For the sequel, force 'next_instr' to be unsigned for performance next_instr = r_uint(next_instr) co_code = pycode.co_code try: while True: > next_instr = self.handle_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:64: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_repr_lib...uild\pypy\module\_cffi_backend\test\test_recompiler.py:149]', line 1> at line 5 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x01\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00\xcc\x18\x00t\x01\x00|\x02\x00\x83\x01\x00d\x03\x00k\x02\x00s6\x00t\x02\x00\x82\x01\x00d\x00\x00S' next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def handle_bytecode(self, co_code, next_instr, ec): try: > next_instr = self.dispatch_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:71: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_repr_lib...uild\pypy\module\_cffi_backend\test\test_recompiler.py:149]', line 1> at line 5 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x01\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00\xcc\x18\x00t\x01\x00|\x02\x00\x83\x01\x00d\x03\x00k\x02\x00s6\x00t\x02\x00\x82\x01\x00d\x00\x00S' next_instr = 18L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> @jit.unroll_safe def dispatch_bytecode(self, co_code, next_instr, ec): while True: self.last_instr = intmask(next_instr) if jit.we_are_jitted(): if self.debugdata: ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) else: # Only reload next_instr from last_instr when something that # can modify it actually ran (trace function or action # dispatcher). In the common case (no trace, positive ticker) # next_instr is unchanged and the round-trip is skipped. _d = self.debugdata if ec.space.reverse_debugging or ( _d is not None and _d.w_f_trace is not None) or ( not we_are_translated() and 'bytecode_only_trace' in ec.__dict__): ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) actionflag = ec.space.actionflag if actionflag.decrement_ticker(TICK_COUNTER_STEP) < 0: actionflag.action_dispatcher(ec, self) next_instr = r_uint(self.last_instr) opcode = ord(co_code[next_instr]) next_instr += 1 if opcode >= HAVE_ARGUMENT: lo = ord(co_code[next_instr]) hi = ord(co_code[next_instr+1]) next_instr += 2 oparg = (hi * 256) | lo else: oparg = 0 # note: the structure of the code here is such that it makes # (after translation) a big "if/elif" chain, which is then # turned into a switch(). while opcode == opcodedesc.EXTENDED_ARG.index: opcode = ord(co_code[next_instr]) if opcode < HAVE_ARGUMENT: raise BytecodeCorruption lo = ord(co_code[next_instr+1]) hi = ord(co_code[next_instr+2]) next_instr += 3 oparg = (oparg * 65536) | (hi * 256) | lo if opcode == opcodedesc.RETURN_VALUE.index: if not self.blockstack_non_empty(): self.frame_finished_execution = True # for generators raise Return w_returnvalue = self.popvalue() block = self.unrollstack(SReturnValue.kind) if block is None: self.pushvalue(w_returnvalue) raise Return else: unroller = SReturnValue(w_returnvalue) next_instr = block.handle(self, unroller) return next_instr # now inside a 'finally' block elif opcode == opcodedesc.END_FINALLY.index: unroller = self.end_finally() if isinstance(unroller, SuspendedUnroller): # go on unrolling the stack block = self.unrollstack(unroller.kind) if block is None: w_result = unroller.nomoreblocks() self.pushvalue(w_result) raise Return else: next_instr = block.handle(self, unroller) return next_instr elif opcode == opcodedesc.JUMP_ABSOLUTE.index: return self.jump_absolute(oparg, ec) elif opcode == opcodedesc.BREAK_LOOP.index: next_instr = self.BREAK_LOOP(oparg, next_instr) elif opcode == opcodedesc.CONTINUE_LOOP.index: return self.CONTINUE_LOOP(oparg, next_instr) elif opcode == opcodedesc.FOR_ITER.index: next_instr = self.FOR_ITER(oparg, next_instr) elif opcode == opcodedesc.JUMP_FORWARD.index: next_instr = self.JUMP_FORWARD(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_FALSE_OR_POP.index: next_instr = self.JUMP_IF_FALSE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_NOT_DEBUG.index: next_instr = self.JUMP_IF_NOT_DEBUG(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_TRUE_OR_POP.index: next_instr = self.JUMP_IF_TRUE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_FALSE.index: next_instr = self.POP_JUMP_IF_FALSE(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_TRUE.index: next_instr = self.POP_JUMP_IF_TRUE(oparg, next_instr) elif opcode == opcodedesc.BINARY_ADD.index: self.BINARY_ADD(oparg, next_instr) elif opcode == opcodedesc.BINARY_AND.index: self.BINARY_AND(oparg, next_instr) elif opcode == opcodedesc.BINARY_DIVIDE.index: self.BINARY_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_FLOOR_DIVIDE.index: self.BINARY_FLOOR_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_LSHIFT.index: self.BINARY_LSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_MODULO.index: self.BINARY_MODULO(oparg, next_instr) elif opcode == opcodedesc.BINARY_MULTIPLY.index: self.BINARY_MULTIPLY(oparg, next_instr) elif opcode == opcodedesc.BINARY_OR.index: self.BINARY_OR(oparg, next_instr) elif opcode == opcodedesc.BINARY_POWER.index: self.BINARY_POWER(oparg, next_instr) elif opcode == opcodedesc.BINARY_RSHIFT.index: self.BINARY_RSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBSCR.index: self.BINARY_SUBSCR(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBTRACT.index: self.BINARY_SUBTRACT(oparg, next_instr) elif opcode == opcodedesc.BINARY_TRUE_DIVIDE.index: self.BINARY_TRUE_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_XOR.index: self.BINARY_XOR(oparg, next_instr) elif opcode == opcodedesc.BUILD_CLASS.index: self.BUILD_CLASS(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST.index: self.BUILD_LIST(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST_FROM_ARG.index: self.BUILD_LIST_FROM_ARG(oparg, next_instr) elif opcode == opcodedesc.BUILD_MAP.index: self.BUILD_MAP(oparg, next_instr) elif opcode == opcodedesc.BUILD_SET.index: self.BUILD_SET(oparg, next_instr) elif opcode == opcodedesc.BUILD_SLICE.index: self.BUILD_SLICE(oparg, next_instr) elif opcode == opcodedesc.BUILD_TUPLE.index: self.BUILD_TUPLE(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION.index: self.CALL_FUNCTION(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_KW.index: self.CALL_FUNCTION_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR.index: self.CALL_FUNCTION_VAR(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR_KW.index: self.CALL_FUNCTION_VAR_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_METHOD.index: > self.CALL_METHOD(oparg, next_instr) interpreter\pyopcode.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ f = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_repr_lib...uild\pypy\module\_cffi_backend\test\test_recompiler.py:149]', line 1> at line 5 oparg = 3, ignored = (18L,), n_args = 3, n_kwargs = 0, w_self = None @jit.unroll_safe def CALL_METHOD(f, oparg, *ignored): # opargs contains the arg, and kwarg count, excluding the implicit 'self' n_args = oparg & 0xff n_kwargs = (oparg >> 8) & 0xff w_self = f.peekvalue_maybe_none(n_args + (2 * n_kwargs)) n = n_args + (w_self is not None) if not n_kwargs: w_callable = f.peekvalue(n_args + (2 * n_kwargs) + 1) w_result = f.space.call_valuestack( > w_callable, n, f, methodcall=w_self is not None, dropvalues=n_args + 2) objspace\std\callmethod.py:96: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_repr_lib...uild\pypy\module\_cffi_backend\test\test_recompiler.py:149]', line 1> at line 5 dropvalues = 5, methodcall = False def call_valuestack(self, w_func, nargs, frame, dropvalues, methodcall=False): # methodcall is only used for better error messages in argument.py from pypy.interpreter.function import Function, Method, is_builtin_code if frame.get_is_being_profiled() and is_builtin_code(w_func): # XXX: this code is copied&pasted :-( from the slow path below # call_valuestack(). args = frame.make_arguments(nargs) frame.dropvalues(dropvalues) return self.call_args_and_c_profile(frame, w_func, args) if not self.config.objspace.disable_call_speedhacks: # start of hack for performance if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: w_func = w_func.w_function # reuse callable stack place for w_inst frame.settopvalue(w_inst, nargs) nargs += 1 methodcall = True elif nargs > 0 and ( self.abstract_isinstance_w(frame.peekvalue(nargs-1), # :-( w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): return w_func.funccall_valuestack( > nargs, frame, methodcall=methodcall, dropvalues=dropvalues) interpreter\baseobjspace.py:1243: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_repr_lib...uild\pypy\module\_cffi_backend\test\test_recompiler.py:149]', line 1> at line 5 dropvalues = 5, methodcall = False def funccall_valuestack(self, nargs, frame, dropvalues, methodcall=False): # speed hack # methodcall is only for better error messages from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit # if (jit.we_are_jitted() and code is self.space._code_of_sys_exc_info and nargs == 0): frame.dropvalues(dropvalues) from pypy.module.sys.vm import exc_info_direct return exc_info_direct(self.space, frame) # fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: f_0 = frame.peekvalue(0) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, f_0) elif nargs == 2: f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, f_1, f_0) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) frame.dropvalues(dropvalues) return code.fastcall_3(self.space, self, f_2, f_1, f_0) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) f_3 = frame.peekvalue(3) frame.dropvalues(dropvalues) return code.fastcall_4(self.space, self, f_3, f_2, f_1, f_0) elif (nargs | Code.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) return self._flat_pycall(code, nargs, frame, dropvalues) elif fast_natural_arity & Code.FLATPYCALL: natural_arity = fast_natural_arity & 0xff if natural_arity > nargs >= natural_arity - len(self.defs_w): assert isinstance(code, PyCode) return self._flat_pycall_defaults(code, nargs, frame, natural_arity - nargs, dropvalues) elif fast_natural_arity == Code.PASSTHROUGHARGS1 and nargs >= 1: assert isinstance(code, gateway.BuiltinCodePassThroughArguments1) w_obj = frame.peekvalue(nargs-1) args = frame.make_arguments(nargs-1) frame.dropvalues(dropvalues) return code.funcrun_obj(self, w_obj, args) args = frame.make_arguments(nargs, methodcall=methodcall) frame.dropvalues(dropvalues) > return self.call_args(args) interpreter\function.py:190: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject(''), W_BytesObject('test_repr_lib'), W_BytesObject('')]) def call_args(self, args): # delegate activation to code > w_res = self.getcode().funcrun(self, args) interpreter\function.py:68: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject(''), W_BytesObject('test_repr_lib'), W_BytesObject('')]) def funcrun(self, func, args): > return BuiltinCode.funcrun_obj(self, func, None, args) interpreter\gateway.py:781: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject(''), W_BytesObject('test_repr_lib'), W_BytesObject('')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: w_result = activation._run(space, scope_w) except DescrMismatch: if w_obj is not None: args = args.prepend(w_obj) return self._type_unwrap_mismatch(space, args) except Exception as e: > self.handle_exception(space, e) interpreter\gateway.py:795: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> space = StdObjSpace e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def handle_exception(self, space, e): try: if not we_are_translated(): raise raise e except OperationError: raise except Exception as e: # general fall-back from pypy.interpreter import error > raise error.get_converted_unexpected_exception(space, e) interpreter\gateway.py:819: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject(''), W_BytesObject('test_repr_lib'), W_BytesObject('')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: > w_result = activation._run(space, scope_w) interpreter\gateway.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinActivation_UwS_ObjSpace_text_text_text_W_Root_W_Root_W_Root_int_W_Root object at 0x000002791c13af38> space = StdObjSpace scope_w = [W_BytesObject(''), W_BytesObject('test_repr_lib'), W_BytesObject(''), None, None, None, ...] def _run(self, space, scope_w): > return self.behavior(space, space.text_w(scope_w[0]), space.text_w(scope_w[1]), space.text_w(scope_w[2]), scope_w[3], scope_w[4], scope_w[5], space.gateway_int_w(scope_w[6]), scope_w[7]) <3152-codegen d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\rpython\tool\sourcetools.py:200>:3: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace, cdef = '', module_name = '_CFFI_test_repr_lib', source = '' w_includes = None, w_extra_source = None, w_min_version = None, packed = 0 w_extra_compile_args = None @unwrap_spec(cdef='text', module_name='text', source='text', packed=int) def prepare(space, cdef, module_name, source, w_includes=None, w_extra_source=None, w_min_version=None, packed=False, w_extra_compile_args=None): try: import cffi from cffi import FFI # <== the system one, which from cffi import recompiler # needs to be at least cffi 1.0.4 from cffi import ffiplatform except ImportError: pytest.skip("system cffi module not found or older than 1.0.0") if w_min_version is None: min_version = (1, 4, 0) else: min_version = tuple(space.unwrap(w_min_version)) if cffi.__version_info__ < min_version: pytest.skip("system cffi module needs to be at least %s, got %s" % ( min_version, cffi.__version_info__)) space.appexec([], """(): import _cffi_backend # force it to be initialized """) includes = [] if w_includes: includes += space.unpackiterable(w_includes) assert module_name.startswith('test_') module_name = '_CFFI_' + module_name rdir = udir.ensure('recompiler', dir=1) rdir.join('Python.h').write( '#include <stdio.h>\n' '#define PYPY_VERSION XX\n' '#define PyMODINIT_FUNC /*exported*/ void\n' ) path = module_name.replace('.', os.sep) if '.' in module_name: subrdir = rdir.join(module_name[:module_name.index('.')]) os.mkdir(str(subrdir)) else: subrdir = rdir c_file = str(rdir.join('%s.c' % path)) ffi = FFI() for include_ffi_object in includes: ffi.include(include_ffi_object._test_recompiler_source_ffi) ffi.cdef(cdef, packed=packed) ffi.set_source(module_name, source) ffi.emit_c_code(c_file) base_module_name = module_name.split('.')[-1] sources = [] if w_extra_source is not None: sources.append(space.str_w(w_extra_source)) kwargs = {} # GCC 14 promotes -Wincompatible-pointer-types from a warning to an error # by default, which breaks cffi's intentionally-mismatched field-check # probes (e.g. test_misdeclared_field_1). Keep it a warning so the module # compiles and cffi's runtime checks can run. extra = ['-Wno-error=incompatible-pointer-types'] if w_extra_compile_args is not None: extra = extra + space.unwrap(w_extra_compile_args) kwargs['extra_compile_args'] = extra ext = ffiplatform.get_extension(c_file, module_name, include_dirs=[str(rdir)], export_symbols=['_cffi_pypyinit_' + base_module_name], sources=sources, **kwargs) > ffiplatform.compile(str(rdir), ext) module\_cffi_backend\test\test_recompiler.py:86: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x00000279254ad4e0> compiler_verbose = 0, debug = None def compile(tmpdir, ext, compiler_verbose=0, debug=None): """Compile a C extension module using distutils.""" saved_environ = os.environ.copy() try: > outputfilename = _build(tmpdir, ext, compiler_verbose, debug) d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x00000279254ad4e0> compiler_verbose = 0, debug = 0 def _build(tmpdir, ext, compiler_verbose=0, debug=None): # XXX compact but horrible :-( from cffi._shimmed_dist_utils import Distribution, CompileError, LinkError, set_threshold, set_verbosity dist = Distribution({'ext_modules': [ext]}) dist.parse_config_files() options = dist.get_option_dict('build_ext') if debug is None: debug = sys.flags.debug options['debug'] = ('ffiplatform', debug) options['force'] = ('ffiplatform', True) options['build_lib'] = ('ffiplatform', tmpdir) options['build_temp'] = ('ffiplatform', tmpdir) # try: old_level = set_threshold(0) or 0 try: set_verbosity(compiler_verbose) dist.run_command('build_ext') cmd_obj = dist.get_command_obj('build_ext') [soname] = cmd_obj.get_outputs() finally: set_threshold(old_level) except (CompileError, LinkError) as e: > raise VerificationError('%s: %s' % (e.__class__.__name__, e)) E VerificationError: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2 d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:54: VerificationError ---------------------------- Captured stdout call ----------------------------- generating d:\systemtemp\pytest\usession-main-595\recompiler\_CFFI_test_repr_lib.c ---------------------------- Captured stderr call ----------------------------- cl : Command line error D8021 : invalid numeric argument '/Wno-error=incompatible-pointer-types' _____________________ AppTestRecompiler.test_funcarg_ptr ______________________ self = <CallInfo when='call' exception: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2> func = <function <lambda> at 0x00000279270c5970>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ..\_pytest\runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ..\_pytest\runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_funcarg_ptr'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_funcarg_ptr'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ..\_pytest\vendored_packages\pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00000279153616a8> hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_funcarg_ptr'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_funcarg_ptr'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ..\_pytest\vendored_packages\pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_funcarg_ptr'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_funcarg_ptr'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ..\_pytest\vendored_packages\pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_funcarg_ptr'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00000279277ed9e8> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...uncarg_ptr'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00000279277f43e0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00000279277f43e0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...uncarg_ptr'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_funcarg_ptr'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00000279277ed948> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...uncarg_ptr'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00000279277f43a0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00000279277f43a0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...uncarg_ptr'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_funcarg_ptr'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ..\_pytest\vendored_packages\pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_funcarg_ptr'> def pytest_runtest_call(item): try: > item.runtest() ..\_pytest\runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_funcarg_ptr'> def runtest(self): target = self.obj if self.config.option.runappdirect: return target() space = target.im_self.space filename = self._getdynfilename(target) func = app2interp_temp(target.im_func, filename=filename) w_instance = self.parent.w_instance > self.execute_appex(space, func, space, w_instance) tool\pytest\apptest.py:89: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_funcarg_ptr'>, space = StdObjSpace target = <function test_funcarg_ptr at 0x00000279270c5a60> args = (StdObjSpace, <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>) def execute_appex(self, space, target, *args): self.space = space try: > target(*args) tool\pytest\apptest.py:30: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) w_func = <Function test_funcarg_ptr> args = <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8> def appcaller(space, *args_w): if not isinstance(space, ObjSpace): raise TypeError("first argument must be a space instance.") # the last argument can be an Arguments w_func = self.wget(space, name) if not args_w: return space.call_function(w_func) else: args = args_w[-1] assert args is not None if not isinstance(args, Arguments): > return space.call_function(w_func, *args_w) interpreter\gateway.py:1227: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <Function test_funcarg_ptr> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) nargs = 1, Function = <class 'pypy.interpreter.function.Function'> Method = <class 'pypy.interpreter.function.Method'> def call_function(self, w_func, *args_w): nargs = len(args_w) # used for pruning funccall versions if not self.config.objspace.disable_call_speedhacks and nargs < 5: # start of hack for performance from pypy.interpreter.function import Function, Method if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: if nargs < 4: func = w_func.w_function if isinstance(func, Function): return func.funccall(w_inst, *args_w) elif args_w and ( self.abstract_isinstance_w(args_w[0], w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): > return w_func.funccall(*args_w) interpreter\baseobjspace.py:1210: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <Function test_funcarg_ptr> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) gateway = <module 'pypy.interpreter.gateway' from 'd:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\interpreter\\gateway.pyc'> PyCode = <class 'pypy.interpreter.pycode.PyCode'> code = <code object test_funcarg_ptr, file '[d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:156]', line 1> def funccall(self, *args_w): # speed hack from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit nargs = len(args_w) fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, args_w[0]) elif nargs == 2: assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, args_w[0], args_w[1]) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) return code.fastcall_3(self.space, self, args_w[0], args_w[1], args_w[2]) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) return code.fastcall_4(self.space, self, args_w[0], args_w[1], args_w[2], args_w[3]) elif (nargs | PyCode.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) if nargs < 5: new_frame = self.space.createframe(code, self.w_func_globals, self) for i in funccallunrolling: if i < nargs: new_frame.locals_cells_stack_w[i] = args_w[i] > return new_frame.run() interpreter\function.py:118: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_funcarg_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:156]', line 1> at line 5 def run(self): """Start this frame's execution.""" if self.getcode().co_flags & pycode.CO_GENERATOR: from pypy.interpreter.generator import GeneratorIterator return GeneratorIterator(self) else: > return self.execute_frame() interpreter\pyframe.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_funcarg_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:156]', line 1> at line 5 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, executioncontext) except OperationError: raise except Exception as e: # general fall-back > raise self._convert_unexpected_exception(e) interpreter\pyframe.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_funcarg_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:156]', line 1> at line 5 e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def _convert_unexpected_exception(self, e): from pypy.interpreter import error > operr = error.get_converted_unexpected_exception(self.space, e) interpreter\pyframe.py:943: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_funcarg_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:156]', line 1> at line 5 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, > executioncontext) interpreter\pyframe.py:286: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_funcarg_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:156]', line 1> at line 5 pycode = <code object test_funcarg_ptr, file '[d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:156]', line 1> next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def dispatch(self, pycode, next_instr, ec): # For the sequel, force 'next_instr' to be unsigned for performance next_instr = r_uint(next_instr) co_code = pycode.co_code try: while True: > next_instr = self.handle_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:64: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_funcarg_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:156]', line 1> at line 5 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00\xcc\x1e\x00|\x02\x00\xc9\x01\x00d\x04\x00g\x01\x00\xca\x01\x00d\x04\x00k\x02\x00s<\x00t\x02\x00\x82\x01\x00d\x00\x00S' next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def handle_bytecode(self, co_code, next_instr, ec): try: > next_instr = self.dispatch_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:71: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_funcarg_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:156]', line 1> at line 5 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00\xcc\x1e\x00|\x02\x00\xc9\x01\x00d\x04\x00g\x01\x00\xca\x01\x00d\x04\x00k\x02\x00s<\x00t\x02\x00\x82\x01\x00d\x00\x00S' next_instr = 18L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> @jit.unroll_safe def dispatch_bytecode(self, co_code, next_instr, ec): while True: self.last_instr = intmask(next_instr) if jit.we_are_jitted(): if self.debugdata: ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) else: # Only reload next_instr from last_instr when something that # can modify it actually ran (trace function or action # dispatcher). In the common case (no trace, positive ticker) # next_instr is unchanged and the round-trip is skipped. _d = self.debugdata if ec.space.reverse_debugging or ( _d is not None and _d.w_f_trace is not None) or ( not we_are_translated() and 'bytecode_only_trace' in ec.__dict__): ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) actionflag = ec.space.actionflag if actionflag.decrement_ticker(TICK_COUNTER_STEP) < 0: actionflag.action_dispatcher(ec, self) next_instr = r_uint(self.last_instr) opcode = ord(co_code[next_instr]) next_instr += 1 if opcode >= HAVE_ARGUMENT: lo = ord(co_code[next_instr]) hi = ord(co_code[next_instr+1]) next_instr += 2 oparg = (hi * 256) | lo else: oparg = 0 # note: the structure of the code here is such that it makes # (after translation) a big "if/elif" chain, which is then # turned into a switch(). while opcode == opcodedesc.EXTENDED_ARG.index: opcode = ord(co_code[next_instr]) if opcode < HAVE_ARGUMENT: raise BytecodeCorruption lo = ord(co_code[next_instr+1]) hi = ord(co_code[next_instr+2]) next_instr += 3 oparg = (oparg * 65536) | (hi * 256) | lo if opcode == opcodedesc.RETURN_VALUE.index: if not self.blockstack_non_empty(): self.frame_finished_execution = True # for generators raise Return w_returnvalue = self.popvalue() block = self.unrollstack(SReturnValue.kind) if block is None: self.pushvalue(w_returnvalue) raise Return else: unroller = SReturnValue(w_returnvalue) next_instr = block.handle(self, unroller) return next_instr # now inside a 'finally' block elif opcode == opcodedesc.END_FINALLY.index: unroller = self.end_finally() if isinstance(unroller, SuspendedUnroller): # go on unrolling the stack block = self.unrollstack(unroller.kind) if block is None: w_result = unroller.nomoreblocks() self.pushvalue(w_result) raise Return else: next_instr = block.handle(self, unroller) return next_instr elif opcode == opcodedesc.JUMP_ABSOLUTE.index: return self.jump_absolute(oparg, ec) elif opcode == opcodedesc.BREAK_LOOP.index: next_instr = self.BREAK_LOOP(oparg, next_instr) elif opcode == opcodedesc.CONTINUE_LOOP.index: return self.CONTINUE_LOOP(oparg, next_instr) elif opcode == opcodedesc.FOR_ITER.index: next_instr = self.FOR_ITER(oparg, next_instr) elif opcode == opcodedesc.JUMP_FORWARD.index: next_instr = self.JUMP_FORWARD(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_FALSE_OR_POP.index: next_instr = self.JUMP_IF_FALSE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_NOT_DEBUG.index: next_instr = self.JUMP_IF_NOT_DEBUG(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_TRUE_OR_POP.index: next_instr = self.JUMP_IF_TRUE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_FALSE.index: next_instr = self.POP_JUMP_IF_FALSE(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_TRUE.index: next_instr = self.POP_JUMP_IF_TRUE(oparg, next_instr) elif opcode == opcodedesc.BINARY_ADD.index: self.BINARY_ADD(oparg, next_instr) elif opcode == opcodedesc.BINARY_AND.index: self.BINARY_AND(oparg, next_instr) elif opcode == opcodedesc.BINARY_DIVIDE.index: self.BINARY_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_FLOOR_DIVIDE.index: self.BINARY_FLOOR_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_LSHIFT.index: self.BINARY_LSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_MODULO.index: self.BINARY_MODULO(oparg, next_instr) elif opcode == opcodedesc.BINARY_MULTIPLY.index: self.BINARY_MULTIPLY(oparg, next_instr) elif opcode == opcodedesc.BINARY_OR.index: self.BINARY_OR(oparg, next_instr) elif opcode == opcodedesc.BINARY_POWER.index: self.BINARY_POWER(oparg, next_instr) elif opcode == opcodedesc.BINARY_RSHIFT.index: self.BINARY_RSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBSCR.index: self.BINARY_SUBSCR(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBTRACT.index: self.BINARY_SUBTRACT(oparg, next_instr) elif opcode == opcodedesc.BINARY_TRUE_DIVIDE.index: self.BINARY_TRUE_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_XOR.index: self.BINARY_XOR(oparg, next_instr) elif opcode == opcodedesc.BUILD_CLASS.index: self.BUILD_CLASS(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST.index: self.BUILD_LIST(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST_FROM_ARG.index: self.BUILD_LIST_FROM_ARG(oparg, next_instr) elif opcode == opcodedesc.BUILD_MAP.index: self.BUILD_MAP(oparg, next_instr) elif opcode == opcodedesc.BUILD_SET.index: self.BUILD_SET(oparg, next_instr) elif opcode == opcodedesc.BUILD_SLICE.index: self.BUILD_SLICE(oparg, next_instr) elif opcode == opcodedesc.BUILD_TUPLE.index: self.BUILD_TUPLE(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION.index: self.CALL_FUNCTION(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_KW.index: self.CALL_FUNCTION_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR.index: self.CALL_FUNCTION_VAR(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR_KW.index: self.CALL_FUNCTION_VAR_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_METHOD.index: > self.CALL_METHOD(oparg, next_instr) interpreter\pyopcode.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ f = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_funcarg_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:156]', line 1> at line 5 oparg = 3, ignored = (18L,), n_args = 3, n_kwargs = 0, w_self = None @jit.unroll_safe def CALL_METHOD(f, oparg, *ignored): # opargs contains the arg, and kwarg count, excluding the implicit 'self' n_args = oparg & 0xff n_kwargs = (oparg >> 8) & 0xff w_self = f.peekvalue_maybe_none(n_args + (2 * n_kwargs)) n = n_args + (w_self is not None) if not n_kwargs: w_callable = f.peekvalue(n_args + (2 * n_kwargs) + 1) w_result = f.space.call_valuestack( > w_callable, n, f, methodcall=w_self is not None, dropvalues=n_args + 2) objspace\std\callmethod.py:96: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_funcarg_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:156]', line 1> at line 5 dropvalues = 5, methodcall = False def call_valuestack(self, w_func, nargs, frame, dropvalues, methodcall=False): # methodcall is only used for better error messages in argument.py from pypy.interpreter.function import Function, Method, is_builtin_code if frame.get_is_being_profiled() and is_builtin_code(w_func): # XXX: this code is copied&pasted :-( from the slow path below # call_valuestack(). args = frame.make_arguments(nargs) frame.dropvalues(dropvalues) return self.call_args_and_c_profile(frame, w_func, args) if not self.config.objspace.disable_call_speedhacks: # start of hack for performance if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: w_func = w_func.w_function # reuse callable stack place for w_inst frame.settopvalue(w_inst, nargs) nargs += 1 methodcall = True elif nargs > 0 and ( self.abstract_isinstance_w(frame.peekvalue(nargs-1), # :-( w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): return w_func.funccall_valuestack( > nargs, frame, methodcall=methodcall, dropvalues=dropvalues) interpreter\baseobjspace.py:1243: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_funcarg_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:156]', line 1> at line 5 dropvalues = 5, methodcall = False def funccall_valuestack(self, nargs, frame, dropvalues, methodcall=False): # speed hack # methodcall is only for better error messages from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit # if (jit.we_are_jitted() and code is self.space._code_of_sys_exc_info and nargs == 0): frame.dropvalues(dropvalues) from pypy.module.sys.vm import exc_info_direct return exc_info_direct(self.space, frame) # fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: f_0 = frame.peekvalue(0) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, f_0) elif nargs == 2: f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, f_1, f_0) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) frame.dropvalues(dropvalues) return code.fastcall_3(self.space, self, f_2, f_1, f_0) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) f_3 = frame.peekvalue(3) frame.dropvalues(dropvalues) return code.fastcall_4(self.space, self, f_3, f_2, f_1, f_0) elif (nargs | Code.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) return self._flat_pycall(code, nargs, frame, dropvalues) elif fast_natural_arity & Code.FLATPYCALL: natural_arity = fast_natural_arity & 0xff if natural_arity > nargs >= natural_arity - len(self.defs_w): assert isinstance(code, PyCode) return self._flat_pycall_defaults(code, nargs, frame, natural_arity - nargs, dropvalues) elif fast_natural_arity == Code.PASSTHROUGHARGS1 and nargs >= 1: assert isinstance(code, gateway.BuiltinCodePassThroughArguments1) w_obj = frame.peekvalue(nargs-1) args = frame.make_arguments(nargs-1) frame.dropvalues(dropvalues) return code.funcrun_obj(self, w_obj, args) args = frame.make_arguments(nargs, methodcall=methodcall) frame.dropvalues(dropvalues) > return self.call_args(args) interpreter\function.py:190: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('int foo(int *);'), W_BytesObject('test_funcarg_ptr'), W_BytesObject('int foo(int *p) { return *p; }')]) def call_args(self, args): # delegate activation to code > w_res = self.getcode().funcrun(self, args) interpreter\function.py:68: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('int foo(int *);'), W_BytesObject('test_funcarg_ptr'), W_BytesObject('int foo(int *p) { return *p; }')]) def funcrun(self, func, args): > return BuiltinCode.funcrun_obj(self, func, None, args) interpreter\gateway.py:781: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('int foo(int *);'), W_BytesObject('test_funcarg_ptr'), W_BytesObject('int foo(int *p) { return *p; }')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: w_result = activation._run(space, scope_w) except DescrMismatch: if w_obj is not None: args = args.prepend(w_obj) return self._type_unwrap_mismatch(space, args) except Exception as e: > self.handle_exception(space, e) interpreter\gateway.py:795: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> space = StdObjSpace e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def handle_exception(self, space, e): try: if not we_are_translated(): raise raise e except OperationError: raise except Exception as e: # general fall-back from pypy.interpreter import error > raise error.get_converted_unexpected_exception(space, e) interpreter\gateway.py:819: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('int foo(int *);'), W_BytesObject('test_funcarg_ptr'), W_BytesObject('int foo(int *p) { return *p; }')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: > w_result = activation._run(space, scope_w) interpreter\gateway.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinActivation_UwS_ObjSpace_text_text_text_W_Root_W_Root_W_Root_int_W_Root object at 0x000002791c13af38> space = StdObjSpace scope_w = [W_BytesObject('int foo(int *);'), W_BytesObject('test_funcarg_ptr'), W_BytesObject('int foo(int *p) { return *p; }'), None, None, None, ...] def _run(self, space, scope_w): > return self.behavior(space, space.text_w(scope_w[0]), space.text_w(scope_w[1]), space.text_w(scope_w[2]), scope_w[3], scope_w[4], scope_w[5], space.gateway_int_w(scope_w[6]), scope_w[7]) <3152-codegen d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\rpython\tool\sourcetools.py:200>:3: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace, cdef = 'int foo(int *);' module_name = '_CFFI_test_funcarg_ptr' source = 'int foo(int *p) { return *p; }', w_includes = None w_extra_source = None, w_min_version = None, packed = 0 w_extra_compile_args = None @unwrap_spec(cdef='text', module_name='text', source='text', packed=int) def prepare(space, cdef, module_name, source, w_includes=None, w_extra_source=None, w_min_version=None, packed=False, w_extra_compile_args=None): try: import cffi from cffi import FFI # <== the system one, which from cffi import recompiler # needs to be at least cffi 1.0.4 from cffi import ffiplatform except ImportError: pytest.skip("system cffi module not found or older than 1.0.0") if w_min_version is None: min_version = (1, 4, 0) else: min_version = tuple(space.unwrap(w_min_version)) if cffi.__version_info__ < min_version: pytest.skip("system cffi module needs to be at least %s, got %s" % ( min_version, cffi.__version_info__)) space.appexec([], """(): import _cffi_backend # force it to be initialized """) includes = [] if w_includes: includes += space.unpackiterable(w_includes) assert module_name.startswith('test_') module_name = '_CFFI_' + module_name rdir = udir.ensure('recompiler', dir=1) rdir.join('Python.h').write( '#include <stdio.h>\n' '#define PYPY_VERSION XX\n' '#define PyMODINIT_FUNC /*exported*/ void\n' ) path = module_name.replace('.', os.sep) if '.' in module_name: subrdir = rdir.join(module_name[:module_name.index('.')]) os.mkdir(str(subrdir)) else: subrdir = rdir c_file = str(rdir.join('%s.c' % path)) ffi = FFI() for include_ffi_object in includes: ffi.include(include_ffi_object._test_recompiler_source_ffi) ffi.cdef(cdef, packed=packed) ffi.set_source(module_name, source) ffi.emit_c_code(c_file) base_module_name = module_name.split('.')[-1] sources = [] if w_extra_source is not None: sources.append(space.str_w(w_extra_source)) kwargs = {} # GCC 14 promotes -Wincompatible-pointer-types from a warning to an error # by default, which breaks cffi's intentionally-mismatched field-check # probes (e.g. test_misdeclared_field_1). Keep it a warning so the module # compiles and cffi's runtime checks can run. extra = ['-Wno-error=incompatible-pointer-types'] if w_extra_compile_args is not None: extra = extra + space.unwrap(w_extra_compile_args) kwargs['extra_compile_args'] = extra ext = ffiplatform.get_extension(c_file, module_name, include_dirs=[str(rdir)], export_symbols=['_cffi_pypyinit_' + base_module_name], sources=sources, **kwargs) > ffiplatform.compile(str(rdir), ext) module\_cffi_backend\test\test_recompiler.py:86: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x00000279277f4820> compiler_verbose = 0, debug = None def compile(tmpdir, ext, compiler_verbose=0, debug=None): """Compile a C extension module using distutils.""" saved_environ = os.environ.copy() try: > outputfilename = _build(tmpdir, ext, compiler_verbose, debug) d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x00000279277f4820> compiler_verbose = 0, debug = 0 def _build(tmpdir, ext, compiler_verbose=0, debug=None): # XXX compact but horrible :-( from cffi._shimmed_dist_utils import Distribution, CompileError, LinkError, set_threshold, set_verbosity dist = Distribution({'ext_modules': [ext]}) dist.parse_config_files() options = dist.get_option_dict('build_ext') if debug is None: debug = sys.flags.debug options['debug'] = ('ffiplatform', debug) options['force'] = ('ffiplatform', True) options['build_lib'] = ('ffiplatform', tmpdir) options['build_temp'] = ('ffiplatform', tmpdir) # try: old_level = set_threshold(0) or 0 try: set_verbosity(compiler_verbose) dist.run_command('build_ext') cmd_obj = dist.get_command_obj('build_ext') [soname] = cmd_obj.get_outputs() finally: set_threshold(old_level) except (CompileError, LinkError) as e: > raise VerificationError('%s: %s' % (e.__class__.__name__, e)) E VerificationError: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2 d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:54: VerificationError ---------------------------- Captured stdout call ----------------------------- generating d:\systemtemp\pytest\usession-main-595\recompiler\_CFFI_test_funcarg_ptr.c ---------------------------- Captured stderr call ----------------------------- cl : Command line error D8021 : invalid numeric argument '/Wno-error=incompatible-pointer-types' _____________________ AppTestRecompiler.test_funcres_ptr ______________________ self = <CallInfo when='call' exception: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2> func = <function <lambda> at 0x000002792942e638>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ..\_pytest\runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ..\_pytest\runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_funcres_ptr'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_funcres_ptr'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ..\_pytest\vendored_packages\pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00000279153616a8> hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_funcres_ptr'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_funcres_ptr'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ..\_pytest\vendored_packages\pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_funcres_ptr'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_funcres_ptr'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ..\_pytest\vendored_packages\pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_funcres_ptr'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x0000027926fb9c18> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...uncres_ptr'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00000279212a4020> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00000279212a4020> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...uncres_ptr'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_funcres_ptr'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x0000027926fb9ba0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...uncres_ptr'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027921447fa0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027921447fa0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...uncres_ptr'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_funcres_ptr'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ..\_pytest\vendored_packages\pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_funcres_ptr'> def pytest_runtest_call(item): try: > item.runtest() ..\_pytest\runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_funcres_ptr'> def runtest(self): target = self.obj if self.config.option.runappdirect: return target() space = target.im_self.space filename = self._getdynfilename(target) func = app2interp_temp(target.im_func, filename=filename) w_instance = self.parent.w_instance > self.execute_appex(space, func, space, w_instance) tool\pytest\apptest.py:89: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_funcres_ptr'>, space = StdObjSpace target = <function test_funcres_ptr at 0x000002792942e6b0> args = (StdObjSpace, <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>) def execute_appex(self, space, target, *args): self.space = space try: > target(*args) tool\pytest\apptest.py:30: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) w_func = <Function test_funcres_ptr> args = <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8> def appcaller(space, *args_w): if not isinstance(space, ObjSpace): raise TypeError("first argument must be a space instance.") # the last argument can be an Arguments w_func = self.wget(space, name) if not args_w: return space.call_function(w_func) else: args = args_w[-1] assert args is not None if not isinstance(args, Arguments): > return space.call_function(w_func, *args_w) interpreter\gateway.py:1227: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <Function test_funcres_ptr> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) nargs = 1, Function = <class 'pypy.interpreter.function.Function'> Method = <class 'pypy.interpreter.function.Method'> def call_function(self, w_func, *args_w): nargs = len(args_w) # used for pruning funccall versions if not self.config.objspace.disable_call_speedhacks and nargs < 5: # start of hack for performance from pypy.interpreter.function import Function, Method if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: if nargs < 4: func = w_func.w_function if isinstance(func, Function): return func.funccall(w_inst, *args_w) elif args_w and ( self.abstract_isinstance_w(args_w[0], w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): > return w_func.funccall(*args_w) interpreter\baseobjspace.py:1210: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <Function test_funcres_ptr> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) gateway = <module 'pypy.interpreter.gateway' from 'd:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\interpreter\\gateway.pyc'> PyCode = <class 'pypy.interpreter.pycode.PyCode'> code = <code object test_funcres_ptr, file '[d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:163]', line 1> def funccall(self, *args_w): # speed hack from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit nargs = len(args_w) fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, args_w[0]) elif nargs == 2: assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, args_w[0], args_w[1]) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) return code.fastcall_3(self.space, self, args_w[0], args_w[1], args_w[2]) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) return code.fastcall_4(self.space, self, args_w[0], args_w[1], args_w[2], args_w[3]) elif (nargs | PyCode.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) if nargs < 5: new_frame = self.space.createframe(code, self.w_func_globals, self) for i in funccallunrolling: if i < nargs: new_frame.locals_cells_stack_w[i] = args_w[i] > return new_frame.run() interpreter\function.py:118: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_funcres_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:163]', line 1> at line 5 def run(self): """Start this frame's execution.""" if self.getcode().co_flags & pycode.CO_GENERATOR: from pypy.interpreter.generator import GeneratorIterator return GeneratorIterator(self) else: > return self.execute_frame() interpreter\pyframe.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_funcres_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:163]', line 1> at line 5 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, executioncontext) except OperationError: raise except Exception as e: # general fall-back > raise self._convert_unexpected_exception(e) interpreter\pyframe.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_funcres_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:163]', line 1> at line 5 e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def _convert_unexpected_exception(self, e): from pypy.interpreter import error > operr = error.get_converted_unexpected_exception(self.space, e) interpreter\pyframe.py:943: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_funcres_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:163]', line 1> at line 5 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, > executioncontext) interpreter\pyframe.py:286: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_funcres_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:163]', line 1> at line 5 pycode = <code object test_funcres_ptr, file '[d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:163]', line 1> next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def dispatch(self, pycode, next_instr, ec): # For the sequel, force 'next_instr' to be unsigned for performance next_instr = r_uint(next_instr) co_code = pycode.co_code try: while True: > next_instr = self.handle_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:64: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_funcres_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:163]', line 1> at line 5 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00\xcc\x1c\x00|\x02\x00\xc9\x01\x00\xca\x00\x00d\x04\x00\x19d\x05\x00k\x02\x00s:\x00t\x02\x00\x82\x01\x00d\x00\x00S' next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def handle_bytecode(self, co_code, next_instr, ec): try: > next_instr = self.dispatch_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:71: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_funcres_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:163]', line 1> at line 5 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00\xcc\x1c\x00|\x02\x00\xc9\x01\x00\xca\x00\x00d\x04\x00\x19d\x05\x00k\x02\x00s:\x00t\x02\x00\x82\x01\x00d\x00\x00S' next_instr = 18L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> @jit.unroll_safe def dispatch_bytecode(self, co_code, next_instr, ec): while True: self.last_instr = intmask(next_instr) if jit.we_are_jitted(): if self.debugdata: ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) else: # Only reload next_instr from last_instr when something that # can modify it actually ran (trace function or action # dispatcher). In the common case (no trace, positive ticker) # next_instr is unchanged and the round-trip is skipped. _d = self.debugdata if ec.space.reverse_debugging or ( _d is not None and _d.w_f_trace is not None) or ( not we_are_translated() and 'bytecode_only_trace' in ec.__dict__): ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) actionflag = ec.space.actionflag if actionflag.decrement_ticker(TICK_COUNTER_STEP) < 0: actionflag.action_dispatcher(ec, self) next_instr = r_uint(self.last_instr) opcode = ord(co_code[next_instr]) next_instr += 1 if opcode >= HAVE_ARGUMENT: lo = ord(co_code[next_instr]) hi = ord(co_code[next_instr+1]) next_instr += 2 oparg = (hi * 256) | lo else: oparg = 0 # note: the structure of the code here is such that it makes # (after translation) a big "if/elif" chain, which is then # turned into a switch(). while opcode == opcodedesc.EXTENDED_ARG.index: opcode = ord(co_code[next_instr]) if opcode < HAVE_ARGUMENT: raise BytecodeCorruption lo = ord(co_code[next_instr+1]) hi = ord(co_code[next_instr+2]) next_instr += 3 oparg = (oparg * 65536) | (hi * 256) | lo if opcode == opcodedesc.RETURN_VALUE.index: if not self.blockstack_non_empty(): self.frame_finished_execution = True # for generators raise Return w_returnvalue = self.popvalue() block = self.unrollstack(SReturnValue.kind) if block is None: self.pushvalue(w_returnvalue) raise Return else: unroller = SReturnValue(w_returnvalue) next_instr = block.handle(self, unroller) return next_instr # now inside a 'finally' block elif opcode == opcodedesc.END_FINALLY.index: unroller = self.end_finally() if isinstance(unroller, SuspendedUnroller): # go on unrolling the stack block = self.unrollstack(unroller.kind) if block is None: w_result = unroller.nomoreblocks() self.pushvalue(w_result) raise Return else: next_instr = block.handle(self, unroller) return next_instr elif opcode == opcodedesc.JUMP_ABSOLUTE.index: return self.jump_absolute(oparg, ec) elif opcode == opcodedesc.BREAK_LOOP.index: next_instr = self.BREAK_LOOP(oparg, next_instr) elif opcode == opcodedesc.CONTINUE_LOOP.index: return self.CONTINUE_LOOP(oparg, next_instr) elif opcode == opcodedesc.FOR_ITER.index: next_instr = self.FOR_ITER(oparg, next_instr) elif opcode == opcodedesc.JUMP_FORWARD.index: next_instr = self.JUMP_FORWARD(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_FALSE_OR_POP.index: next_instr = self.JUMP_IF_FALSE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_NOT_DEBUG.index: next_instr = self.JUMP_IF_NOT_DEBUG(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_TRUE_OR_POP.index: next_instr = self.JUMP_IF_TRUE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_FALSE.index: next_instr = self.POP_JUMP_IF_FALSE(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_TRUE.index: next_instr = self.POP_JUMP_IF_TRUE(oparg, next_instr) elif opcode == opcodedesc.BINARY_ADD.index: self.BINARY_ADD(oparg, next_instr) elif opcode == opcodedesc.BINARY_AND.index: self.BINARY_AND(oparg, next_instr) elif opcode == opcodedesc.BINARY_DIVIDE.index: self.BINARY_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_FLOOR_DIVIDE.index: self.BINARY_FLOOR_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_LSHIFT.index: self.BINARY_LSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_MODULO.index: self.BINARY_MODULO(oparg, next_instr) elif opcode == opcodedesc.BINARY_MULTIPLY.index: self.BINARY_MULTIPLY(oparg, next_instr) elif opcode == opcodedesc.BINARY_OR.index: self.BINARY_OR(oparg, next_instr) elif opcode == opcodedesc.BINARY_POWER.index: self.BINARY_POWER(oparg, next_instr) elif opcode == opcodedesc.BINARY_RSHIFT.index: self.BINARY_RSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBSCR.index: self.BINARY_SUBSCR(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBTRACT.index: self.BINARY_SUBTRACT(oparg, next_instr) elif opcode == opcodedesc.BINARY_TRUE_DIVIDE.index: self.BINARY_TRUE_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_XOR.index: self.BINARY_XOR(oparg, next_instr) elif opcode == opcodedesc.BUILD_CLASS.index: self.BUILD_CLASS(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST.index: self.BUILD_LIST(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST_FROM_ARG.index: self.BUILD_LIST_FROM_ARG(oparg, next_instr) elif opcode == opcodedesc.BUILD_MAP.index: self.BUILD_MAP(oparg, next_instr) elif opcode == opcodedesc.BUILD_SET.index: self.BUILD_SET(oparg, next_instr) elif opcode == opcodedesc.BUILD_SLICE.index: self.BUILD_SLICE(oparg, next_instr) elif opcode == opcodedesc.BUILD_TUPLE.index: self.BUILD_TUPLE(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION.index: self.CALL_FUNCTION(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_KW.index: self.CALL_FUNCTION_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR.index: self.CALL_FUNCTION_VAR(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR_KW.index: self.CALL_FUNCTION_VAR_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_METHOD.index: > self.CALL_METHOD(oparg, next_instr) interpreter\pyopcode.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ f = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_funcres_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:163]', line 1> at line 5 oparg = 3, ignored = (18L,), n_args = 3, n_kwargs = 0, w_self = None @jit.unroll_safe def CALL_METHOD(f, oparg, *ignored): # opargs contains the arg, and kwarg count, excluding the implicit 'self' n_args = oparg & 0xff n_kwargs = (oparg >> 8) & 0xff w_self = f.peekvalue_maybe_none(n_args + (2 * n_kwargs)) n = n_args + (w_self is not None) if not n_kwargs: w_callable = f.peekvalue(n_args + (2 * n_kwargs) + 1) w_result = f.space.call_valuestack( > w_callable, n, f, methodcall=w_self is not None, dropvalues=n_args + 2) objspace\std\callmethod.py:96: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_funcres_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:163]', line 1> at line 5 dropvalues = 5, methodcall = False def call_valuestack(self, w_func, nargs, frame, dropvalues, methodcall=False): # methodcall is only used for better error messages in argument.py from pypy.interpreter.function import Function, Method, is_builtin_code if frame.get_is_being_profiled() and is_builtin_code(w_func): # XXX: this code is copied&pasted :-( from the slow path below # call_valuestack(). args = frame.make_arguments(nargs) frame.dropvalues(dropvalues) return self.call_args_and_c_profile(frame, w_func, args) if not self.config.objspace.disable_call_speedhacks: # start of hack for performance if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: w_func = w_func.w_function # reuse callable stack place for w_inst frame.settopvalue(w_inst, nargs) nargs += 1 methodcall = True elif nargs > 0 and ( self.abstract_isinstance_w(frame.peekvalue(nargs-1), # :-( w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): return w_func.funccall_valuestack( > nargs, frame, methodcall=methodcall, dropvalues=dropvalues) interpreter\baseobjspace.py:1243: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_funcres_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:163]', line 1> at line 5 dropvalues = 5, methodcall = False def funccall_valuestack(self, nargs, frame, dropvalues, methodcall=False): # speed hack # methodcall is only for better error messages from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit # if (jit.we_are_jitted() and code is self.space._code_of_sys_exc_info and nargs == 0): frame.dropvalues(dropvalues) from pypy.module.sys.vm import exc_info_direct return exc_info_direct(self.space, frame) # fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: f_0 = frame.peekvalue(0) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, f_0) elif nargs == 2: f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, f_1, f_0) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) frame.dropvalues(dropvalues) return code.fastcall_3(self.space, self, f_2, f_1, f_0) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) f_3 = frame.peekvalue(3) frame.dropvalues(dropvalues) return code.fastcall_4(self.space, self, f_3, f_2, f_1, f_0) elif (nargs | Code.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) return self._flat_pycall(code, nargs, frame, dropvalues) elif fast_natural_arity & Code.FLATPYCALL: natural_arity = fast_natural_arity & 0xff if natural_arity > nargs >= natural_arity - len(self.defs_w): assert isinstance(code, PyCode) return self._flat_pycall_defaults(code, nargs, frame, natural_arity - nargs, dropvalues) elif fast_natural_arity == Code.PASSTHROUGHARGS1 and nargs >= 1: assert isinstance(code, gateway.BuiltinCodePassThroughArguments1) w_obj = frame.peekvalue(nargs-1) args = frame.make_arguments(nargs-1) frame.dropvalues(dropvalues) return code.funcrun_obj(self, w_obj, args) args = frame.make_arguments(nargs, methodcall=methodcall) frame.dropvalues(dropvalues) > return self.call_args(args) interpreter\function.py:190: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('int *foo(void);'), W_BytesObject('test_funcres_ptr'), W_BytesObject('int *foo(void) { static int x=-12345; return &x; }')]) def call_args(self, args): # delegate activation to code > w_res = self.getcode().funcrun(self, args) interpreter\function.py:68: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('int *foo(void);'), W_BytesObject('test_funcres_ptr'), W_BytesObject('int *foo(void) { static int x=-12345; return &x; }')]) def funcrun(self, func, args): > return BuiltinCode.funcrun_obj(self, func, None, args) interpreter\gateway.py:781: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('int *foo(void);'), W_BytesObject('test_funcres_ptr'), W_BytesObject('int *foo(void) { static int x=-12345; return &x; }')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: w_result = activation._run(space, scope_w) except DescrMismatch: if w_obj is not None: args = args.prepend(w_obj) return self._type_unwrap_mismatch(space, args) except Exception as e: > self.handle_exception(space, e) interpreter\gateway.py:795: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> space = StdObjSpace e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def handle_exception(self, space, e): try: if not we_are_translated(): raise raise e except OperationError: raise except Exception as e: # general fall-back from pypy.interpreter import error > raise error.get_converted_unexpected_exception(space, e) interpreter\gateway.py:819: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('int *foo(void);'), W_BytesObject('test_funcres_ptr'), W_BytesObject('int *foo(void) { static int x=-12345; return &x; }')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: > w_result = activation._run(space, scope_w) interpreter\gateway.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinActivation_UwS_ObjSpace_text_text_text_W_Root_W_Root_W_Root_int_W_Root object at 0x000002791c13af38> space = StdObjSpace scope_w = [W_BytesObject('int *foo(void);'), W_BytesObject('test_funcres_ptr'), W_BytesObject('int *foo(void) { static int x=-12345; return &x; }'), None, None, None, ...] def _run(self, space, scope_w): > return self.behavior(space, space.text_w(scope_w[0]), space.text_w(scope_w[1]), space.text_w(scope_w[2]), scope_w[3], scope_w[4], scope_w[5], space.gateway_int_w(scope_w[6]), scope_w[7]) <3152-codegen d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\rpython\tool\sourcetools.py:200>:3: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace, cdef = 'int *foo(void);' module_name = '_CFFI_test_funcres_ptr' source = 'int *foo(void) { static int x=-12345; return &x; }', w_includes = None w_extra_source = None, w_min_version = None, packed = 0 w_extra_compile_args = None @unwrap_spec(cdef='text', module_name='text', source='text', packed=int) def prepare(space, cdef, module_name, source, w_includes=None, w_extra_source=None, w_min_version=None, packed=False, w_extra_compile_args=None): try: import cffi from cffi import FFI # <== the system one, which from cffi import recompiler # needs to be at least cffi 1.0.4 from cffi import ffiplatform except ImportError: pytest.skip("system cffi module not found or older than 1.0.0") if w_min_version is None: min_version = (1, 4, 0) else: min_version = tuple(space.unwrap(w_min_version)) if cffi.__version_info__ < min_version: pytest.skip("system cffi module needs to be at least %s, got %s" % ( min_version, cffi.__version_info__)) space.appexec([], """(): import _cffi_backend # force it to be initialized """) includes = [] if w_includes: includes += space.unpackiterable(w_includes) assert module_name.startswith('test_') module_name = '_CFFI_' + module_name rdir = udir.ensure('recompiler', dir=1) rdir.join('Python.h').write( '#include <stdio.h>\n' '#define PYPY_VERSION XX\n' '#define PyMODINIT_FUNC /*exported*/ void\n' ) path = module_name.replace('.', os.sep) if '.' in module_name: subrdir = rdir.join(module_name[:module_name.index('.')]) os.mkdir(str(subrdir)) else: subrdir = rdir c_file = str(rdir.join('%s.c' % path)) ffi = FFI() for include_ffi_object in includes: ffi.include(include_ffi_object._test_recompiler_source_ffi) ffi.cdef(cdef, packed=packed) ffi.set_source(module_name, source) ffi.emit_c_code(c_file) base_module_name = module_name.split('.')[-1] sources = [] if w_extra_source is not None: sources.append(space.str_w(w_extra_source)) kwargs = {} # GCC 14 promotes -Wincompatible-pointer-types from a warning to an error # by default, which breaks cffi's intentionally-mismatched field-check # probes (e.g. test_misdeclared_field_1). Keep it a warning so the module # compiles and cffi's runtime checks can run. extra = ['-Wno-error=incompatible-pointer-types'] if w_extra_compile_args is not None: extra = extra + space.unwrap(w_extra_compile_args) kwargs['extra_compile_args'] = extra ext = ffiplatform.get_extension(c_file, module_name, include_dirs=[str(rdir)], export_symbols=['_cffi_pypyinit_' + base_module_name], sources=sources, **kwargs) > ffiplatform.compile(str(rdir), ext) module\_cffi_backend\test\test_recompiler.py:86: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x00000279212a5a60> compiler_verbose = 0, debug = None def compile(tmpdir, ext, compiler_verbose=0, debug=None): """Compile a C extension module using distutils.""" saved_environ = os.environ.copy() try: > outputfilename = _build(tmpdir, ext, compiler_verbose, debug) d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x00000279212a5a60> compiler_verbose = 0, debug = 0 def _build(tmpdir, ext, compiler_verbose=0, debug=None): # XXX compact but horrible :-( from cffi._shimmed_dist_utils import Distribution, CompileError, LinkError, set_threshold, set_verbosity dist = Distribution({'ext_modules': [ext]}) dist.parse_config_files() options = dist.get_option_dict('build_ext') if debug is None: debug = sys.flags.debug options['debug'] = ('ffiplatform', debug) options['force'] = ('ffiplatform', True) options['build_lib'] = ('ffiplatform', tmpdir) options['build_temp'] = ('ffiplatform', tmpdir) # try: old_level = set_threshold(0) or 0 try: set_verbosity(compiler_verbose) dist.run_command('build_ext') cmd_obj = dist.get_command_obj('build_ext') [soname] = cmd_obj.get_outputs() finally: set_threshold(old_level) except (CompileError, LinkError) as e: > raise VerificationError('%s: %s' % (e.__class__.__name__, e)) E VerificationError: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2 d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:54: VerificationError ---------------------------- Captured stdout call ----------------------------- generating d:\systemtemp\pytest\usession-main-595\recompiler\_CFFI_test_funcres_ptr.c ---------------------------- Captured stderr call ----------------------------- cl : Command line error D8021 : invalid numeric argument '/Wno-error=incompatible-pointer-types' ___________________ AppTestRecompiler.test_global_var_array ___________________ self = <CallInfo when='call' exception: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2> func = <function <lambda> at 0x0000027921082db8>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ..\_pytest\runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ..\_pytest\runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_global_var_array'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_global_var_array'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ..\_pytest\vendored_packages\pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00000279153616a8> hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_global_var_array'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_global_var_array'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ..\_pytest\vendored_packages\pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_global_var_array'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_global_var_array'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ..\_pytest\vendored_packages\pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_global_var_array'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791fb68ac0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i..._var_array'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027921290ee0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027921290ee0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i..._var_array'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_global_var_array'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791fb68a70> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i..._var_array'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027921290ea0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027921290ea0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i..._var_array'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_global_var_array'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ..\_pytest\vendored_packages\pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_global_var_array'> def pytest_runtest_call(item): try: > item.runtest() ..\_pytest\runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_global_var_array'> def runtest(self): target = self.obj if self.config.option.runappdirect: return target() space = target.im_self.space filename = self._getdynfilename(target) func = app2interp_temp(target.im_func, filename=filename) w_instance = self.parent.w_instance > self.execute_appex(space, func, space, w_instance) tool\pytest\apptest.py:89: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_global_var_array'>, space = StdObjSpace target = <function test_global_var_array at 0x0000027921082e30> args = (StdObjSpace, <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>) def execute_appex(self, space, target, *args): self.space = space try: > target(*args) tool\pytest\apptest.py:30: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) w_func = <Function test_global_var_array> args = <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8> def appcaller(space, *args_w): if not isinstance(space, ObjSpace): raise TypeError("first argument must be a space instance.") # the last argument can be an Arguments w_func = self.wget(space, name) if not args_w: return space.call_function(w_func) else: args = args_w[-1] assert args is not None if not isinstance(args, Arguments): > return space.call_function(w_func, *args_w) interpreter\gateway.py:1227: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <Function test_global_var_array> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) nargs = 1, Function = <class 'pypy.interpreter.function.Function'> Method = <class 'pypy.interpreter.function.Method'> def call_function(self, w_func, *args_w): nargs = len(args_w) # used for pruning funccall versions if not self.config.objspace.disable_call_speedhacks and nargs < 5: # start of hack for performance from pypy.interpreter.function import Function, Method if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: if nargs < 4: func = w_func.w_function if isinstance(func, Function): return func.funccall(w_inst, *args_w) elif args_w and ( self.abstract_isinstance_w(args_w[0], w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): > return w_func.funccall(*args_w) interpreter\baseobjspace.py:1210: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <Function test_global_var_array> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) gateway = <module 'pypy.interpreter.gateway' from 'd:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\interpreter\\gateway.pyc'> PyCode = <class 'pypy.interpreter.pycode.PyCode'> code = <code object test_global_var_array, file '[d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:170]', line 1> def funccall(self, *args_w): # speed hack from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit nargs = len(args_w) fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, args_w[0]) elif nargs == 2: assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, args_w[0], args_w[1]) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) return code.fastcall_3(self.space, self, args_w[0], args_w[1], args_w[2]) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) return code.fastcall_4(self.space, self, args_w[0], args_w[1], args_w[2], args_w[3]) elif (nargs | PyCode.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) if nargs < 5: new_frame = self.space.createframe(code, self.w_func_globals, self) for i in funccallunrolling: if i < nargs: new_frame.locals_cells_stack_w[i] = args_w[i] > return new_frame.run() interpreter\function.py:118: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_global_v...uild\pypy\module\_cffi_backend\test\test_recompiler.py:170]', line 1> at line 5 def run(self): """Start this frame's execution.""" if self.getcode().co_flags & pycode.CO_GENERATOR: from pypy.interpreter.generator import GeneratorIterator return GeneratorIterator(self) else: > return self.execute_frame() interpreter\pyframe.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_global_v...uild\pypy\module\_cffi_backend\test\test_recompiler.py:170]', line 1> at line 5 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, executioncontext) except OperationError: raise except Exception as e: # general fall-back > raise self._convert_unexpected_exception(e) interpreter\pyframe.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_global_v...uild\pypy\module\_cffi_backend\test\test_recompiler.py:170]', line 1> at line 5 e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def _convert_unexpected_exception(self, e): from pypy.interpreter import error > operr = error.get_converted_unexpected_exception(self.space, e) interpreter\pyframe.py:943: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_global_v...uild\pypy\module\_cffi_backend\test\test_recompiler.py:170]', line 1> at line 5 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, > executioncontext) interpreter\pyframe.py:286: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_global_v...uild\pypy\module\_cffi_backend\test\test_recompiler.py:170]', line 1> at line 5 pycode = <code object test_global_var_array, file '[d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:170]', line 1> next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def dispatch(self, pycode, next_instr, ec): # For the sequel, force 'next_instr' to be unsigned for performance next_instr = r_uint(next_instr) co_code = pycode.co_code try: while True: > next_instr = self.handle_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:64: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_global_v...uild\pypy\module\_cffi_backend\test\test_recompiler.py:170]', line 1> at line 5 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00d\x04\x00|\x02\x00j\x01\x00d\...\x00\x19d\x07\x00k\x02\x00s`\x00t\x02\x00\x82\x01\x00d\x00\x00Sd\x07\x00k\x02\x00s`\x00t\x02\x00\x82\x01\x00d\x00\x00S' next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def handle_bytecode(self, co_code, next_instr, ec): try: > next_instr = self.dispatch_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:71: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_global_v...uild\pypy\module\_cffi_backend\test\test_recompiler.py:170]', line 1> at line 5 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00d\x04\x00|\x02\x00j\x01\x00d\...\x00\x19d\x07\x00k\x02\x00s`\x00t\x02\x00\x82\x01\x00d\x00\x00Sd\x07\x00k\x02\x00s`\x00t\x02\x00\x82\x01\x00d\x00\x00S' next_instr = 18L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> @jit.unroll_safe def dispatch_bytecode(self, co_code, next_instr, ec): while True: self.last_instr = intmask(next_instr) if jit.we_are_jitted(): if self.debugdata: ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) else: # Only reload next_instr from last_instr when something that # can modify it actually ran (trace function or action # dispatcher). In the common case (no trace, positive ticker) # next_instr is unchanged and the round-trip is skipped. _d = self.debugdata if ec.space.reverse_debugging or ( _d is not None and _d.w_f_trace is not None) or ( not we_are_translated() and 'bytecode_only_trace' in ec.__dict__): ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) actionflag = ec.space.actionflag if actionflag.decrement_ticker(TICK_COUNTER_STEP) < 0: actionflag.action_dispatcher(ec, self) next_instr = r_uint(self.last_instr) opcode = ord(co_code[next_instr]) next_instr += 1 if opcode >= HAVE_ARGUMENT: lo = ord(co_code[next_instr]) hi = ord(co_code[next_instr+1]) next_instr += 2 oparg = (hi * 256) | lo else: oparg = 0 # note: the structure of the code here is such that it makes # (after translation) a big "if/elif" chain, which is then # turned into a switch(). while opcode == opcodedesc.EXTENDED_ARG.index: opcode = ord(co_code[next_instr]) if opcode < HAVE_ARGUMENT: raise BytecodeCorruption lo = ord(co_code[next_instr+1]) hi = ord(co_code[next_instr+2]) next_instr += 3 oparg = (oparg * 65536) | (hi * 256) | lo if opcode == opcodedesc.RETURN_VALUE.index: if not self.blockstack_non_empty(): self.frame_finished_execution = True # for generators raise Return w_returnvalue = self.popvalue() block = self.unrollstack(SReturnValue.kind) if block is None: self.pushvalue(w_returnvalue) raise Return else: unroller = SReturnValue(w_returnvalue) next_instr = block.handle(self, unroller) return next_instr # now inside a 'finally' block elif opcode == opcodedesc.END_FINALLY.index: unroller = self.end_finally() if isinstance(unroller, SuspendedUnroller): # go on unrolling the stack block = self.unrollstack(unroller.kind) if block is None: w_result = unroller.nomoreblocks() self.pushvalue(w_result) raise Return else: next_instr = block.handle(self, unroller) return next_instr elif opcode == opcodedesc.JUMP_ABSOLUTE.index: return self.jump_absolute(oparg, ec) elif opcode == opcodedesc.BREAK_LOOP.index: next_instr = self.BREAK_LOOP(oparg, next_instr) elif opcode == opcodedesc.CONTINUE_LOOP.index: return self.CONTINUE_LOOP(oparg, next_instr) elif opcode == opcodedesc.FOR_ITER.index: next_instr = self.FOR_ITER(oparg, next_instr) elif opcode == opcodedesc.JUMP_FORWARD.index: next_instr = self.JUMP_FORWARD(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_FALSE_OR_POP.index: next_instr = self.JUMP_IF_FALSE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_NOT_DEBUG.index: next_instr = self.JUMP_IF_NOT_DEBUG(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_TRUE_OR_POP.index: next_instr = self.JUMP_IF_TRUE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_FALSE.index: next_instr = self.POP_JUMP_IF_FALSE(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_TRUE.index: next_instr = self.POP_JUMP_IF_TRUE(oparg, next_instr) elif opcode == opcodedesc.BINARY_ADD.index: self.BINARY_ADD(oparg, next_instr) elif opcode == opcodedesc.BINARY_AND.index: self.BINARY_AND(oparg, next_instr) elif opcode == opcodedesc.BINARY_DIVIDE.index: self.BINARY_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_FLOOR_DIVIDE.index: self.BINARY_FLOOR_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_LSHIFT.index: self.BINARY_LSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_MODULO.index: self.BINARY_MODULO(oparg, next_instr) elif opcode == opcodedesc.BINARY_MULTIPLY.index: self.BINARY_MULTIPLY(oparg, next_instr) elif opcode == opcodedesc.BINARY_OR.index: self.BINARY_OR(oparg, next_instr) elif opcode == opcodedesc.BINARY_POWER.index: self.BINARY_POWER(oparg, next_instr) elif opcode == opcodedesc.BINARY_RSHIFT.index: self.BINARY_RSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBSCR.index: self.BINARY_SUBSCR(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBTRACT.index: self.BINARY_SUBTRACT(oparg, next_instr) elif opcode == opcodedesc.BINARY_TRUE_DIVIDE.index: self.BINARY_TRUE_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_XOR.index: self.BINARY_XOR(oparg, next_instr) elif opcode == opcodedesc.BUILD_CLASS.index: self.BUILD_CLASS(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST.index: self.BUILD_LIST(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST_FROM_ARG.index: self.BUILD_LIST_FROM_ARG(oparg, next_instr) elif opcode == opcodedesc.BUILD_MAP.index: self.BUILD_MAP(oparg, next_instr) elif opcode == opcodedesc.BUILD_SET.index: self.BUILD_SET(oparg, next_instr) elif opcode == opcodedesc.BUILD_SLICE.index: self.BUILD_SLICE(oparg, next_instr) elif opcode == opcodedesc.BUILD_TUPLE.index: self.BUILD_TUPLE(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION.index: self.CALL_FUNCTION(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_KW.index: self.CALL_FUNCTION_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR.index: self.CALL_FUNCTION_VAR(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR_KW.index: self.CALL_FUNCTION_VAR_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_METHOD.index: > self.CALL_METHOD(oparg, next_instr) interpreter\pyopcode.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ f = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_global_v...uild\pypy\module\_cffi_backend\test\test_recompiler.py:170]', line 1> at line 5 oparg = 3, ignored = (18L,), n_args = 3, n_kwargs = 0, w_self = None @jit.unroll_safe def CALL_METHOD(f, oparg, *ignored): # opargs contains the arg, and kwarg count, excluding the implicit 'self' n_args = oparg & 0xff n_kwargs = (oparg >> 8) & 0xff w_self = f.peekvalue_maybe_none(n_args + (2 * n_kwargs)) n = n_args + (w_self is not None) if not n_kwargs: w_callable = f.peekvalue(n_args + (2 * n_kwargs) + 1) w_result = f.space.call_valuestack( > w_callable, n, f, methodcall=w_self is not None, dropvalues=n_args + 2) objspace\std\callmethod.py:96: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_global_v...uild\pypy\module\_cffi_backend\test\test_recompiler.py:170]', line 1> at line 5 dropvalues = 5, methodcall = False def call_valuestack(self, w_func, nargs, frame, dropvalues, methodcall=False): # methodcall is only used for better error messages in argument.py from pypy.interpreter.function import Function, Method, is_builtin_code if frame.get_is_being_profiled() and is_builtin_code(w_func): # XXX: this code is copied&pasted :-( from the slow path below # call_valuestack(). args = frame.make_arguments(nargs) frame.dropvalues(dropvalues) return self.call_args_and_c_profile(frame, w_func, args) if not self.config.objspace.disable_call_speedhacks: # start of hack for performance if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: w_func = w_func.w_function # reuse callable stack place for w_inst frame.settopvalue(w_inst, nargs) nargs += 1 methodcall = True elif nargs > 0 and ( self.abstract_isinstance_w(frame.peekvalue(nargs-1), # :-( w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): return w_func.funccall_valuestack( > nargs, frame, methodcall=methodcall, dropvalues=dropvalues) interpreter\baseobjspace.py:1243: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_global_v...uild\pypy\module\_cffi_backend\test\test_recompiler.py:170]', line 1> at line 5 dropvalues = 5, methodcall = False def funccall_valuestack(self, nargs, frame, dropvalues, methodcall=False): # speed hack # methodcall is only for better error messages from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit # if (jit.we_are_jitted() and code is self.space._code_of_sys_exc_info and nargs == 0): frame.dropvalues(dropvalues) from pypy.module.sys.vm import exc_info_direct return exc_info_direct(self.space, frame) # fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: f_0 = frame.peekvalue(0) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, f_0) elif nargs == 2: f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, f_1, f_0) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) frame.dropvalues(dropvalues) return code.fastcall_3(self.space, self, f_2, f_1, f_0) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) f_3 = frame.peekvalue(3) frame.dropvalues(dropvalues) return code.fastcall_4(self.space, self, f_3, f_2, f_1, f_0) elif (nargs | Code.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) return self._flat_pycall(code, nargs, frame, dropvalues) elif fast_natural_arity & Code.FLATPYCALL: natural_arity = fast_natural_arity & 0xff if natural_arity > nargs >= natural_arity - len(self.defs_w): assert isinstance(code, PyCode) return self._flat_pycall_defaults(code, nargs, frame, natural_arity - nargs, dropvalues) elif fast_natural_arity == Code.PASSTHROUGHARGS1 and nargs >= 1: assert isinstance(code, gateway.BuiltinCodePassThroughArguments1) w_obj = frame.peekvalue(nargs-1) args = frame.make_arguments(nargs-1) frame.dropvalues(dropvalues) return code.funcrun_obj(self, w_obj, args) args = frame.make_arguments(nargs, methodcall=methodcall) frame.dropvalues(dropvalues) > return self.call_args(args) interpreter\function.py:190: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('int a[100];'), W_BytesObject('test_global_var_array'), W_BytesObject('int a[100] = { 9999 };')]) def call_args(self, args): # delegate activation to code > w_res = self.getcode().funcrun(self, args) interpreter\function.py:68: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('int a[100];'), W_BytesObject('test_global_var_array'), W_BytesObject('int a[100] = { 9999 };')]) def funcrun(self, func, args): > return BuiltinCode.funcrun_obj(self, func, None, args) interpreter\gateway.py:781: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('int a[100];'), W_BytesObject('test_global_var_array'), W_BytesObject('int a[100] = { 9999 };')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: w_result = activation._run(space, scope_w) except DescrMismatch: if w_obj is not None: args = args.prepend(w_obj) return self._type_unwrap_mismatch(space, args) except Exception as e: > self.handle_exception(space, e) interpreter\gateway.py:795: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> space = StdObjSpace e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def handle_exception(self, space, e): try: if not we_are_translated(): raise raise e except OperationError: raise except Exception as e: # general fall-back from pypy.interpreter import error > raise error.get_converted_unexpected_exception(space, e) interpreter\gateway.py:819: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('int a[100];'), W_BytesObject('test_global_var_array'), W_BytesObject('int a[100] = { 9999 };')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: > w_result = activation._run(space, scope_w) interpreter\gateway.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinActivation_UwS_ObjSpace_text_text_text_W_Root_W_Root_W_Root_int_W_Root object at 0x000002791c13af38> space = StdObjSpace scope_w = [W_BytesObject('int a[100];'), W_BytesObject('test_global_var_array'), W_BytesObject('int a[100] = { 9999 };'), None, None, None, ...] def _run(self, space, scope_w): > return self.behavior(space, space.text_w(scope_w[0]), space.text_w(scope_w[1]), space.text_w(scope_w[2]), scope_w[3], scope_w[4], scope_w[5], space.gateway_int_w(scope_w[6]), scope_w[7]) <3152-codegen d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\rpython\tool\sourcetools.py:200>:3: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace, cdef = 'int a[100];' module_name = '_CFFI_test_global_var_array', source = 'int a[100] = { 9999 };' w_includes = None, w_extra_source = None, w_min_version = None, packed = 0 w_extra_compile_args = None @unwrap_spec(cdef='text', module_name='text', source='text', packed=int) def prepare(space, cdef, module_name, source, w_includes=None, w_extra_source=None, w_min_version=None, packed=False, w_extra_compile_args=None): try: import cffi from cffi import FFI # <== the system one, which from cffi import recompiler # needs to be at least cffi 1.0.4 from cffi import ffiplatform except ImportError: pytest.skip("system cffi module not found or older than 1.0.0") if w_min_version is None: min_version = (1, 4, 0) else: min_version = tuple(space.unwrap(w_min_version)) if cffi.__version_info__ < min_version: pytest.skip("system cffi module needs to be at least %s, got %s" % ( min_version, cffi.__version_info__)) space.appexec([], """(): import _cffi_backend # force it to be initialized """) includes = [] if w_includes: includes += space.unpackiterable(w_includes) assert module_name.startswith('test_') module_name = '_CFFI_' + module_name rdir = udir.ensure('recompiler', dir=1) rdir.join('Python.h').write( '#include <stdio.h>\n' '#define PYPY_VERSION XX\n' '#define PyMODINIT_FUNC /*exported*/ void\n' ) path = module_name.replace('.', os.sep) if '.' in module_name: subrdir = rdir.join(module_name[:module_name.index('.')]) os.mkdir(str(subrdir)) else: subrdir = rdir c_file = str(rdir.join('%s.c' % path)) ffi = FFI() for include_ffi_object in includes: ffi.include(include_ffi_object._test_recompiler_source_ffi) ffi.cdef(cdef, packed=packed) ffi.set_source(module_name, source) ffi.emit_c_code(c_file) base_module_name = module_name.split('.')[-1] sources = [] if w_extra_source is not None: sources.append(space.str_w(w_extra_source)) kwargs = {} # GCC 14 promotes -Wincompatible-pointer-types from a warning to an error # by default, which breaks cffi's intentionally-mismatched field-check # probes (e.g. test_misdeclared_field_1). Keep it a warning so the module # compiles and cffi's runtime checks can run. extra = ['-Wno-error=incompatible-pointer-types'] if w_extra_compile_args is not None: extra = extra + space.unwrap(w_extra_compile_args) kwargs['extra_compile_args'] = extra ext = ffiplatform.get_extension(c_file, module_name, include_dirs=[str(rdir)], export_symbols=['_cffi_pypyinit_' + base_module_name], sources=sources, **kwargs) > ffiplatform.compile(str(rdir), ext) module\_cffi_backend\test\test_recompiler.py:86: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x000002791b5c44a0> compiler_verbose = 0, debug = None def compile(tmpdir, ext, compiler_verbose=0, debug=None): """Compile a C extension module using distutils.""" saved_environ = os.environ.copy() try: > outputfilename = _build(tmpdir, ext, compiler_verbose, debug) d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x000002791b5c44a0> compiler_verbose = 0, debug = 0 def _build(tmpdir, ext, compiler_verbose=0, debug=None): # XXX compact but horrible :-( from cffi._shimmed_dist_utils import Distribution, CompileError, LinkError, set_threshold, set_verbosity dist = Distribution({'ext_modules': [ext]}) dist.parse_config_files() options = dist.get_option_dict('build_ext') if debug is None: debug = sys.flags.debug options['debug'] = ('ffiplatform', debug) options['force'] = ('ffiplatform', True) options['build_lib'] = ('ffiplatform', tmpdir) options['build_temp'] = ('ffiplatform', tmpdir) # try: old_level = set_threshold(0) or 0 try: set_verbosity(compiler_verbose) dist.run_command('build_ext') cmd_obj = dist.get_command_obj('build_ext') [soname] = cmd_obj.get_outputs() finally: set_threshold(old_level) except (CompileError, LinkError) as e: > raise VerificationError('%s: %s' % (e.__class__.__name__, e)) E VerificationError: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2 d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:54: VerificationError ---------------------------- Captured stdout call ----------------------------- generating d:\systemtemp\pytest\usession-main-595\recompiler\_CFFI_test_global_var_array.c ---------------------------- Captured stderr call ----------------------------- d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\cparser.py:165: UserWarning: Global variable 'a' in cdef(): for consistency with C it should have a storage class specifier (usually 'extern') "(usually 'extern')" % (decl.name,)) cl : Command line error D8021 : invalid numeric argument '/Wno-error=incompatible-pointer-types' ____________________ AppTestRecompiler.test_verify_typedef ____________________ self = <CallInfo when='call' exception: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2> func = <function <lambda> at 0x0000027925c418f8>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ..\_pytest\runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ..\_pytest\runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_verify_typedef'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_verify_typedef'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ..\_pytest\vendored_packages\pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00000279153616a8> hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_verify_typedef'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_verify_typedef'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ..\_pytest\vendored_packages\pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_verify_typedef'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_verify_typedef'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ..\_pytest\vendored_packages\pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_verify_typedef'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791b786ed0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...fy_typedef'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027925f2bda0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027925f2bda0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...fy_typedef'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_verify_typedef'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791b786de0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...fy_typedef'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027925f2bd60> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027925f2bd60> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...fy_typedef'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_verify_typedef'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ..\_pytest\vendored_packages\pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_verify_typedef'> def pytest_runtest_call(item): try: > item.runtest() ..\_pytest\runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_verify_typedef'> def runtest(self): target = self.obj if self.config.option.runappdirect: return target() space = target.im_self.space filename = self._getdynfilename(target) func = app2interp_temp(target.im_func, filename=filename) w_instance = self.parent.w_instance > self.execute_appex(space, func, space, w_instance) tool\pytest\apptest.py:89: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_verify_typedef'>, space = StdObjSpace target = <function test_verify_typedef at 0x0000027925c419e8> args = (StdObjSpace, <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>) def execute_appex(self, space, target, *args): self.space = space try: > target(*args) tool\pytest\apptest.py:30: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) w_func = <Function test_verify_typedef> args = <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8> def appcaller(space, *args_w): if not isinstance(space, ObjSpace): raise TypeError("first argument must be a space instance.") # the last argument can be an Arguments w_func = self.wget(space, name) if not args_w: return space.call_function(w_func) else: args = args_w[-1] assert args is not None if not isinstance(args, Arguments): > return space.call_function(w_func, *args_w) interpreter\gateway.py:1227: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <Function test_verify_typedef> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) nargs = 1, Function = <class 'pypy.interpreter.function.Function'> Method = <class 'pypy.interpreter.function.Method'> def call_function(self, w_func, *args_w): nargs = len(args_w) # used for pruning funccall versions if not self.config.objspace.disable_call_speedhacks and nargs < 5: # start of hack for performance from pypy.interpreter.function import Function, Method if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: if nargs < 4: func = w_func.w_function if isinstance(func, Function): return func.funccall(w_inst, *args_w) elif args_w and ( self.abstract_isinstance_w(args_w[0], w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): > return w_func.funccall(*args_w) interpreter\baseobjspace.py:1210: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <Function test_verify_typedef> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) gateway = <module 'pypy.interpreter.gateway' from 'd:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\interpreter\\gateway.pyc'> PyCode = <class 'pypy.interpreter.pycode.PyCode'> code = <code object test_verify_typedef, file '[d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:179]', line 1> def funccall(self, *args_w): # speed hack from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit nargs = len(args_w) fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, args_w[0]) elif nargs == 2: assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, args_w[0], args_w[1]) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) return code.fastcall_3(self.space, self, args_w[0], args_w[1], args_w[2]) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) return code.fastcall_4(self.space, self, args_w[0], args_w[1], args_w[2], args_w[3]) elif (nargs | PyCode.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) if nargs < 5: new_frame = self.space.createframe(code, self.w_func_globals, self) for i in funccallunrolling: if i < nargs: new_frame.locals_cells_stack_w[i] = args_w[i] > return new_frame.run() interpreter\function.py:118: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_verify_t...uild\pypy\module\_cffi_backend\test\test_recompiler.py:179]', line 1> at line 5 def run(self): """Start this frame's execution.""" if self.getcode().co_flags & pycode.CO_GENERATOR: from pypy.interpreter.generator import GeneratorIterator return GeneratorIterator(self) else: > return self.execute_frame() interpreter\pyframe.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_verify_t...uild\pypy\module\_cffi_backend\test\test_recompiler.py:179]', line 1> at line 5 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, executioncontext) except OperationError: raise except Exception as e: # general fall-back > raise self._convert_unexpected_exception(e) interpreter\pyframe.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_verify_t...uild\pypy\module\_cffi_backend\test\test_recompiler.py:179]', line 1> at line 5 e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def _convert_unexpected_exception(self, e): from pypy.interpreter import error > operr = error.get_converted_unexpected_exception(self.space, e) interpreter\pyframe.py:943: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_verify_t...uild\pypy\module\_cffi_backend\test\test_recompiler.py:179]', line 1> at line 5 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, > executioncontext) interpreter\pyframe.py:286: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_verify_t...uild\pypy\module\_cffi_backend\test\test_recompiler.py:179]', line 1> at line 5 pycode = <code object test_verify_typedef, file '[d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:179]', line 1> next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def dispatch(self, pycode, next_instr, ec): # For the sequel, force 'next_instr' to be unsigned for performance next_instr = r_uint(next_instr) co_code = pycode.co_code try: while True: > next_instr = self.handle_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:64: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_verify_t...uild\pypy\module\_cffi_backend\test\test_recompiler.py:179]', line 1> at line 5 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x01\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00\xcc$\x00|\x01\x00\xc9\x01\x00d\x03\x00\xca\x01\x00|\x01\x00\xc9\x01\x00d\x04\x00\xca\x01\x00k\x02\x00sB\x00t\x02\x00\x82\x01\x00d\x00\x00S' next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def handle_bytecode(self, co_code, next_instr, ec): try: > next_instr = self.dispatch_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:71: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_verify_t...uild\pypy\module\_cffi_backend\test\test_recompiler.py:179]', line 1> at line 5 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x01\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00\xcc$\x00|\x01\x00\xc9\x01\x00d\x03\x00\xca\x01\x00|\x01\x00\xc9\x01\x00d\x04\x00\xca\x01\x00k\x02\x00sB\x00t\x02\x00\x82\x01\x00d\x00\x00S' next_instr = 18L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> @jit.unroll_safe def dispatch_bytecode(self, co_code, next_instr, ec): while True: self.last_instr = intmask(next_instr) if jit.we_are_jitted(): if self.debugdata: ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) else: # Only reload next_instr from last_instr when something that # can modify it actually ran (trace function or action # dispatcher). In the common case (no trace, positive ticker) # next_instr is unchanged and the round-trip is skipped. _d = self.debugdata if ec.space.reverse_debugging or ( _d is not None and _d.w_f_trace is not None) or ( not we_are_translated() and 'bytecode_only_trace' in ec.__dict__): ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) actionflag = ec.space.actionflag if actionflag.decrement_ticker(TICK_COUNTER_STEP) < 0: actionflag.action_dispatcher(ec, self) next_instr = r_uint(self.last_instr) opcode = ord(co_code[next_instr]) next_instr += 1 if opcode >= HAVE_ARGUMENT: lo = ord(co_code[next_instr]) hi = ord(co_code[next_instr+1]) next_instr += 2 oparg = (hi * 256) | lo else: oparg = 0 # note: the structure of the code here is such that it makes # (after translation) a big "if/elif" chain, which is then # turned into a switch(). while opcode == opcodedesc.EXTENDED_ARG.index: opcode = ord(co_code[next_instr]) if opcode < HAVE_ARGUMENT: raise BytecodeCorruption lo = ord(co_code[next_instr+1]) hi = ord(co_code[next_instr+2]) next_instr += 3 oparg = (oparg * 65536) | (hi * 256) | lo if opcode == opcodedesc.RETURN_VALUE.index: if not self.blockstack_non_empty(): self.frame_finished_execution = True # for generators raise Return w_returnvalue = self.popvalue() block = self.unrollstack(SReturnValue.kind) if block is None: self.pushvalue(w_returnvalue) raise Return else: unroller = SReturnValue(w_returnvalue) next_instr = block.handle(self, unroller) return next_instr # now inside a 'finally' block elif opcode == opcodedesc.END_FINALLY.index: unroller = self.end_finally() if isinstance(unroller, SuspendedUnroller): # go on unrolling the stack block = self.unrollstack(unroller.kind) if block is None: w_result = unroller.nomoreblocks() self.pushvalue(w_result) raise Return else: next_instr = block.handle(self, unroller) return next_instr elif opcode == opcodedesc.JUMP_ABSOLUTE.index: return self.jump_absolute(oparg, ec) elif opcode == opcodedesc.BREAK_LOOP.index: next_instr = self.BREAK_LOOP(oparg, next_instr) elif opcode == opcodedesc.CONTINUE_LOOP.index: return self.CONTINUE_LOOP(oparg, next_instr) elif opcode == opcodedesc.FOR_ITER.index: next_instr = self.FOR_ITER(oparg, next_instr) elif opcode == opcodedesc.JUMP_FORWARD.index: next_instr = self.JUMP_FORWARD(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_FALSE_OR_POP.index: next_instr = self.JUMP_IF_FALSE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_NOT_DEBUG.index: next_instr = self.JUMP_IF_NOT_DEBUG(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_TRUE_OR_POP.index: next_instr = self.JUMP_IF_TRUE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_FALSE.index: next_instr = self.POP_JUMP_IF_FALSE(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_TRUE.index: next_instr = self.POP_JUMP_IF_TRUE(oparg, next_instr) elif opcode == opcodedesc.BINARY_ADD.index: self.BINARY_ADD(oparg, next_instr) elif opcode == opcodedesc.BINARY_AND.index: self.BINARY_AND(oparg, next_instr) elif opcode == opcodedesc.BINARY_DIVIDE.index: self.BINARY_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_FLOOR_DIVIDE.index: self.BINARY_FLOOR_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_LSHIFT.index: self.BINARY_LSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_MODULO.index: self.BINARY_MODULO(oparg, next_instr) elif opcode == opcodedesc.BINARY_MULTIPLY.index: self.BINARY_MULTIPLY(oparg, next_instr) elif opcode == opcodedesc.BINARY_OR.index: self.BINARY_OR(oparg, next_instr) elif opcode == opcodedesc.BINARY_POWER.index: self.BINARY_POWER(oparg, next_instr) elif opcode == opcodedesc.BINARY_RSHIFT.index: self.BINARY_RSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBSCR.index: self.BINARY_SUBSCR(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBTRACT.index: self.BINARY_SUBTRACT(oparg, next_instr) elif opcode == opcodedesc.BINARY_TRUE_DIVIDE.index: self.BINARY_TRUE_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_XOR.index: self.BINARY_XOR(oparg, next_instr) elif opcode == opcodedesc.BUILD_CLASS.index: self.BUILD_CLASS(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST.index: self.BUILD_LIST(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST_FROM_ARG.index: self.BUILD_LIST_FROM_ARG(oparg, next_instr) elif opcode == opcodedesc.BUILD_MAP.index: self.BUILD_MAP(oparg, next_instr) elif opcode == opcodedesc.BUILD_SET.index: self.BUILD_SET(oparg, next_instr) elif opcode == opcodedesc.BUILD_SLICE.index: self.BUILD_SLICE(oparg, next_instr) elif opcode == opcodedesc.BUILD_TUPLE.index: self.BUILD_TUPLE(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION.index: self.CALL_FUNCTION(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_KW.index: self.CALL_FUNCTION_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR.index: self.CALL_FUNCTION_VAR(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR_KW.index: self.CALL_FUNCTION_VAR_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_METHOD.index: > self.CALL_METHOD(oparg, next_instr) interpreter\pyopcode.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ f = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_verify_t...uild\pypy\module\_cffi_backend\test\test_recompiler.py:179]', line 1> at line 5 oparg = 3, ignored = (18L,), n_args = 3, n_kwargs = 0, w_self = None @jit.unroll_safe def CALL_METHOD(f, oparg, *ignored): # opargs contains the arg, and kwarg count, excluding the implicit 'self' n_args = oparg & 0xff n_kwargs = (oparg >> 8) & 0xff w_self = f.peekvalue_maybe_none(n_args + (2 * n_kwargs)) n = n_args + (w_self is not None) if not n_kwargs: w_callable = f.peekvalue(n_args + (2 * n_kwargs) + 1) w_result = f.space.call_valuestack( > w_callable, n, f, methodcall=w_self is not None, dropvalues=n_args + 2) objspace\std\callmethod.py:96: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_verify_t...uild\pypy\module\_cffi_backend\test\test_recompiler.py:179]', line 1> at line 5 dropvalues = 5, methodcall = False def call_valuestack(self, w_func, nargs, frame, dropvalues, methodcall=False): # methodcall is only used for better error messages in argument.py from pypy.interpreter.function import Function, Method, is_builtin_code if frame.get_is_being_profiled() and is_builtin_code(w_func): # XXX: this code is copied&pasted :-( from the slow path below # call_valuestack(). args = frame.make_arguments(nargs) frame.dropvalues(dropvalues) return self.call_args_and_c_profile(frame, w_func, args) if not self.config.objspace.disable_call_speedhacks: # start of hack for performance if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: w_func = w_func.w_function # reuse callable stack place for w_inst frame.settopvalue(w_inst, nargs) nargs += 1 methodcall = True elif nargs > 0 and ( self.abstract_isinstance_w(frame.peekvalue(nargs-1), # :-( w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): return w_func.funccall_valuestack( > nargs, frame, methodcall=methodcall, dropvalues=dropvalues) interpreter\baseobjspace.py:1243: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_verify_t...uild\pypy\module\_cffi_backend\test\test_recompiler.py:179]', line 1> at line 5 dropvalues = 5, methodcall = False def funccall_valuestack(self, nargs, frame, dropvalues, methodcall=False): # speed hack # methodcall is only for better error messages from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit # if (jit.we_are_jitted() and code is self.space._code_of_sys_exc_info and nargs == 0): frame.dropvalues(dropvalues) from pypy.module.sys.vm import exc_info_direct return exc_info_direct(self.space, frame) # fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: f_0 = frame.peekvalue(0) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, f_0) elif nargs == 2: f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, f_1, f_0) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) frame.dropvalues(dropvalues) return code.fastcall_3(self.space, self, f_2, f_1, f_0) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) f_3 = frame.peekvalue(3) frame.dropvalues(dropvalues) return code.fastcall_4(self.space, self, f_3, f_2, f_1, f_0) elif (nargs | Code.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) return self._flat_pycall(code, nargs, frame, dropvalues) elif fast_natural_arity & Code.FLATPYCALL: natural_arity = fast_natural_arity & 0xff if natural_arity > nargs >= natural_arity - len(self.defs_w): assert isinstance(code, PyCode) return self._flat_pycall_defaults(code, nargs, frame, natural_arity - nargs, dropvalues) elif fast_natural_arity == Code.PASSTHROUGHARGS1 and nargs >= 1: assert isinstance(code, gateway.BuiltinCodePassThroughArguments1) w_obj = frame.peekvalue(nargs-1) args = frame.make_arguments(nargs-1) frame.dropvalues(dropvalues) return code.funcrun_obj(self, w_obj, args) args = frame.make_arguments(nargs, methodcall=methodcall) frame.dropvalues(dropvalues) > return self.call_args(args) interpreter\function.py:190: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('typedef int **foo_t;'), W_BytesObject('test_verify_typedef'), W_BytesObject('typedef int **foo_t;')]) def call_args(self, args): # delegate activation to code > w_res = self.getcode().funcrun(self, args) interpreter\function.py:68: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('typedef int **foo_t;'), W_BytesObject('test_verify_typedef'), W_BytesObject('typedef int **foo_t;')]) def funcrun(self, func, args): > return BuiltinCode.funcrun_obj(self, func, None, args) interpreter\gateway.py:781: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('typedef int **foo_t;'), W_BytesObject('test_verify_typedef'), W_BytesObject('typedef int **foo_t;')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: w_result = activation._run(space, scope_w) except DescrMismatch: if w_obj is not None: args = args.prepend(w_obj) return self._type_unwrap_mismatch(space, args) except Exception as e: > self.handle_exception(space, e) interpreter\gateway.py:795: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> space = StdObjSpace e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def handle_exception(self, space, e): try: if not we_are_translated(): raise raise e except OperationError: raise except Exception as e: # general fall-back from pypy.interpreter import error > raise error.get_converted_unexpected_exception(space, e) interpreter\gateway.py:819: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('typedef int **foo_t;'), W_BytesObject('test_verify_typedef'), W_BytesObject('typedef int **foo_t;')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: > w_result = activation._run(space, scope_w) interpreter\gateway.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinActivation_UwS_ObjSpace_text_text_text_W_Root_W_Root_W_Root_int_W_Root object at 0x000002791c13af38> space = StdObjSpace scope_w = [W_BytesObject('typedef int **foo_t;'), W_BytesObject('test_verify_typedef'), W_BytesObject('typedef int **foo_t;'), None, None, None, ...] def _run(self, space, scope_w): > return self.behavior(space, space.text_w(scope_w[0]), space.text_w(scope_w[1]), space.text_w(scope_w[2]), scope_w[3], scope_w[4], scope_w[5], space.gateway_int_w(scope_w[6]), scope_w[7]) <3152-codegen d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\rpython\tool\sourcetools.py:200>:3: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace, cdef = 'typedef int **foo_t;' module_name = '_CFFI_test_verify_typedef', source = 'typedef int **foo_t;' w_includes = None, w_extra_source = None, w_min_version = None, packed = 0 w_extra_compile_args = None @unwrap_spec(cdef='text', module_name='text', source='text', packed=int) def prepare(space, cdef, module_name, source, w_includes=None, w_extra_source=None, w_min_version=None, packed=False, w_extra_compile_args=None): try: import cffi from cffi import FFI # <== the system one, which from cffi import recompiler # needs to be at least cffi 1.0.4 from cffi import ffiplatform except ImportError: pytest.skip("system cffi module not found or older than 1.0.0") if w_min_version is None: min_version = (1, 4, 0) else: min_version = tuple(space.unwrap(w_min_version)) if cffi.__version_info__ < min_version: pytest.skip("system cffi module needs to be at least %s, got %s" % ( min_version, cffi.__version_info__)) space.appexec([], """(): import _cffi_backend # force it to be initialized """) includes = [] if w_includes: includes += space.unpackiterable(w_includes) assert module_name.startswith('test_') module_name = '_CFFI_' + module_name rdir = udir.ensure('recompiler', dir=1) rdir.join('Python.h').write( '#include <stdio.h>\n' '#define PYPY_VERSION XX\n' '#define PyMODINIT_FUNC /*exported*/ void\n' ) path = module_name.replace('.', os.sep) if '.' in module_name: subrdir = rdir.join(module_name[:module_name.index('.')]) os.mkdir(str(subrdir)) else: subrdir = rdir c_file = str(rdir.join('%s.c' % path)) ffi = FFI() for include_ffi_object in includes: ffi.include(include_ffi_object._test_recompiler_source_ffi) ffi.cdef(cdef, packed=packed) ffi.set_source(module_name, source) ffi.emit_c_code(c_file) base_module_name = module_name.split('.')[-1] sources = [] if w_extra_source is not None: sources.append(space.str_w(w_extra_source)) kwargs = {} # GCC 14 promotes -Wincompatible-pointer-types from a warning to an error # by default, which breaks cffi's intentionally-mismatched field-check # probes (e.g. test_misdeclared_field_1). Keep it a warning so the module # compiles and cffi's runtime checks can run. extra = ['-Wno-error=incompatible-pointer-types'] if w_extra_compile_args is not None: extra = extra + space.unwrap(w_extra_compile_args) kwargs['extra_compile_args'] = extra ext = ffiplatform.get_extension(c_file, module_name, include_dirs=[str(rdir)], export_symbols=['_cffi_pypyinit_' + base_module_name], sources=sources, **kwargs) > ffiplatform.compile(str(rdir), ext) module\_cffi_backend\test\test_recompiler.py:86: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x0000027925f2bee0> compiler_verbose = 0, debug = None def compile(tmpdir, ext, compiler_verbose=0, debug=None): """Compile a C extension module using distutils.""" saved_environ = os.environ.copy() try: > outputfilename = _build(tmpdir, ext, compiler_verbose, debug) d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x0000027925f2bee0> compiler_verbose = 0, debug = 0 def _build(tmpdir, ext, compiler_verbose=0, debug=None): # XXX compact but horrible :-( from cffi._shimmed_dist_utils import Distribution, CompileError, LinkError, set_threshold, set_verbosity dist = Distribution({'ext_modules': [ext]}) dist.parse_config_files() options = dist.get_option_dict('build_ext') if debug is None: debug = sys.flags.debug options['debug'] = ('ffiplatform', debug) options['force'] = ('ffiplatform', True) options['build_lib'] = ('ffiplatform', tmpdir) options['build_temp'] = ('ffiplatform', tmpdir) # try: old_level = set_threshold(0) or 0 try: set_verbosity(compiler_verbose) dist.run_command('build_ext') cmd_obj = dist.get_command_obj('build_ext') [soname] = cmd_obj.get_outputs() finally: set_threshold(old_level) except (CompileError, LinkError) as e: > raise VerificationError('%s: %s' % (e.__class__.__name__, e)) E VerificationError: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2 d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:54: VerificationError ---------------------------- Captured stdout call ----------------------------- generating d:\systemtemp\pytest\usession-main-595\recompiler\_CFFI_test_verify_typedef.c ---------------------------- Captured stderr call ----------------------------- cl : Command line error D8021 : invalid numeric argument '/Wno-error=incompatible-pointer-types' _______________ AppTestRecompiler.test_verify_typedef_dotdotdot _______________ self = <CallInfo when='call' exception: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2> func = <function <lambda> at 0x000002792a7d3358>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ..\_pytest\runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ..\_pytest\runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_verify_typedef_dotdotdot'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_verify_typedef_dotdotdot'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ..\_pytest\vendored_packages\pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00000279153616a8> hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_verify_typedef_dotdotdot'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_verify_typedef_dotdotdot'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ..\_pytest\vendored_packages\pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_verify_typedef_dotdotdot'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_verify_typedef_dotdotdot'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ..\_pytest\vendored_packages\pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_verify_typedef_dotdotdot'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x0000027928a89b50> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i..._dotdotdot'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792af5fbe0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792af5fbe0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i..._dotdotdot'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_verify_typedef_dotdotdot'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x0000027928a89ad8> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i..._dotdotdot'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792af5fba0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792af5fba0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i..._dotdotdot'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_verify_typedef_dotdotdot'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ..\_pytest\vendored_packages\pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_verify_typedef_dotdotdot'> def pytest_runtest_call(item): try: > item.runtest() ..\_pytest\runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_verify_typedef_dotdotdot'> def runtest(self): target = self.obj if self.config.option.runappdirect: return target() space = target.im_self.space filename = self._getdynfilename(target) func = app2interp_temp(target.im_func, filename=filename) w_instance = self.parent.w_instance > self.execute_appex(space, func, space, w_instance) tool\pytest\apptest.py:89: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_verify_typedef_dotdotdot'>, space = StdObjSpace target = <function test_verify_typedef_dotdotdot at 0x000002792a7d3448> args = (StdObjSpace, <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>) def execute_appex(self, space, target, *args): self.space = space try: > target(*args) tool\pytest\apptest.py:30: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) w_func = <Function test_verify_typedef_dotdotdot> args = <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8> def appcaller(space, *args_w): if not isinstance(space, ObjSpace): raise TypeError("first argument must be a space instance.") # the last argument can be an Arguments w_func = self.wget(space, name) if not args_w: return space.call_function(w_func) else: args = args_w[-1] assert args is not None if not isinstance(args, Arguments): > return space.call_function(w_func, *args_w) interpreter\gateway.py:1227: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <Function test_verify_typedef_dotdotdot> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) nargs = 1, Function = <class 'pypy.interpreter.function.Function'> Method = <class 'pypy.interpreter.function.Method'> def call_function(self, w_func, *args_w): nargs = len(args_w) # used for pruning funccall versions if not self.config.objspace.disable_call_speedhacks and nargs < 5: # start of hack for performance from pypy.interpreter.function import Function, Method if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: if nargs < 4: func = w_func.w_function if isinstance(func, Function): return func.funccall(w_inst, *args_w) elif args_w and ( self.abstract_isinstance_w(args_w[0], w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): > return w_func.funccall(*args_w) interpreter\baseobjspace.py:1210: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <Function test_verify_typedef_dotdotdot> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) gateway = <module 'pypy.interpreter.gateway' from 'd:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\interpreter\\gateway.pyc'> PyCode = <class 'pypy.interpreter.pycode.PyCode'> code = <code object test_verify_typedef_dotdotdot, file '[d:\pypy_stuff\buildbot64\sl...n-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:186]', line 1> def funccall(self, *args_w): # speed hack from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit nargs = len(args_w) fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, args_w[0]) elif nargs == 2: assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, args_w[0], args_w[1]) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) return code.fastcall_3(self.space, self, args_w[0], args_w[1], args_w[2]) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) return code.fastcall_4(self.space, self, args_w[0], args_w[1], args_w[2], args_w[3]) elif (nargs | PyCode.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) if nargs < 5: new_frame = self.space.createframe(code, self.w_func_globals, self) for i in funccallunrolling: if i < nargs: new_frame.locals_cells_stack_w[i] = args_w[i] > return new_frame.run() interpreter\function.py:118: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_verify_t...uild\pypy\module\_cffi_backend\test\test_recompiler.py:186]', line 1> at line 5 def run(self): """Start this frame's execution.""" if self.getcode().co_flags & pycode.CO_GENERATOR: from pypy.interpreter.generator import GeneratorIterator return GeneratorIterator(self) else: > return self.execute_frame() interpreter\pyframe.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_verify_t...uild\pypy\module\_cffi_backend\test\test_recompiler.py:186]', line 1> at line 5 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, executioncontext) except OperationError: raise except Exception as e: # general fall-back > raise self._convert_unexpected_exception(e) interpreter\pyframe.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_verify_t...uild\pypy\module\_cffi_backend\test\test_recompiler.py:186]', line 1> at line 5 e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def _convert_unexpected_exception(self, e): from pypy.interpreter import error > operr = error.get_converted_unexpected_exception(self.space, e) interpreter\pyframe.py:943: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_verify_t...uild\pypy\module\_cffi_backend\test\test_recompiler.py:186]', line 1> at line 5 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, > executioncontext) interpreter\pyframe.py:286: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_verify_t...uild\pypy\module\_cffi_backend\test\test_recompiler.py:186]', line 1> at line 5 pycode = <code object test_verify_typedef_dotdotdot, file '[d:\pypy_stuff\buildbot64\sl...n-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:186]', line 1> next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def dispatch(self, pycode, next_instr, ec): # For the sequel, force 'next_instr' to be unsigned for performance next_instr = r_uint(next_instr) co_code = pycode.co_code try: while True: > next_instr = self.handle_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:64: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_verify_t...uild\pypy\module\_cffi_backend\test\test_recompiler.py:186]', line 1> at line 5 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00d\x00\x00S' next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def handle_bytecode(self, co_code, next_instr, ec): try: > next_instr = self.dispatch_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:71: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_verify_t...uild\pypy\module\_cffi_backend\test\test_recompiler.py:186]', line 1> at line 5 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00d\x00\x00S' next_instr = 18L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> @jit.unroll_safe def dispatch_bytecode(self, co_code, next_instr, ec): while True: self.last_instr = intmask(next_instr) if jit.we_are_jitted(): if self.debugdata: ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) else: # Only reload next_instr from last_instr when something that # can modify it actually ran (trace function or action # dispatcher). In the common case (no trace, positive ticker) # next_instr is unchanged and the round-trip is skipped. _d = self.debugdata if ec.space.reverse_debugging or ( _d is not None and _d.w_f_trace is not None) or ( not we_are_translated() and 'bytecode_only_trace' in ec.__dict__): ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) actionflag = ec.space.actionflag if actionflag.decrement_ticker(TICK_COUNTER_STEP) < 0: actionflag.action_dispatcher(ec, self) next_instr = r_uint(self.last_instr) opcode = ord(co_code[next_instr]) next_instr += 1 if opcode >= HAVE_ARGUMENT: lo = ord(co_code[next_instr]) hi = ord(co_code[next_instr+1]) next_instr += 2 oparg = (hi * 256) | lo else: oparg = 0 # note: the structure of the code here is such that it makes # (after translation) a big "if/elif" chain, which is then # turned into a switch(). while opcode == opcodedesc.EXTENDED_ARG.index: opcode = ord(co_code[next_instr]) if opcode < HAVE_ARGUMENT: raise BytecodeCorruption lo = ord(co_code[next_instr+1]) hi = ord(co_code[next_instr+2]) next_instr += 3 oparg = (oparg * 65536) | (hi * 256) | lo if opcode == opcodedesc.RETURN_VALUE.index: if not self.blockstack_non_empty(): self.frame_finished_execution = True # for generators raise Return w_returnvalue = self.popvalue() block = self.unrollstack(SReturnValue.kind) if block is None: self.pushvalue(w_returnvalue) raise Return else: unroller = SReturnValue(w_returnvalue) next_instr = block.handle(self, unroller) return next_instr # now inside a 'finally' block elif opcode == opcodedesc.END_FINALLY.index: unroller = self.end_finally() if isinstance(unroller, SuspendedUnroller): # go on unrolling the stack block = self.unrollstack(unroller.kind) if block is None: w_result = unroller.nomoreblocks() self.pushvalue(w_result) raise Return else: next_instr = block.handle(self, unroller) return next_instr elif opcode == opcodedesc.JUMP_ABSOLUTE.index: return self.jump_absolute(oparg, ec) elif opcode == opcodedesc.BREAK_LOOP.index: next_instr = self.BREAK_LOOP(oparg, next_instr) elif opcode == opcodedesc.CONTINUE_LOOP.index: return self.CONTINUE_LOOP(oparg, next_instr) elif opcode == opcodedesc.FOR_ITER.index: next_instr = self.FOR_ITER(oparg, next_instr) elif opcode == opcodedesc.JUMP_FORWARD.index: next_instr = self.JUMP_FORWARD(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_FALSE_OR_POP.index: next_instr = self.JUMP_IF_FALSE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_NOT_DEBUG.index: next_instr = self.JUMP_IF_NOT_DEBUG(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_TRUE_OR_POP.index: next_instr = self.JUMP_IF_TRUE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_FALSE.index: next_instr = self.POP_JUMP_IF_FALSE(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_TRUE.index: next_instr = self.POP_JUMP_IF_TRUE(oparg, next_instr) elif opcode == opcodedesc.BINARY_ADD.index: self.BINARY_ADD(oparg, next_instr) elif opcode == opcodedesc.BINARY_AND.index: self.BINARY_AND(oparg, next_instr) elif opcode == opcodedesc.BINARY_DIVIDE.index: self.BINARY_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_FLOOR_DIVIDE.index: self.BINARY_FLOOR_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_LSHIFT.index: self.BINARY_LSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_MODULO.index: self.BINARY_MODULO(oparg, next_instr) elif opcode == opcodedesc.BINARY_MULTIPLY.index: self.BINARY_MULTIPLY(oparg, next_instr) elif opcode == opcodedesc.BINARY_OR.index: self.BINARY_OR(oparg, next_instr) elif opcode == opcodedesc.BINARY_POWER.index: self.BINARY_POWER(oparg, next_instr) elif opcode == opcodedesc.BINARY_RSHIFT.index: self.BINARY_RSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBSCR.index: self.BINARY_SUBSCR(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBTRACT.index: self.BINARY_SUBTRACT(oparg, next_instr) elif opcode == opcodedesc.BINARY_TRUE_DIVIDE.index: self.BINARY_TRUE_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_XOR.index: self.BINARY_XOR(oparg, next_instr) elif opcode == opcodedesc.BUILD_CLASS.index: self.BUILD_CLASS(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST.index: self.BUILD_LIST(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST_FROM_ARG.index: self.BUILD_LIST_FROM_ARG(oparg, next_instr) elif opcode == opcodedesc.BUILD_MAP.index: self.BUILD_MAP(oparg, next_instr) elif opcode == opcodedesc.BUILD_SET.index: self.BUILD_SET(oparg, next_instr) elif opcode == opcodedesc.BUILD_SLICE.index: self.BUILD_SLICE(oparg, next_instr) elif opcode == opcodedesc.BUILD_TUPLE.index: self.BUILD_TUPLE(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION.index: self.CALL_FUNCTION(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_KW.index: self.CALL_FUNCTION_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR.index: self.CALL_FUNCTION_VAR(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR_KW.index: self.CALL_FUNCTION_VAR_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_METHOD.index: > self.CALL_METHOD(oparg, next_instr) interpreter\pyopcode.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ f = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_verify_t...uild\pypy\module\_cffi_backend\test\test_recompiler.py:186]', line 1> at line 5 oparg = 3, ignored = (18L,), n_args = 3, n_kwargs = 0, w_self = None @jit.unroll_safe def CALL_METHOD(f, oparg, *ignored): # opargs contains the arg, and kwarg count, excluding the implicit 'self' n_args = oparg & 0xff n_kwargs = (oparg >> 8) & 0xff w_self = f.peekvalue_maybe_none(n_args + (2 * n_kwargs)) n = n_args + (w_self is not None) if not n_kwargs: w_callable = f.peekvalue(n_args + (2 * n_kwargs) + 1) w_result = f.space.call_valuestack( > w_callable, n, f, methodcall=w_self is not None, dropvalues=n_args + 2) objspace\std\callmethod.py:96: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_verify_t...uild\pypy\module\_cffi_backend\test\test_recompiler.py:186]', line 1> at line 5 dropvalues = 5, methodcall = False def call_valuestack(self, w_func, nargs, frame, dropvalues, methodcall=False): # methodcall is only used for better error messages in argument.py from pypy.interpreter.function import Function, Method, is_builtin_code if frame.get_is_being_profiled() and is_builtin_code(w_func): # XXX: this code is copied&pasted :-( from the slow path below # call_valuestack(). args = frame.make_arguments(nargs) frame.dropvalues(dropvalues) return self.call_args_and_c_profile(frame, w_func, args) if not self.config.objspace.disable_call_speedhacks: # start of hack for performance if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: w_func = w_func.w_function # reuse callable stack place for w_inst frame.settopvalue(w_inst, nargs) nargs += 1 methodcall = True elif nargs > 0 and ( self.abstract_isinstance_w(frame.peekvalue(nargs-1), # :-( w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): return w_func.funccall_valuestack( > nargs, frame, methodcall=methodcall, dropvalues=dropvalues) interpreter\baseobjspace.py:1243: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_verify_t...uild\pypy\module\_cffi_backend\test\test_recompiler.py:186]', line 1> at line 5 dropvalues = 5, methodcall = False def funccall_valuestack(self, nargs, frame, dropvalues, methodcall=False): # speed hack # methodcall is only for better error messages from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit # if (jit.we_are_jitted() and code is self.space._code_of_sys_exc_info and nargs == 0): frame.dropvalues(dropvalues) from pypy.module.sys.vm import exc_info_direct return exc_info_direct(self.space, frame) # fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: f_0 = frame.peekvalue(0) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, f_0) elif nargs == 2: f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, f_1, f_0) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) frame.dropvalues(dropvalues) return code.fastcall_3(self.space, self, f_2, f_1, f_0) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) f_3 = frame.peekvalue(3) frame.dropvalues(dropvalues) return code.fastcall_4(self.space, self, f_3, f_2, f_1, f_0) elif (nargs | Code.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) return self._flat_pycall(code, nargs, frame, dropvalues) elif fast_natural_arity & Code.FLATPYCALL: natural_arity = fast_natural_arity & 0xff if natural_arity > nargs >= natural_arity - len(self.defs_w): assert isinstance(code, PyCode) return self._flat_pycall_defaults(code, nargs, frame, natural_arity - nargs, dropvalues) elif fast_natural_arity == Code.PASSTHROUGHARGS1 and nargs >= 1: assert isinstance(code, gateway.BuiltinCodePassThroughArguments1) w_obj = frame.peekvalue(nargs-1) args = frame.make_arguments(nargs-1) frame.dropvalues(dropvalues) return code.funcrun_obj(self, w_obj, args) args = frame.make_arguments(nargs, methodcall=methodcall) frame.dropvalues(dropvalues) > return self.call_args(args) interpreter\function.py:190: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('typedef ... foo_t;'), W_BytesObject('test_verify_typedef_dotdotdot'), W_BytesObject('typedef int **foo_t;')]) def call_args(self, args): # delegate activation to code > w_res = self.getcode().funcrun(self, args) interpreter\function.py:68: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('typedef ... foo_t;'), W_BytesObject('test_verify_typedef_dotdotdot'), W_BytesObject('typedef int **foo_t;')]) def funcrun(self, func, args): > return BuiltinCode.funcrun_obj(self, func, None, args) interpreter\gateway.py:781: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('typedef ... foo_t;'), W_BytesObject('test_verify_typedef_dotdotdot'), W_BytesObject('typedef int **foo_t;')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: w_result = activation._run(space, scope_w) except DescrMismatch: if w_obj is not None: args = args.prepend(w_obj) return self._type_unwrap_mismatch(space, args) except Exception as e: > self.handle_exception(space, e) interpreter\gateway.py:795: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> space = StdObjSpace e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def handle_exception(self, space, e): try: if not we_are_translated(): raise raise e except OperationError: raise except Exception as e: # general fall-back from pypy.interpreter import error > raise error.get_converted_unexpected_exception(space, e) interpreter\gateway.py:819: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('typedef ... foo_t;'), W_BytesObject('test_verify_typedef_dotdotdot'), W_BytesObject('typedef int **foo_t;')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: > w_result = activation._run(space, scope_w) interpreter\gateway.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinActivation_UwS_ObjSpace_text_text_text_W_Root_W_Root_W_Root_int_W_Root object at 0x000002791c13af38> space = StdObjSpace scope_w = [W_BytesObject('typedef ... foo_t;'), W_BytesObject('test_verify_typedef_dotdotdot'), W_BytesObject('typedef int **foo_t;'), None, None, None, ...] def _run(self, space, scope_w): > return self.behavior(space, space.text_w(scope_w[0]), space.text_w(scope_w[1]), space.text_w(scope_w[2]), scope_w[3], scope_w[4], scope_w[5], space.gateway_int_w(scope_w[6]), scope_w[7]) <3152-codegen d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\rpython\tool\sourcetools.py:200>:3: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace, cdef = 'typedef ... foo_t;' module_name = '_CFFI_test_verify_typedef_dotdotdot' source = 'typedef int **foo_t;', w_includes = None, w_extra_source = None w_min_version = None, packed = 0, w_extra_compile_args = None @unwrap_spec(cdef='text', module_name='text', source='text', packed=int) def prepare(space, cdef, module_name, source, w_includes=None, w_extra_source=None, w_min_version=None, packed=False, w_extra_compile_args=None): try: import cffi from cffi import FFI # <== the system one, which from cffi import recompiler # needs to be at least cffi 1.0.4 from cffi import ffiplatform except ImportError: pytest.skip("system cffi module not found or older than 1.0.0") if w_min_version is None: min_version = (1, 4, 0) else: min_version = tuple(space.unwrap(w_min_version)) if cffi.__version_info__ < min_version: pytest.skip("system cffi module needs to be at least %s, got %s" % ( min_version, cffi.__version_info__)) space.appexec([], """(): import _cffi_backend # force it to be initialized """) includes = [] if w_includes: includes += space.unpackiterable(w_includes) assert module_name.startswith('test_') module_name = '_CFFI_' + module_name rdir = udir.ensure('recompiler', dir=1) rdir.join('Python.h').write( '#include <stdio.h>\n' '#define PYPY_VERSION XX\n' '#define PyMODINIT_FUNC /*exported*/ void\n' ) path = module_name.replace('.', os.sep) if '.' in module_name: subrdir = rdir.join(module_name[:module_name.index('.')]) os.mkdir(str(subrdir)) else: subrdir = rdir c_file = str(rdir.join('%s.c' % path)) ffi = FFI() for include_ffi_object in includes: ffi.include(include_ffi_object._test_recompiler_source_ffi) ffi.cdef(cdef, packed=packed) ffi.set_source(module_name, source) ffi.emit_c_code(c_file) base_module_name = module_name.split('.')[-1] sources = [] if w_extra_source is not None: sources.append(space.str_w(w_extra_source)) kwargs = {} # GCC 14 promotes -Wincompatible-pointer-types from a warning to an error # by default, which breaks cffi's intentionally-mismatched field-check # probes (e.g. test_misdeclared_field_1). Keep it a warning so the module # compiles and cffi's runtime checks can run. extra = ['-Wno-error=incompatible-pointer-types'] if w_extra_compile_args is not None: extra = extra + space.unwrap(w_extra_compile_args) kwargs['extra_compile_args'] = extra ext = ffiplatform.get_extension(c_file, module_name, include_dirs=[str(rdir)], export_symbols=['_cffi_pypyinit_' + base_module_name], sources=sources, **kwargs) > ffiplatform.compile(str(rdir), ext) module\_cffi_backend\test\test_recompiler.py:86: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x000002792af5fd20> compiler_verbose = 0, debug = None def compile(tmpdir, ext, compiler_verbose=0, debug=None): """Compile a C extension module using distutils.""" saved_environ = os.environ.copy() try: > outputfilename = _build(tmpdir, ext, compiler_verbose, debug) d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x000002792af5fd20> compiler_verbose = 0, debug = 0 def _build(tmpdir, ext, compiler_verbose=0, debug=None): # XXX compact but horrible :-( from cffi._shimmed_dist_utils import Distribution, CompileError, LinkError, set_threshold, set_verbosity dist = Distribution({'ext_modules': [ext]}) dist.parse_config_files() options = dist.get_option_dict('build_ext') if debug is None: debug = sys.flags.debug options['debug'] = ('ffiplatform', debug) options['force'] = ('ffiplatform', True) options['build_lib'] = ('ffiplatform', tmpdir) options['build_temp'] = ('ffiplatform', tmpdir) # try: old_level = set_threshold(0) or 0 try: set_verbosity(compiler_verbose) dist.run_command('build_ext') cmd_obj = dist.get_command_obj('build_ext') [soname] = cmd_obj.get_outputs() finally: set_threshold(old_level) except (CompileError, LinkError) as e: > raise VerificationError('%s: %s' % (e.__class__.__name__, e)) E VerificationError: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2 d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:54: VerificationError ---------------------------- Captured stdout call ----------------------------- generating d:\systemtemp\pytest\usession-main-595\recompiler\_CFFI_test_verify_typedef_dotdotdot.c ---------------------------- Captured stderr call ----------------------------- cl : Command line error D8021 : invalid numeric argument '/Wno-error=incompatible-pointer-types' ____________ AppTestRecompiler.test_verify_typedef_star_dotdotdot _____________ self = <CallInfo when='call' exception: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2> func = <function <lambda> at 0x000002791bb52110>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ..\_pytest\runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ..\_pytest\runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_verify_typedef_star_dotdotdot'>...call__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_verify_typedef_star_dotdotdot'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ..\_pytest\vendored_packages\pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00000279153616a8> hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_verify_typedef_star_dotdotdot'>...call__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_verify_typedef_star_dotdotdot'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ..\_pytest\vendored_packages\pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_verify_typedef_star_dotdotdot'>...call__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_verify_typedef_star_dotdotdot'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ..\_pytest\vendored_packages\pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_verify_typedef_star_dotdotdot'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791b15d4e8> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i..._dotdotdot'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002791c6fdb60> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002791c6fdb60> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i..._dotdotdot'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_verify_typedef_star_dotdotdot'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791b15d448> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i..._dotdotdot'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002791c6fdb20> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002791c6fdb20> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i..._dotdotdot'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_verify_typedef_star_dotdotdot'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ..\_pytest\vendored_packages\pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_verify_typedef_star_dotdotdot'> def pytest_runtest_call(item): try: > item.runtest() ..\_pytest\runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_verify_typedef_star_dotdotdot'> def runtest(self): target = self.obj if self.config.option.runappdirect: return target() space = target.im_self.space filename = self._getdynfilename(target) func = app2interp_temp(target.im_func, filename=filename) w_instance = self.parent.w_instance > self.execute_appex(space, func, space, w_instance) tool\pytest\apptest.py:89: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_verify_typedef_star_dotdotdot'>, space = StdObjSpace target = <function test_verify_typedef_star_dotdotdot at 0x000002791bb52188> args = (StdObjSpace, <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>) def execute_appex(self, space, target, *args): self.space = space try: > target(*args) tool\pytest\apptest.py:30: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) w_func = <Function test_verify_typedef_star_dotdotdot> args = <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8> def appcaller(space, *args_w): if not isinstance(space, ObjSpace): raise TypeError("first argument must be a space instance.") # the last argument can be an Arguments w_func = self.wget(space, name) if not args_w: return space.call_function(w_func) else: args = args_w[-1] assert args is not None if not isinstance(args, Arguments): > return space.call_function(w_func, *args_w) interpreter\gateway.py:1227: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <Function test_verify_typedef_star_dotdotdot> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) nargs = 1, Function = <class 'pypy.interpreter.function.Function'> Method = <class 'pypy.interpreter.function.Method'> def call_function(self, w_func, *args_w): nargs = len(args_w) # used for pruning funccall versions if not self.config.objspace.disable_call_speedhacks and nargs < 5: # start of hack for performance from pypy.interpreter.function import Function, Method if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: if nargs < 4: func = w_func.w_function if isinstance(func, Function): return func.funccall(w_inst, *args_w) elif args_w and ( self.abstract_isinstance_w(args_w[0], w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): > return w_func.funccall(*args_w) interpreter\baseobjspace.py:1210: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <Function test_verify_typedef_star_dotdotdot> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) gateway = <module 'pypy.interpreter.gateway' from 'd:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\interpreter\\gateway.pyc'> PyCode = <class 'pypy.interpreter.pycode.PyCode'> code = <code object test_verify_typedef_star_dotdotdot, file '[d:\pypy_stuff\buildbot...n-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:193]', line 1> def funccall(self, *args_w): # speed hack from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit nargs = len(args_w) fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, args_w[0]) elif nargs == 2: assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, args_w[0], args_w[1]) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) return code.fastcall_3(self.space, self, args_w[0], args_w[1], args_w[2]) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) return code.fastcall_4(self.space, self, args_w[0], args_w[1], args_w[2], args_w[3]) elif (nargs | PyCode.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) if nargs < 5: new_frame = self.space.createframe(code, self.w_func_globals, self) for i in funccallunrolling: if i < nargs: new_frame.locals_cells_stack_w[i] = args_w[i] > return new_frame.run() interpreter\function.py:118: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_verify_t...uild\pypy\module\_cffi_backend\test\test_recompiler.py:193]', line 1> at line 5 def run(self): """Start this frame's execution.""" if self.getcode().co_flags & pycode.CO_GENERATOR: from pypy.interpreter.generator import GeneratorIterator return GeneratorIterator(self) else: > return self.execute_frame() interpreter\pyframe.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_verify_t...uild\pypy\module\_cffi_backend\test\test_recompiler.py:193]', line 1> at line 5 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, executioncontext) except OperationError: raise except Exception as e: # general fall-back > raise self._convert_unexpected_exception(e) interpreter\pyframe.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_verify_t...uild\pypy\module\_cffi_backend\test\test_recompiler.py:193]', line 1> at line 5 e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def _convert_unexpected_exception(self, e): from pypy.interpreter import error > operr = error.get_converted_unexpected_exception(self.space, e) interpreter\pyframe.py:943: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_verify_t...uild\pypy\module\_cffi_backend\test\test_recompiler.py:193]', line 1> at line 5 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, > executioncontext) interpreter\pyframe.py:286: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_verify_t...uild\pypy\module\_cffi_backend\test\test_recompiler.py:193]', line 1> at line 5 pycode = <code object test_verify_typedef_star_dotdotdot, file '[d:\pypy_stuff\buildbot...n-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:193]', line 1> next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def dispatch(self, pycode, next_instr, ec): # For the sequel, force 'next_instr' to be unsigned for performance next_instr = r_uint(next_instr) co_code = pycode.co_code try: while True: > next_instr = self.handle_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:64: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_verify_t...uild\pypy\module\_cffi_backend\test\test_recompiler.py:193]', line 1> at line 5 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00d\x00\x00S' next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def handle_bytecode(self, co_code, next_instr, ec): try: > next_instr = self.dispatch_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:71: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_verify_t...uild\pypy\module\_cffi_backend\test\test_recompiler.py:193]', line 1> at line 5 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00d\x00\x00S' next_instr = 18L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> @jit.unroll_safe def dispatch_bytecode(self, co_code, next_instr, ec): while True: self.last_instr = intmask(next_instr) if jit.we_are_jitted(): if self.debugdata: ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) else: # Only reload next_instr from last_instr when something that # can modify it actually ran (trace function or action # dispatcher). In the common case (no trace, positive ticker) # next_instr is unchanged and the round-trip is skipped. _d = self.debugdata if ec.space.reverse_debugging or ( _d is not None and _d.w_f_trace is not None) or ( not we_are_translated() and 'bytecode_only_trace' in ec.__dict__): ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) actionflag = ec.space.actionflag if actionflag.decrement_ticker(TICK_COUNTER_STEP) < 0: actionflag.action_dispatcher(ec, self) next_instr = r_uint(self.last_instr) opcode = ord(co_code[next_instr]) next_instr += 1 if opcode >= HAVE_ARGUMENT: lo = ord(co_code[next_instr]) hi = ord(co_code[next_instr+1]) next_instr += 2 oparg = (hi * 256) | lo else: oparg = 0 # note: the structure of the code here is such that it makes # (after translation) a big "if/elif" chain, which is then # turned into a switch(). while opcode == opcodedesc.EXTENDED_ARG.index: opcode = ord(co_code[next_instr]) if opcode < HAVE_ARGUMENT: raise BytecodeCorruption lo = ord(co_code[next_instr+1]) hi = ord(co_code[next_instr+2]) next_instr += 3 oparg = (oparg * 65536) | (hi * 256) | lo if opcode == opcodedesc.RETURN_VALUE.index: if not self.blockstack_non_empty(): self.frame_finished_execution = True # for generators raise Return w_returnvalue = self.popvalue() block = self.unrollstack(SReturnValue.kind) if block is None: self.pushvalue(w_returnvalue) raise Return else: unroller = SReturnValue(w_returnvalue) next_instr = block.handle(self, unroller) return next_instr # now inside a 'finally' block elif opcode == opcodedesc.END_FINALLY.index: unroller = self.end_finally() if isinstance(unroller, SuspendedUnroller): # go on unrolling the stack block = self.unrollstack(unroller.kind) if block is None: w_result = unroller.nomoreblocks() self.pushvalue(w_result) raise Return else: next_instr = block.handle(self, unroller) return next_instr elif opcode == opcodedesc.JUMP_ABSOLUTE.index: return self.jump_absolute(oparg, ec) elif opcode == opcodedesc.BREAK_LOOP.index: next_instr = self.BREAK_LOOP(oparg, next_instr) elif opcode == opcodedesc.CONTINUE_LOOP.index: return self.CONTINUE_LOOP(oparg, next_instr) elif opcode == opcodedesc.FOR_ITER.index: next_instr = self.FOR_ITER(oparg, next_instr) elif opcode == opcodedesc.JUMP_FORWARD.index: next_instr = self.JUMP_FORWARD(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_FALSE_OR_POP.index: next_instr = self.JUMP_IF_FALSE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_NOT_DEBUG.index: next_instr = self.JUMP_IF_NOT_DEBUG(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_TRUE_OR_POP.index: next_instr = self.JUMP_IF_TRUE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_FALSE.index: next_instr = self.POP_JUMP_IF_FALSE(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_TRUE.index: next_instr = self.POP_JUMP_IF_TRUE(oparg, next_instr) elif opcode == opcodedesc.BINARY_ADD.index: self.BINARY_ADD(oparg, next_instr) elif opcode == opcodedesc.BINARY_AND.index: self.BINARY_AND(oparg, next_instr) elif opcode == opcodedesc.BINARY_DIVIDE.index: self.BINARY_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_FLOOR_DIVIDE.index: self.BINARY_FLOOR_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_LSHIFT.index: self.BINARY_LSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_MODULO.index: self.BINARY_MODULO(oparg, next_instr) elif opcode == opcodedesc.BINARY_MULTIPLY.index: self.BINARY_MULTIPLY(oparg, next_instr) elif opcode == opcodedesc.BINARY_OR.index: self.BINARY_OR(oparg, next_instr) elif opcode == opcodedesc.BINARY_POWER.index: self.BINARY_POWER(oparg, next_instr) elif opcode == opcodedesc.BINARY_RSHIFT.index: self.BINARY_RSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBSCR.index: self.BINARY_SUBSCR(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBTRACT.index: self.BINARY_SUBTRACT(oparg, next_instr) elif opcode == opcodedesc.BINARY_TRUE_DIVIDE.index: self.BINARY_TRUE_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_XOR.index: self.BINARY_XOR(oparg, next_instr) elif opcode == opcodedesc.BUILD_CLASS.index: self.BUILD_CLASS(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST.index: self.BUILD_LIST(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST_FROM_ARG.index: self.BUILD_LIST_FROM_ARG(oparg, next_instr) elif opcode == opcodedesc.BUILD_MAP.index: self.BUILD_MAP(oparg, next_instr) elif opcode == opcodedesc.BUILD_SET.index: self.BUILD_SET(oparg, next_instr) elif opcode == opcodedesc.BUILD_SLICE.index: self.BUILD_SLICE(oparg, next_instr) elif opcode == opcodedesc.BUILD_TUPLE.index: self.BUILD_TUPLE(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION.index: self.CALL_FUNCTION(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_KW.index: self.CALL_FUNCTION_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR.index: self.CALL_FUNCTION_VAR(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR_KW.index: self.CALL_FUNCTION_VAR_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_METHOD.index: > self.CALL_METHOD(oparg, next_instr) interpreter\pyopcode.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ f = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_verify_t...uild\pypy\module\_cffi_backend\test\test_recompiler.py:193]', line 1> at line 5 oparg = 3, ignored = (18L,), n_args = 3, n_kwargs = 0, w_self = None @jit.unroll_safe def CALL_METHOD(f, oparg, *ignored): # opargs contains the arg, and kwarg count, excluding the implicit 'self' n_args = oparg & 0xff n_kwargs = (oparg >> 8) & 0xff w_self = f.peekvalue_maybe_none(n_args + (2 * n_kwargs)) n = n_args + (w_self is not None) if not n_kwargs: w_callable = f.peekvalue(n_args + (2 * n_kwargs) + 1) w_result = f.space.call_valuestack( > w_callable, n, f, methodcall=w_self is not None, dropvalues=n_args + 2) objspace\std\callmethod.py:96: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_verify_t...uild\pypy\module\_cffi_backend\test\test_recompiler.py:193]', line 1> at line 5 dropvalues = 5, methodcall = False def call_valuestack(self, w_func, nargs, frame, dropvalues, methodcall=False): # methodcall is only used for better error messages in argument.py from pypy.interpreter.function import Function, Method, is_builtin_code if frame.get_is_being_profiled() and is_builtin_code(w_func): # XXX: this code is copied&pasted :-( from the slow path below # call_valuestack(). args = frame.make_arguments(nargs) frame.dropvalues(dropvalues) return self.call_args_and_c_profile(frame, w_func, args) if not self.config.objspace.disable_call_speedhacks: # start of hack for performance if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: w_func = w_func.w_function # reuse callable stack place for w_inst frame.settopvalue(w_inst, nargs) nargs += 1 methodcall = True elif nargs > 0 and ( self.abstract_isinstance_w(frame.peekvalue(nargs-1), # :-( w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): return w_func.funccall_valuestack( > nargs, frame, methodcall=methodcall, dropvalues=dropvalues) interpreter\baseobjspace.py:1243: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_verify_t...uild\pypy\module\_cffi_backend\test\test_recompiler.py:193]', line 1> at line 5 dropvalues = 5, methodcall = False def funccall_valuestack(self, nargs, frame, dropvalues, methodcall=False): # speed hack # methodcall is only for better error messages from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit # if (jit.we_are_jitted() and code is self.space._code_of_sys_exc_info and nargs == 0): frame.dropvalues(dropvalues) from pypy.module.sys.vm import exc_info_direct return exc_info_direct(self.space, frame) # fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: f_0 = frame.peekvalue(0) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, f_0) elif nargs == 2: f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, f_1, f_0) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) frame.dropvalues(dropvalues) return code.fastcall_3(self.space, self, f_2, f_1, f_0) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) f_3 = frame.peekvalue(3) frame.dropvalues(dropvalues) return code.fastcall_4(self.space, self, f_3, f_2, f_1, f_0) elif (nargs | Code.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) return self._flat_pycall(code, nargs, frame, dropvalues) elif fast_natural_arity & Code.FLATPYCALL: natural_arity = fast_natural_arity & 0xff if natural_arity > nargs >= natural_arity - len(self.defs_w): assert isinstance(code, PyCode) return self._flat_pycall_defaults(code, nargs, frame, natural_arity - nargs, dropvalues) elif fast_natural_arity == Code.PASSTHROUGHARGS1 and nargs >= 1: assert isinstance(code, gateway.BuiltinCodePassThroughArguments1) w_obj = frame.peekvalue(nargs-1) args = frame.make_arguments(nargs-1) frame.dropvalues(dropvalues) return code.funcrun_obj(self, w_obj, args) args = frame.make_arguments(nargs, methodcall=methodcall) frame.dropvalues(dropvalues) > return self.call_args(args) interpreter\function.py:190: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('typedef ... *foo_t;'), W_BytesObject('test_verify_typedef_star_dotdotdot'), W_BytesObject('typedef int **foo_t;')]) def call_args(self, args): # delegate activation to code > w_res = self.getcode().funcrun(self, args) interpreter\function.py:68: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('typedef ... *foo_t;'), W_BytesObject('test_verify_typedef_star_dotdotdot'), W_BytesObject('typedef int **foo_t;')]) def funcrun(self, func, args): > return BuiltinCode.funcrun_obj(self, func, None, args) interpreter\gateway.py:781: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('typedef ... *foo_t;'), W_BytesObject('test_verify_typedef_star_dotdotdot'), W_BytesObject('typedef int **foo_t;')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: w_result = activation._run(space, scope_w) except DescrMismatch: if w_obj is not None: args = args.prepend(w_obj) return self._type_unwrap_mismatch(space, args) except Exception as e: > self.handle_exception(space, e) interpreter\gateway.py:795: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> space = StdObjSpace e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def handle_exception(self, space, e): try: if not we_are_translated(): raise raise e except OperationError: raise except Exception as e: # general fall-back from pypy.interpreter import error > raise error.get_converted_unexpected_exception(space, e) interpreter\gateway.py:819: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('typedef ... *foo_t;'), W_BytesObject('test_verify_typedef_star_dotdotdot'), W_BytesObject('typedef int **foo_t;')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: > w_result = activation._run(space, scope_w) interpreter\gateway.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinActivation_UwS_ObjSpace_text_text_text_W_Root_W_Root_W_Root_int_W_Root object at 0x000002791c13af38> space = StdObjSpace scope_w = [W_BytesObject('typedef ... *foo_t;'), W_BytesObject('test_verify_typedef_star_dotdotdot'), W_BytesObject('typedef int **foo_t;'), None, None, None, ...] def _run(self, space, scope_w): > return self.behavior(space, space.text_w(scope_w[0]), space.text_w(scope_w[1]), space.text_w(scope_w[2]), scope_w[3], scope_w[4], scope_w[5], space.gateway_int_w(scope_w[6]), scope_w[7]) <3152-codegen d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\rpython\tool\sourcetools.py:200>:3: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace, cdef = 'typedef ... *foo_t;' module_name = '_CFFI_test_verify_typedef_star_dotdotdot' source = 'typedef int **foo_t;', w_includes = None, w_extra_source = None w_min_version = None, packed = 0, w_extra_compile_args = None @unwrap_spec(cdef='text', module_name='text', source='text', packed=int) def prepare(space, cdef, module_name, source, w_includes=None, w_extra_source=None, w_min_version=None, packed=False, w_extra_compile_args=None): try: import cffi from cffi import FFI # <== the system one, which from cffi import recompiler # needs to be at least cffi 1.0.4 from cffi import ffiplatform except ImportError: pytest.skip("system cffi module not found or older than 1.0.0") if w_min_version is None: min_version = (1, 4, 0) else: min_version = tuple(space.unwrap(w_min_version)) if cffi.__version_info__ < min_version: pytest.skip("system cffi module needs to be at least %s, got %s" % ( min_version, cffi.__version_info__)) space.appexec([], """(): import _cffi_backend # force it to be initialized """) includes = [] if w_includes: includes += space.unpackiterable(w_includes) assert module_name.startswith('test_') module_name = '_CFFI_' + module_name rdir = udir.ensure('recompiler', dir=1) rdir.join('Python.h').write( '#include <stdio.h>\n' '#define PYPY_VERSION XX\n' '#define PyMODINIT_FUNC /*exported*/ void\n' ) path = module_name.replace('.', os.sep) if '.' in module_name: subrdir = rdir.join(module_name[:module_name.index('.')]) os.mkdir(str(subrdir)) else: subrdir = rdir c_file = str(rdir.join('%s.c' % path)) ffi = FFI() for include_ffi_object in includes: ffi.include(include_ffi_object._test_recompiler_source_ffi) ffi.cdef(cdef, packed=packed) ffi.set_source(module_name, source) ffi.emit_c_code(c_file) base_module_name = module_name.split('.')[-1] sources = [] if w_extra_source is not None: sources.append(space.str_w(w_extra_source)) kwargs = {} # GCC 14 promotes -Wincompatible-pointer-types from a warning to an error # by default, which breaks cffi's intentionally-mismatched field-check # probes (e.g. test_misdeclared_field_1). Keep it a warning so the module # compiles and cffi's runtime checks can run. extra = ['-Wno-error=incompatible-pointer-types'] if w_extra_compile_args is not None: extra = extra + space.unwrap(w_extra_compile_args) kwargs['extra_compile_args'] = extra ext = ffiplatform.get_extension(c_file, module_name, include_dirs=[str(rdir)], export_symbols=['_cffi_pypyinit_' + base_module_name], sources=sources, **kwargs) > ffiplatform.compile(str(rdir), ext) module\_cffi_backend\test\test_recompiler.py:86: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x000002791bf6c720> compiler_verbose = 0, debug = None def compile(tmpdir, ext, compiler_verbose=0, debug=None): """Compile a C extension module using distutils.""" saved_environ = os.environ.copy() try: > outputfilename = _build(tmpdir, ext, compiler_verbose, debug) d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x000002791bf6c720> compiler_verbose = 0, debug = 0 def _build(tmpdir, ext, compiler_verbose=0, debug=None): # XXX compact but horrible :-( from cffi._shimmed_dist_utils import Distribution, CompileError, LinkError, set_threshold, set_verbosity dist = Distribution({'ext_modules': [ext]}) dist.parse_config_files() options = dist.get_option_dict('build_ext') if debug is None: debug = sys.flags.debug options['debug'] = ('ffiplatform', debug) options['force'] = ('ffiplatform', True) options['build_lib'] = ('ffiplatform', tmpdir) options['build_temp'] = ('ffiplatform', tmpdir) # try: old_level = set_threshold(0) or 0 try: set_verbosity(compiler_verbose) dist.run_command('build_ext') cmd_obj = dist.get_command_obj('build_ext') [soname] = cmd_obj.get_outputs() finally: set_threshold(old_level) except (CompileError, LinkError) as e: > raise VerificationError('%s: %s' % (e.__class__.__name__, e)) E VerificationError: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2 d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:54: VerificationError ---------------------------- Captured stdout call ----------------------------- generating d:\systemtemp\pytest\usession-main-595\recompiler\_CFFI_test_verify_typedef_star_dotdotdot.c ---------------------------- Captured stderr call ----------------------------- cl : Command line error D8021 : invalid numeric argument '/Wno-error=incompatible-pointer-types' ____________________ AppTestRecompiler.test_global_var_int ____________________ self = <CallInfo when='call' exception: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2> func = <function <lambda> at 0x000002791c62c2f0>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ..\_pytest\runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ..\_pytest\runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_global_var_int'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_global_var_int'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ..\_pytest\vendored_packages\pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00000279153616a8> hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_global_var_int'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_global_var_int'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ..\_pytest\vendored_packages\pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_global_var_int'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_global_var_int'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ..\_pytest\vendored_packages\pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_global_var_int'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791f54fe70> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...al_var_int'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027928bd8de0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027928bd8de0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...al_var_int'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_global_var_int'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791f54fdd0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...al_var_int'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027928bd8da0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027928bd8da0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...al_var_int'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_global_var_int'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ..\_pytest\vendored_packages\pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_global_var_int'> def pytest_runtest_call(item): try: > item.runtest() ..\_pytest\runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_global_var_int'> def runtest(self): target = self.obj if self.config.option.runappdirect: return target() space = target.im_self.space filename = self._getdynfilename(target) func = app2interp_temp(target.im_func, filename=filename) w_instance = self.parent.w_instance > self.execute_appex(space, func, space, w_instance) tool\pytest\apptest.py:89: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_global_var_int'>, space = StdObjSpace target = <function test_global_var_int at 0x000002791c62c368> args = (StdObjSpace, <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>) def execute_appex(self, space, target, *args): self.space = space try: > target(*args) tool\pytest\apptest.py:30: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) w_func = <Function test_global_var_int> args = <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8> def appcaller(space, *args_w): if not isinstance(space, ObjSpace): raise TypeError("first argument must be a space instance.") # the last argument can be an Arguments w_func = self.wget(space, name) if not args_w: return space.call_function(w_func) else: args = args_w[-1] assert args is not None if not isinstance(args, Arguments): > return space.call_function(w_func, *args_w) interpreter\gateway.py:1227: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <Function test_global_var_int> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) nargs = 1, Function = <class 'pypy.interpreter.function.Function'> Method = <class 'pypy.interpreter.function.Method'> def call_function(self, w_func, *args_w): nargs = len(args_w) # used for pruning funccall versions if not self.config.objspace.disable_call_speedhacks and nargs < 5: # start of hack for performance from pypy.interpreter.function import Function, Method if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: if nargs < 4: func = w_func.w_function if isinstance(func, Function): return func.funccall(w_inst, *args_w) elif args_w and ( self.abstract_isinstance_w(args_w[0], w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): > return w_func.funccall(*args_w) interpreter\baseobjspace.py:1210: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <Function test_global_var_int> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) gateway = <module 'pypy.interpreter.gateway' from 'd:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\interpreter\\gateway.pyc'> PyCode = <class 'pypy.interpreter.pycode.PyCode'> code = <code object test_global_var_int, file '[d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:200]', line 1> def funccall(self, *args_w): # speed hack from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit nargs = len(args_w) fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, args_w[0]) elif nargs == 2: assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, args_w[0], args_w[1]) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) return code.fastcall_3(self.space, self, args_w[0], args_w[1], args_w[2]) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) return code.fastcall_4(self.space, self, args_w[0], args_w[1], args_w[2], args_w[3]) elif (nargs | PyCode.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) if nargs < 5: new_frame = self.space.createframe(code, self.w_func_globals, self) for i in funccallunrolling: if i < nargs: new_frame.locals_cells_stack_w[i] = args_w[i] > return new_frame.run() interpreter\function.py:118: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_global_v...uild\pypy\module\_cffi_backend\test\test_recompiler.py:200]', line 1> at line 5 def run(self): """Start this frame's execution.""" if self.getcode().co_flags & pycode.CO_GENERATOR: from pypy.interpreter.generator import GeneratorIterator return GeneratorIterator(self) else: > return self.execute_frame() interpreter\pyframe.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_global_v...uild\pypy\module\_cffi_backend\test\test_recompiler.py:200]', line 1> at line 5 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, executioncontext) except OperationError: raise except Exception as e: # general fall-back > raise self._convert_unexpected_exception(e) interpreter\pyframe.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_global_v...uild\pypy\module\_cffi_backend\test\test_recompiler.py:200]', line 1> at line 5 e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def _convert_unexpected_exception(self, e): from pypy.interpreter import error > operr = error.get_converted_unexpected_exception(self.space, e) interpreter\pyframe.py:943: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_global_v...uild\pypy\module\_cffi_backend\test\test_recompiler.py:200]', line 1> at line 5 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, > executioncontext) interpreter\pyframe.py:286: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_global_v...uild\pypy\module\_cffi_backend\test\test_recompiler.py:200]', line 1> at line 5 pycode = <code object test_global_var_int, file '[d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:200]', line 1> next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def dispatch(self, pycode, next_instr, ec): # For the sequel, force 'next_instr' to be unsigned for performance next_instr = r_uint(next_instr) co_code = pycode.co_code try: while True: > next_instr = self.handle_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:64: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_global_v...uild\pypy\module\_cffi_backend\test\test_recompiler.py:200]', line 1> at line 5 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00\xcc\x15\x00|\x02\x00j\x01\x0...\x0b\x00\x83\x02\x00\x01t\x03\x00t\x06\x00d\x0c\x00\x83\x02\x00\x01t\x03\x00t\x06\x00d\r\x00\x83\x02\x00\x01d\x00\x00S' next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def handle_bytecode(self, co_code, next_instr, ec): try: > next_instr = self.dispatch_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:71: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_global_v...uild\pypy\module\_cffi_backend\test\test_recompiler.py:200]', line 1> at line 5 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00\xcc\x15\x00|\x02\x00j\x01\x0...\x0b\x00\x83\x02\x00\x01t\x03\x00t\x06\x00d\x0c\x00\x83\x02\x00\x01t\x03\x00t\x06\x00d\r\x00\x83\x02\x00\x01d\x00\x00S' next_instr = 18L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> @jit.unroll_safe def dispatch_bytecode(self, co_code, next_instr, ec): while True: self.last_instr = intmask(next_instr) if jit.we_are_jitted(): if self.debugdata: ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) else: # Only reload next_instr from last_instr when something that # can modify it actually ran (trace function or action # dispatcher). In the common case (no trace, positive ticker) # next_instr is unchanged and the round-trip is skipped. _d = self.debugdata if ec.space.reverse_debugging or ( _d is not None and _d.w_f_trace is not None) or ( not we_are_translated() and 'bytecode_only_trace' in ec.__dict__): ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) actionflag = ec.space.actionflag if actionflag.decrement_ticker(TICK_COUNTER_STEP) < 0: actionflag.action_dispatcher(ec, self) next_instr = r_uint(self.last_instr) opcode = ord(co_code[next_instr]) next_instr += 1 if opcode >= HAVE_ARGUMENT: lo = ord(co_code[next_instr]) hi = ord(co_code[next_instr+1]) next_instr += 2 oparg = (hi * 256) | lo else: oparg = 0 # note: the structure of the code here is such that it makes # (after translation) a big "if/elif" chain, which is then # turned into a switch(). while opcode == opcodedesc.EXTENDED_ARG.index: opcode = ord(co_code[next_instr]) if opcode < HAVE_ARGUMENT: raise BytecodeCorruption lo = ord(co_code[next_instr+1]) hi = ord(co_code[next_instr+2]) next_instr += 3 oparg = (oparg * 65536) | (hi * 256) | lo if opcode == opcodedesc.RETURN_VALUE.index: if not self.blockstack_non_empty(): self.frame_finished_execution = True # for generators raise Return w_returnvalue = self.popvalue() block = self.unrollstack(SReturnValue.kind) if block is None: self.pushvalue(w_returnvalue) raise Return else: unroller = SReturnValue(w_returnvalue) next_instr = block.handle(self, unroller) return next_instr # now inside a 'finally' block elif opcode == opcodedesc.END_FINALLY.index: unroller = self.end_finally() if isinstance(unroller, SuspendedUnroller): # go on unrolling the stack block = self.unrollstack(unroller.kind) if block is None: w_result = unroller.nomoreblocks() self.pushvalue(w_result) raise Return else: next_instr = block.handle(self, unroller) return next_instr elif opcode == opcodedesc.JUMP_ABSOLUTE.index: return self.jump_absolute(oparg, ec) elif opcode == opcodedesc.BREAK_LOOP.index: next_instr = self.BREAK_LOOP(oparg, next_instr) elif opcode == opcodedesc.CONTINUE_LOOP.index: return self.CONTINUE_LOOP(oparg, next_instr) elif opcode == opcodedesc.FOR_ITER.index: next_instr = self.FOR_ITER(oparg, next_instr) elif opcode == opcodedesc.JUMP_FORWARD.index: next_instr = self.JUMP_FORWARD(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_FALSE_OR_POP.index: next_instr = self.JUMP_IF_FALSE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_NOT_DEBUG.index: next_instr = self.JUMP_IF_NOT_DEBUG(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_TRUE_OR_POP.index: next_instr = self.JUMP_IF_TRUE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_FALSE.index: next_instr = self.POP_JUMP_IF_FALSE(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_TRUE.index: next_instr = self.POP_JUMP_IF_TRUE(oparg, next_instr) elif opcode == opcodedesc.BINARY_ADD.index: self.BINARY_ADD(oparg, next_instr) elif opcode == opcodedesc.BINARY_AND.index: self.BINARY_AND(oparg, next_instr) elif opcode == opcodedesc.BINARY_DIVIDE.index: self.BINARY_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_FLOOR_DIVIDE.index: self.BINARY_FLOOR_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_LSHIFT.index: self.BINARY_LSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_MODULO.index: self.BINARY_MODULO(oparg, next_instr) elif opcode == opcodedesc.BINARY_MULTIPLY.index: self.BINARY_MULTIPLY(oparg, next_instr) elif opcode == opcodedesc.BINARY_OR.index: self.BINARY_OR(oparg, next_instr) elif opcode == opcodedesc.BINARY_POWER.index: self.BINARY_POWER(oparg, next_instr) elif opcode == opcodedesc.BINARY_RSHIFT.index: self.BINARY_RSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBSCR.index: self.BINARY_SUBSCR(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBTRACT.index: self.BINARY_SUBTRACT(oparg, next_instr) elif opcode == opcodedesc.BINARY_TRUE_DIVIDE.index: self.BINARY_TRUE_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_XOR.index: self.BINARY_XOR(oparg, next_instr) elif opcode == opcodedesc.BUILD_CLASS.index: self.BUILD_CLASS(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST.index: self.BUILD_LIST(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST_FROM_ARG.index: self.BUILD_LIST_FROM_ARG(oparg, next_instr) elif opcode == opcodedesc.BUILD_MAP.index: self.BUILD_MAP(oparg, next_instr) elif opcode == opcodedesc.BUILD_SET.index: self.BUILD_SET(oparg, next_instr) elif opcode == opcodedesc.BUILD_SLICE.index: self.BUILD_SLICE(oparg, next_instr) elif opcode == opcodedesc.BUILD_TUPLE.index: self.BUILD_TUPLE(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION.index: self.CALL_FUNCTION(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_KW.index: self.CALL_FUNCTION_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR.index: self.CALL_FUNCTION_VAR(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR_KW.index: self.CALL_FUNCTION_VAR_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_METHOD.index: > self.CALL_METHOD(oparg, next_instr) interpreter\pyopcode.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ f = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_global_v...uild\pypy\module\_cffi_backend\test\test_recompiler.py:200]', line 1> at line 5 oparg = 3, ignored = (18L,), n_args = 3, n_kwargs = 0, w_self = None @jit.unroll_safe def CALL_METHOD(f, oparg, *ignored): # opargs contains the arg, and kwarg count, excluding the implicit 'self' n_args = oparg & 0xff n_kwargs = (oparg >> 8) & 0xff w_self = f.peekvalue_maybe_none(n_args + (2 * n_kwargs)) n = n_args + (w_self is not None) if not n_kwargs: w_callable = f.peekvalue(n_args + (2 * n_kwargs) + 1) w_result = f.space.call_valuestack( > w_callable, n, f, methodcall=w_self is not None, dropvalues=n_args + 2) objspace\std\callmethod.py:96: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_global_v...uild\pypy\module\_cffi_backend\test\test_recompiler.py:200]', line 1> at line 5 dropvalues = 5, methodcall = False def call_valuestack(self, w_func, nargs, frame, dropvalues, methodcall=False): # methodcall is only used for better error messages in argument.py from pypy.interpreter.function import Function, Method, is_builtin_code if frame.get_is_being_profiled() and is_builtin_code(w_func): # XXX: this code is copied&pasted :-( from the slow path below # call_valuestack(). args = frame.make_arguments(nargs) frame.dropvalues(dropvalues) return self.call_args_and_c_profile(frame, w_func, args) if not self.config.objspace.disable_call_speedhacks: # start of hack for performance if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: w_func = w_func.w_function # reuse callable stack place for w_inst frame.settopvalue(w_inst, nargs) nargs += 1 methodcall = True elif nargs > 0 and ( self.abstract_isinstance_w(frame.peekvalue(nargs-1), # :-( w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): return w_func.funccall_valuestack( > nargs, frame, methodcall=methodcall, dropvalues=dropvalues) interpreter\baseobjspace.py:1243: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_global_v...uild\pypy\module\_cffi_backend\test\test_recompiler.py:200]', line 1> at line 5 dropvalues = 5, methodcall = False def funccall_valuestack(self, nargs, frame, dropvalues, methodcall=False): # speed hack # methodcall is only for better error messages from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit # if (jit.we_are_jitted() and code is self.space._code_of_sys_exc_info and nargs == 0): frame.dropvalues(dropvalues) from pypy.module.sys.vm import exc_info_direct return exc_info_direct(self.space, frame) # fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: f_0 = frame.peekvalue(0) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, f_0) elif nargs == 2: f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, f_1, f_0) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) frame.dropvalues(dropvalues) return code.fastcall_3(self.space, self, f_2, f_1, f_0) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) f_3 = frame.peekvalue(3) frame.dropvalues(dropvalues) return code.fastcall_4(self.space, self, f_3, f_2, f_1, f_0) elif (nargs | Code.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) return self._flat_pycall(code, nargs, frame, dropvalues) elif fast_natural_arity & Code.FLATPYCALL: natural_arity = fast_natural_arity & 0xff if natural_arity > nargs >= natural_arity - len(self.defs_w): assert isinstance(code, PyCode) return self._flat_pycall_defaults(code, nargs, frame, natural_arity - nargs, dropvalues) elif fast_natural_arity == Code.PASSTHROUGHARGS1 and nargs >= 1: assert isinstance(code, gateway.BuiltinCodePassThroughArguments1) w_obj = frame.peekvalue(nargs-1) args = frame.make_arguments(nargs-1) frame.dropvalues(dropvalues) return code.funcrun_obj(self, w_obj, args) args = frame.make_arguments(nargs, methodcall=methodcall) frame.dropvalues(dropvalues) > return self.call_args(args) interpreter\function.py:190: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('int a, b, c;'), W_BytesObject('test_global_var_int'), W_BytesObject('int a = 999, b, c;')]) def call_args(self, args): # delegate activation to code > w_res = self.getcode().funcrun(self, args) interpreter\function.py:68: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('int a, b, c;'), W_BytesObject('test_global_var_int'), W_BytesObject('int a = 999, b, c;')]) def funcrun(self, func, args): > return BuiltinCode.funcrun_obj(self, func, None, args) interpreter\gateway.py:781: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('int a, b, c;'), W_BytesObject('test_global_var_int'), W_BytesObject('int a = 999, b, c;')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: w_result = activation._run(space, scope_w) except DescrMismatch: if w_obj is not None: args = args.prepend(w_obj) return self._type_unwrap_mismatch(space, args) except Exception as e: > self.handle_exception(space, e) interpreter\gateway.py:795: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> space = StdObjSpace e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def handle_exception(self, space, e): try: if not we_are_translated(): raise raise e except OperationError: raise except Exception as e: # general fall-back from pypy.interpreter import error > raise error.get_converted_unexpected_exception(space, e) interpreter\gateway.py:819: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('int a, b, c;'), W_BytesObject('test_global_var_int'), W_BytesObject('int a = 999, b, c;')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: > w_result = activation._run(space, scope_w) interpreter\gateway.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinActivation_UwS_ObjSpace_text_text_text_W_Root_W_Root_W_Root_int_W_Root object at 0x000002791c13af38> space = StdObjSpace scope_w = [W_BytesObject('int a, b, c;'), W_BytesObject('test_global_var_int'), W_BytesObject('int a = 999, b, c;'), None, None, None, ...] def _run(self, space, scope_w): > return self.behavior(space, space.text_w(scope_w[0]), space.text_w(scope_w[1]), space.text_w(scope_w[2]), scope_w[3], scope_w[4], scope_w[5], space.gateway_int_w(scope_w[6]), scope_w[7]) <3152-codegen d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\rpython\tool\sourcetools.py:200>:3: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace, cdef = 'int a, b, c;' module_name = '_CFFI_test_global_var_int', source = 'int a = 999, b, c;' w_includes = None, w_extra_source = None, w_min_version = None, packed = 0 w_extra_compile_args = None @unwrap_spec(cdef='text', module_name='text', source='text', packed=int) def prepare(space, cdef, module_name, source, w_includes=None, w_extra_source=None, w_min_version=None, packed=False, w_extra_compile_args=None): try: import cffi from cffi import FFI # <== the system one, which from cffi import recompiler # needs to be at least cffi 1.0.4 from cffi import ffiplatform except ImportError: pytest.skip("system cffi module not found or older than 1.0.0") if w_min_version is None: min_version = (1, 4, 0) else: min_version = tuple(space.unwrap(w_min_version)) if cffi.__version_info__ < min_version: pytest.skip("system cffi module needs to be at least %s, got %s" % ( min_version, cffi.__version_info__)) space.appexec([], """(): import _cffi_backend # force it to be initialized """) includes = [] if w_includes: includes += space.unpackiterable(w_includes) assert module_name.startswith('test_') module_name = '_CFFI_' + module_name rdir = udir.ensure('recompiler', dir=1) rdir.join('Python.h').write( '#include <stdio.h>\n' '#define PYPY_VERSION XX\n' '#define PyMODINIT_FUNC /*exported*/ void\n' ) path = module_name.replace('.', os.sep) if '.' in module_name: subrdir = rdir.join(module_name[:module_name.index('.')]) os.mkdir(str(subrdir)) else: subrdir = rdir c_file = str(rdir.join('%s.c' % path)) ffi = FFI() for include_ffi_object in includes: ffi.include(include_ffi_object._test_recompiler_source_ffi) ffi.cdef(cdef, packed=packed) ffi.set_source(module_name, source) ffi.emit_c_code(c_file) base_module_name = module_name.split('.')[-1] sources = [] if w_extra_source is not None: sources.append(space.str_w(w_extra_source)) kwargs = {} # GCC 14 promotes -Wincompatible-pointer-types from a warning to an error # by default, which breaks cffi's intentionally-mismatched field-check # probes (e.g. test_misdeclared_field_1). Keep it a warning so the module # compiles and cffi's runtime checks can run. extra = ['-Wno-error=incompatible-pointer-types'] if w_extra_compile_args is not None: extra = extra + space.unwrap(w_extra_compile_args) kwargs['extra_compile_args'] = extra ext = ffiplatform.get_extension(c_file, module_name, include_dirs=[str(rdir)], export_symbols=['_cffi_pypyinit_' + base_module_name], sources=sources, **kwargs) > ffiplatform.compile(str(rdir), ext) module\_cffi_backend\test\test_recompiler.py:86: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x0000027928bd96e0> compiler_verbose = 0, debug = None def compile(tmpdir, ext, compiler_verbose=0, debug=None): """Compile a C extension module using distutils.""" saved_environ = os.environ.copy() try: > outputfilename = _build(tmpdir, ext, compiler_verbose, debug) d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x0000027928bd96e0> compiler_verbose = 0, debug = 0 def _build(tmpdir, ext, compiler_verbose=0, debug=None): # XXX compact but horrible :-( from cffi._shimmed_dist_utils import Distribution, CompileError, LinkError, set_threshold, set_verbosity dist = Distribution({'ext_modules': [ext]}) dist.parse_config_files() options = dist.get_option_dict('build_ext') if debug is None: debug = sys.flags.debug options['debug'] = ('ffiplatform', debug) options['force'] = ('ffiplatform', True) options['build_lib'] = ('ffiplatform', tmpdir) options['build_temp'] = ('ffiplatform', tmpdir) # try: old_level = set_threshold(0) or 0 try: set_verbosity(compiler_verbose) dist.run_command('build_ext') cmd_obj = dist.get_command_obj('build_ext') [soname] = cmd_obj.get_outputs() finally: set_threshold(old_level) except (CompileError, LinkError) as e: > raise VerificationError('%s: %s' % (e.__class__.__name__, e)) E VerificationError: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2 d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:54: VerificationError ---------------------------- Captured stdout call ----------------------------- generating d:\systemtemp\pytest\usession-main-595\recompiler\_CFFI_test_global_var_int.c ---------------------------- Captured stderr call ----------------------------- d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\cparser.py:165: UserWarning: Global variable 'b' in cdef(): for consistency with C it should have a storage class specifier (usually 'extern') "(usually 'extern')" % (decl.name,)) d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\cparser.py:165: UserWarning: Global variable 'c' in cdef(): for consistency with C it should have a storage class specifier (usually 'extern') "(usually 'extern')" % (decl.name,)) cl : Command line error D8021 : invalid numeric argument '/Wno-error=incompatible-pointer-types' ________________________ AppTestRecompiler.test_macro _________________________ self = <CallInfo when='call' exception: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2> func = <function <lambda> at 0x000002791b56d448>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ..\_pytest\runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ..\_pytest\runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_macro'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_macro'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ..\_pytest\vendored_packages\pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00000279153616a8> hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_macro'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_macro'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ..\_pytest\vendored_packages\pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_macro'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_macro'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ..\_pytest\vendored_packages\pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_macro'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791a5942f0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...test_macro'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792996c520> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792996c520> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...test_macro'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_macro'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791a594250> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...test_macro'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792996c4e0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792996c4e0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...test_macro'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_macro'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ..\_pytest\vendored_packages\pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_macro'> def pytest_runtest_call(item): try: > item.runtest() ..\_pytest\runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_macro'> def runtest(self): target = self.obj if self.config.option.runappdirect: return target() space = target.im_self.space filename = self._getdynfilename(target) func = app2interp_temp(target.im_func, filename=filename) w_instance = self.parent.w_instance > self.execute_appex(space, func, space, w_instance) tool\pytest\apptest.py:89: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_macro'>, space = StdObjSpace target = <function test_macro at 0x000002791c6c6f98> args = (StdObjSpace, <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>) def execute_appex(self, space, target, *args): self.space = space try: > target(*args) tool\pytest\apptest.py:30: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) w_func = <Function test_macro> args = <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8> def appcaller(space, *args_w): if not isinstance(space, ObjSpace): raise TypeError("first argument must be a space instance.") # the last argument can be an Arguments w_func = self.wget(space, name) if not args_w: return space.call_function(w_func) else: args = args_w[-1] assert args is not None if not isinstance(args, Arguments): > return space.call_function(w_func, *args_w) interpreter\gateway.py:1227: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <Function test_macro> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) nargs = 1, Function = <class 'pypy.interpreter.function.Function'> Method = <class 'pypy.interpreter.function.Method'> def call_function(self, w_func, *args_w): nargs = len(args_w) # used for pruning funccall versions if not self.config.objspace.disable_call_speedhacks and nargs < 5: # start of hack for performance from pypy.interpreter.function import Function, Method if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: if nargs < 4: func = w_func.w_function if isinstance(func, Function): return func.funccall(w_inst, *args_w) elif args_w and ( self.abstract_isinstance_w(args_w[0], w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): > return w_func.funccall(*args_w) interpreter\baseobjspace.py:1210: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <Function test_macro> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) gateway = <module 'pypy.interpreter.gateway' from 'd:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\interpreter\\gateway.pyc'> PyCode = <class 'pypy.interpreter.pycode.PyCode'> code = <code object test_macro, file '[d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:218]', line 1> def funccall(self, *args_w): # speed hack from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit nargs = len(args_w) fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, args_w[0]) elif nargs == 2: assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, args_w[0], args_w[1]) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) return code.fastcall_3(self.space, self, args_w[0], args_w[1], args_w[2]) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) return code.fastcall_4(self.space, self, args_w[0], args_w[1], args_w[2], args_w[3]) elif (nargs | PyCode.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) if nargs < 5: new_frame = self.space.createframe(code, self.w_func_globals, self) for i in funccallunrolling: if i < nargs: new_frame.locals_cells_stack_w[i] = args_w[i] > return new_frame.run() interpreter\function.py:118: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_macro, f...uild\pypy\module\_cffi_backend\test\test_recompiler.py:218]', line 1> at line 5 def run(self): """Start this frame's execution.""" if self.getcode().co_flags & pycode.CO_GENERATOR: from pypy.interpreter.generator import GeneratorIterator return GeneratorIterator(self) else: > return self.execute_frame() interpreter\pyframe.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_macro, f...uild\pypy\module\_cffi_backend\test\test_recompiler.py:218]', line 1> at line 5 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, executioncontext) except OperationError: raise except Exception as e: # general fall-back > raise self._convert_unexpected_exception(e) interpreter\pyframe.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_macro, f...uild\pypy\module\_cffi_backend\test\test_recompiler.py:218]', line 1> at line 5 e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def _convert_unexpected_exception(self, e): from pypy.interpreter import error > operr = error.get_converted_unexpected_exception(self.space, e) interpreter\pyframe.py:943: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_macro, f...uild\pypy\module\_cffi_backend\test\test_recompiler.py:218]', line 1> at line 5 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, > executioncontext) interpreter\pyframe.py:286: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_macro, f...uild\pypy\module\_cffi_backend\test\test_recompiler.py:218]', line 1> at line 5 pycode = <code object test_macro, file '[d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:218]', line 1> next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def dispatch(self, pycode, next_instr, ec): # For the sequel, force 'next_instr' to be unsigned for performance next_instr = r_uint(next_instr) co_code = pycode.co_code try: while True: > next_instr = self.handle_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:64: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_macro, f...uild\pypy\module\_cffi_backend\test\test_recompiler.py:218]', line 1> at line 5 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00\xcc\x15\x00|\x02\x00j\x01\x00d\x04\x00k\x02\x00s3\x00t\x02\x00\x82\x01\x00t\x03\x00t\x04\x00d\x05\x00\x83\x02\x00\x01d\x00\x00S' next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def handle_bytecode(self, co_code, next_instr, ec): try: > next_instr = self.dispatch_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:71: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_macro, f...uild\pypy\module\_cffi_backend\test\test_recompiler.py:218]', line 1> at line 5 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00\xcc\x15\x00|\x02\x00j\x01\x00d\x04\x00k\x02\x00s3\x00t\x02\x00\x82\x01\x00t\x03\x00t\x04\x00d\x05\x00\x83\x02\x00\x01d\x00\x00S' next_instr = 18L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> @jit.unroll_safe def dispatch_bytecode(self, co_code, next_instr, ec): while True: self.last_instr = intmask(next_instr) if jit.we_are_jitted(): if self.debugdata: ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) else: # Only reload next_instr from last_instr when something that # can modify it actually ran (trace function or action # dispatcher). In the common case (no trace, positive ticker) # next_instr is unchanged and the round-trip is skipped. _d = self.debugdata if ec.space.reverse_debugging or ( _d is not None and _d.w_f_trace is not None) or ( not we_are_translated() and 'bytecode_only_trace' in ec.__dict__): ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) actionflag = ec.space.actionflag if actionflag.decrement_ticker(TICK_COUNTER_STEP) < 0: actionflag.action_dispatcher(ec, self) next_instr = r_uint(self.last_instr) opcode = ord(co_code[next_instr]) next_instr += 1 if opcode >= HAVE_ARGUMENT: lo = ord(co_code[next_instr]) hi = ord(co_code[next_instr+1]) next_instr += 2 oparg = (hi * 256) | lo else: oparg = 0 # note: the structure of the code here is such that it makes # (after translation) a big "if/elif" chain, which is then # turned into a switch(). while opcode == opcodedesc.EXTENDED_ARG.index: opcode = ord(co_code[next_instr]) if opcode < HAVE_ARGUMENT: raise BytecodeCorruption lo = ord(co_code[next_instr+1]) hi = ord(co_code[next_instr+2]) next_instr += 3 oparg = (oparg * 65536) | (hi * 256) | lo if opcode == opcodedesc.RETURN_VALUE.index: if not self.blockstack_non_empty(): self.frame_finished_execution = True # for generators raise Return w_returnvalue = self.popvalue() block = self.unrollstack(SReturnValue.kind) if block is None: self.pushvalue(w_returnvalue) raise Return else: unroller = SReturnValue(w_returnvalue) next_instr = block.handle(self, unroller) return next_instr # now inside a 'finally' block elif opcode == opcodedesc.END_FINALLY.index: unroller = self.end_finally() if isinstance(unroller, SuspendedUnroller): # go on unrolling the stack block = self.unrollstack(unroller.kind) if block is None: w_result = unroller.nomoreblocks() self.pushvalue(w_result) raise Return else: next_instr = block.handle(self, unroller) return next_instr elif opcode == opcodedesc.JUMP_ABSOLUTE.index: return self.jump_absolute(oparg, ec) elif opcode == opcodedesc.BREAK_LOOP.index: next_instr = self.BREAK_LOOP(oparg, next_instr) elif opcode == opcodedesc.CONTINUE_LOOP.index: return self.CONTINUE_LOOP(oparg, next_instr) elif opcode == opcodedesc.FOR_ITER.index: next_instr = self.FOR_ITER(oparg, next_instr) elif opcode == opcodedesc.JUMP_FORWARD.index: next_instr = self.JUMP_FORWARD(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_FALSE_OR_POP.index: next_instr = self.JUMP_IF_FALSE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_NOT_DEBUG.index: next_instr = self.JUMP_IF_NOT_DEBUG(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_TRUE_OR_POP.index: next_instr = self.JUMP_IF_TRUE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_FALSE.index: next_instr = self.POP_JUMP_IF_FALSE(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_TRUE.index: next_instr = self.POP_JUMP_IF_TRUE(oparg, next_instr) elif opcode == opcodedesc.BINARY_ADD.index: self.BINARY_ADD(oparg, next_instr) elif opcode == opcodedesc.BINARY_AND.index: self.BINARY_AND(oparg, next_instr) elif opcode == opcodedesc.BINARY_DIVIDE.index: self.BINARY_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_FLOOR_DIVIDE.index: self.BINARY_FLOOR_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_LSHIFT.index: self.BINARY_LSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_MODULO.index: self.BINARY_MODULO(oparg, next_instr) elif opcode == opcodedesc.BINARY_MULTIPLY.index: self.BINARY_MULTIPLY(oparg, next_instr) elif opcode == opcodedesc.BINARY_OR.index: self.BINARY_OR(oparg, next_instr) elif opcode == opcodedesc.BINARY_POWER.index: self.BINARY_POWER(oparg, next_instr) elif opcode == opcodedesc.BINARY_RSHIFT.index: self.BINARY_RSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBSCR.index: self.BINARY_SUBSCR(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBTRACT.index: self.BINARY_SUBTRACT(oparg, next_instr) elif opcode == opcodedesc.BINARY_TRUE_DIVIDE.index: self.BINARY_TRUE_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_XOR.index: self.BINARY_XOR(oparg, next_instr) elif opcode == opcodedesc.BUILD_CLASS.index: self.BUILD_CLASS(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST.index: self.BUILD_LIST(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST_FROM_ARG.index: self.BUILD_LIST_FROM_ARG(oparg, next_instr) elif opcode == opcodedesc.BUILD_MAP.index: self.BUILD_MAP(oparg, next_instr) elif opcode == opcodedesc.BUILD_SET.index: self.BUILD_SET(oparg, next_instr) elif opcode == opcodedesc.BUILD_SLICE.index: self.BUILD_SLICE(oparg, next_instr) elif opcode == opcodedesc.BUILD_TUPLE.index: self.BUILD_TUPLE(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION.index: self.CALL_FUNCTION(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_KW.index: self.CALL_FUNCTION_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR.index: self.CALL_FUNCTION_VAR(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR_KW.index: self.CALL_FUNCTION_VAR_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_METHOD.index: > self.CALL_METHOD(oparg, next_instr) interpreter\pyopcode.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ f = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_macro, f...uild\pypy\module\_cffi_backend\test\test_recompiler.py:218]', line 1> at line 5 oparg = 3, ignored = (18L,), n_args = 3, n_kwargs = 0, w_self = None @jit.unroll_safe def CALL_METHOD(f, oparg, *ignored): # opargs contains the arg, and kwarg count, excluding the implicit 'self' n_args = oparg & 0xff n_kwargs = (oparg >> 8) & 0xff w_self = f.peekvalue_maybe_none(n_args + (2 * n_kwargs)) n = n_args + (w_self is not None) if not n_kwargs: w_callable = f.peekvalue(n_args + (2 * n_kwargs) + 1) w_result = f.space.call_valuestack( > w_callable, n, f, methodcall=w_self is not None, dropvalues=n_args + 2) objspace\std\callmethod.py:96: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_macro, f...uild\pypy\module\_cffi_backend\test\test_recompiler.py:218]', line 1> at line 5 dropvalues = 5, methodcall = False def call_valuestack(self, w_func, nargs, frame, dropvalues, methodcall=False): # methodcall is only used for better error messages in argument.py from pypy.interpreter.function import Function, Method, is_builtin_code if frame.get_is_being_profiled() and is_builtin_code(w_func): # XXX: this code is copied&pasted :-( from the slow path below # call_valuestack(). args = frame.make_arguments(nargs) frame.dropvalues(dropvalues) return self.call_args_and_c_profile(frame, w_func, args) if not self.config.objspace.disable_call_speedhacks: # start of hack for performance if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: w_func = w_func.w_function # reuse callable stack place for w_inst frame.settopvalue(w_inst, nargs) nargs += 1 methodcall = True elif nargs > 0 and ( self.abstract_isinstance_w(frame.peekvalue(nargs-1), # :-( w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): return w_func.funccall_valuestack( > nargs, frame, methodcall=methodcall, dropvalues=dropvalues) interpreter\baseobjspace.py:1243: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_macro, f...uild\pypy\module\_cffi_backend\test\test_recompiler.py:218]', line 1> at line 5 dropvalues = 5, methodcall = False def funccall_valuestack(self, nargs, frame, dropvalues, methodcall=False): # speed hack # methodcall is only for better error messages from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit # if (jit.we_are_jitted() and code is self.space._code_of_sys_exc_info and nargs == 0): frame.dropvalues(dropvalues) from pypy.module.sys.vm import exc_info_direct return exc_info_direct(self.space, frame) # fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: f_0 = frame.peekvalue(0) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, f_0) elif nargs == 2: f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, f_1, f_0) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) frame.dropvalues(dropvalues) return code.fastcall_3(self.space, self, f_2, f_1, f_0) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) f_3 = frame.peekvalue(3) frame.dropvalues(dropvalues) return code.fastcall_4(self.space, self, f_3, f_2, f_1, f_0) elif (nargs | Code.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) return self._flat_pycall(code, nargs, frame, dropvalues) elif fast_natural_arity & Code.FLATPYCALL: natural_arity = fast_natural_arity & 0xff if natural_arity > nargs >= natural_arity - len(self.defs_w): assert isinstance(code, PyCode) return self._flat_pycall_defaults(code, nargs, frame, natural_arity - nargs, dropvalues) elif fast_natural_arity == Code.PASSTHROUGHARGS1 and nargs >= 1: assert isinstance(code, gateway.BuiltinCodePassThroughArguments1) w_obj = frame.peekvalue(nargs-1) args = frame.make_arguments(nargs-1) frame.dropvalues(dropvalues) return code.funcrun_obj(self, w_obj, args) args = frame.make_arguments(nargs, methodcall=methodcall) frame.dropvalues(dropvalues) > return self.call_args(args) interpreter\function.py:190: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('#define FOOBAR ...'), W_BytesObject('test_macro'), W_BytesObject('#define FOOBAR (-6912)')]) def call_args(self, args): # delegate activation to code > w_res = self.getcode().funcrun(self, args) interpreter\function.py:68: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('#define FOOBAR ...'), W_BytesObject('test_macro'), W_BytesObject('#define FOOBAR (-6912)')]) def funcrun(self, func, args): > return BuiltinCode.funcrun_obj(self, func, None, args) interpreter\gateway.py:781: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('#define FOOBAR ...'), W_BytesObject('test_macro'), W_BytesObject('#define FOOBAR (-6912)')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: w_result = activation._run(space, scope_w) except DescrMismatch: if w_obj is not None: args = args.prepend(w_obj) return self._type_unwrap_mismatch(space, args) except Exception as e: > self.handle_exception(space, e) interpreter\gateway.py:795: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> space = StdObjSpace e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def handle_exception(self, space, e): try: if not we_are_translated(): raise raise e except OperationError: raise except Exception as e: # general fall-back from pypy.interpreter import error > raise error.get_converted_unexpected_exception(space, e) interpreter\gateway.py:819: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('#define FOOBAR ...'), W_BytesObject('test_macro'), W_BytesObject('#define FOOBAR (-6912)')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: > w_result = activation._run(space, scope_w) interpreter\gateway.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinActivation_UwS_ObjSpace_text_text_text_W_Root_W_Root_W_Root_int_W_Root object at 0x000002791c13af38> space = StdObjSpace scope_w = [W_BytesObject('#define FOOBAR ...'), W_BytesObject('test_macro'), W_BytesObject('#define FOOBAR (-6912)'), None, None, None, ...] def _run(self, space, scope_w): > return self.behavior(space, space.text_w(scope_w[0]), space.text_w(scope_w[1]), space.text_w(scope_w[2]), scope_w[3], scope_w[4], scope_w[5], space.gateway_int_w(scope_w[6]), scope_w[7]) <3152-codegen d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\rpython\tool\sourcetools.py:200>:3: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace, cdef = '#define FOOBAR ...' module_name = '_CFFI_test_macro', source = '#define FOOBAR (-6912)' w_includes = None, w_extra_source = None, w_min_version = None, packed = 0 w_extra_compile_args = None @unwrap_spec(cdef='text', module_name='text', source='text', packed=int) def prepare(space, cdef, module_name, source, w_includes=None, w_extra_source=None, w_min_version=None, packed=False, w_extra_compile_args=None): try: import cffi from cffi import FFI # <== the system one, which from cffi import recompiler # needs to be at least cffi 1.0.4 from cffi import ffiplatform except ImportError: pytest.skip("system cffi module not found or older than 1.0.0") if w_min_version is None: min_version = (1, 4, 0) else: min_version = tuple(space.unwrap(w_min_version)) if cffi.__version_info__ < min_version: pytest.skip("system cffi module needs to be at least %s, got %s" % ( min_version, cffi.__version_info__)) space.appexec([], """(): import _cffi_backend # force it to be initialized """) includes = [] if w_includes: includes += space.unpackiterable(w_includes) assert module_name.startswith('test_') module_name = '_CFFI_' + module_name rdir = udir.ensure('recompiler', dir=1) rdir.join('Python.h').write( '#include <stdio.h>\n' '#define PYPY_VERSION XX\n' '#define PyMODINIT_FUNC /*exported*/ void\n' ) path = module_name.replace('.', os.sep) if '.' in module_name: subrdir = rdir.join(module_name[:module_name.index('.')]) os.mkdir(str(subrdir)) else: subrdir = rdir c_file = str(rdir.join('%s.c' % path)) ffi = FFI() for include_ffi_object in includes: ffi.include(include_ffi_object._test_recompiler_source_ffi) ffi.cdef(cdef, packed=packed) ffi.set_source(module_name, source) ffi.emit_c_code(c_file) base_module_name = module_name.split('.')[-1] sources = [] if w_extra_source is not None: sources.append(space.str_w(w_extra_source)) kwargs = {} # GCC 14 promotes -Wincompatible-pointer-types from a warning to an error # by default, which breaks cffi's intentionally-mismatched field-check # probes (e.g. test_misdeclared_field_1). Keep it a warning so the module # compiles and cffi's runtime checks can run. extra = ['-Wno-error=incompatible-pointer-types'] if w_extra_compile_args is not None: extra = extra + space.unwrap(w_extra_compile_args) kwargs['extra_compile_args'] = extra ext = ffiplatform.get_extension(c_file, module_name, include_dirs=[str(rdir)], export_symbols=['_cffi_pypyinit_' + base_module_name], sources=sources, **kwargs) > ffiplatform.compile(str(rdir), ext) module\_cffi_backend\test\test_recompiler.py:86: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x000002792996c6a0> compiler_verbose = 0, debug = None def compile(tmpdir, ext, compiler_verbose=0, debug=None): """Compile a C extension module using distutils.""" saved_environ = os.environ.copy() try: > outputfilename = _build(tmpdir, ext, compiler_verbose, debug) d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x000002792996c6a0> compiler_verbose = 0, debug = 0 def _build(tmpdir, ext, compiler_verbose=0, debug=None): # XXX compact but horrible :-( from cffi._shimmed_dist_utils import Distribution, CompileError, LinkError, set_threshold, set_verbosity dist = Distribution({'ext_modules': [ext]}) dist.parse_config_files() options = dist.get_option_dict('build_ext') if debug is None: debug = sys.flags.debug options['debug'] = ('ffiplatform', debug) options['force'] = ('ffiplatform', True) options['build_lib'] = ('ffiplatform', tmpdir) options['build_temp'] = ('ffiplatform', tmpdir) # try: old_level = set_threshold(0) or 0 try: set_verbosity(compiler_verbose) dist.run_command('build_ext') cmd_obj = dist.get_command_obj('build_ext') [soname] = cmd_obj.get_outputs() finally: set_threshold(old_level) except (CompileError, LinkError) as e: > raise VerificationError('%s: %s' % (e.__class__.__name__, e)) E VerificationError: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2 d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:54: VerificationError ---------------------------- Captured stdout call ----------------------------- generating d:\systemtemp\pytest\usession-main-595\recompiler\_CFFI_test_macro.c ---------------------------- Captured stderr call ----------------------------- cl : Command line error D8021 : invalid numeric argument '/Wno-error=incompatible-pointer-types' __________________ AppTestRecompiler.test_macro_check_value ___________________ self = <CallInfo when='call' exception: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2> func = <function <lambda> at 0x0000027921083f10>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ..\_pytest\runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ..\_pytest\runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_macro_check_value'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_macro_check_value'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ..\_pytest\vendored_packages\pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00000279153616a8> hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_macro_check_value'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_macro_check_value'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ..\_pytest\vendored_packages\pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_macro_check_value'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_macro_check_value'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ..\_pytest\vendored_packages\pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_macro_check_value'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002792b3e8070> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...heck_value'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792abffba0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792abffba0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...heck_value'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_macro_check_value'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002792b3e8020> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...heck_value'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792abffb60> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792abffb60> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...heck_value'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_macro_check_value'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ..\_pytest\vendored_packages\pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_macro_check_value'> def pytest_runtest_call(item): try: > item.runtest() ..\_pytest\runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_macro_check_value'> def runtest(self): target = self.obj if self.config.option.runappdirect: return target() space = target.im_self.space filename = self._getdynfilename(target) func = app2interp_temp(target.im_func, filename=filename) w_instance = self.parent.w_instance > self.execute_appex(space, func, space, w_instance) tool\pytest\apptest.py:89: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_macro_check_value'>, space = StdObjSpace target = <function test_macro_check_value at 0x0000027925028110> args = (StdObjSpace, <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>) def execute_appex(self, space, target, *args): self.space = space try: > target(*args) tool\pytest\apptest.py:30: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) w_func = <Function test_macro_check_value> args = <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8> def appcaller(space, *args_w): if not isinstance(space, ObjSpace): raise TypeError("first argument must be a space instance.") # the last argument can be an Arguments w_func = self.wget(space, name) if not args_w: return space.call_function(w_func) else: args = args_w[-1] assert args is not None if not isinstance(args, Arguments): > return space.call_function(w_func, *args_w) interpreter\gateway.py:1227: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <Function test_macro_check_value> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) nargs = 1, Function = <class 'pypy.interpreter.function.Function'> Method = <class 'pypy.interpreter.function.Method'> def call_function(self, w_func, *args_w): nargs = len(args_w) # used for pruning funccall versions if not self.config.objspace.disable_call_speedhacks and nargs < 5: # start of hack for performance from pypy.interpreter.function import Function, Method if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: if nargs < 4: func = w_func.w_function if isinstance(func, Function): return func.funccall(w_inst, *args_w) elif args_w and ( self.abstract_isinstance_w(args_w[0], w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): > return w_func.funccall(*args_w) interpreter\baseobjspace.py:1210: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <Function test_macro_check_value> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) gateway = <module 'pypy.interpreter.gateway' from 'd:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\interpreter\\gateway.pyc'> PyCode = <class 'pypy.interpreter.pycode.PyCode'> code = <code object test_macro_check_value, file '[d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:226]', line 1> def funccall(self, *args_w): # speed hack from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit nargs = len(args_w) fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, args_w[0]) elif nargs == 2: assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, args_w[0], args_w[1]) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) return code.fastcall_3(self.space, self, args_w[0], args_w[1], args_w[2]) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) return code.fastcall_4(self.space, self, args_w[0], args_w[1], args_w[2], args_w[3]) elif (nargs | PyCode.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) if nargs < 5: new_frame = self.space.createframe(code, self.w_func_globals, self) for i in funccallunrolling: if i < nargs: new_frame.locals_cells_stack_w[i] = args_w[i] > return new_frame.run() interpreter\function.py:118: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_macro_ch...ild\pypy\module\_cffi_backend\test\test_recompiler.py:226]', line 1> at line 24 def run(self): """Start this frame's execution.""" if self.getcode().co_flags & pycode.CO_GENERATOR: from pypy.interpreter.generator import GeneratorIterator return GeneratorIterator(self) else: > return self.execute_frame() interpreter\pyframe.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_macro_ch...ild\pypy\module\_cffi_backend\test\test_recompiler.py:226]', line 1> at line 24 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, executioncontext) except OperationError: raise except Exception as e: # general fall-back > raise self._convert_unexpected_exception(e) interpreter\pyframe.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_macro_ch...ild\pypy\module\_cffi_backend\test\test_recompiler.py:226]', line 1> at line 24 e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def _convert_unexpected_exception(self, e): from pypy.interpreter import error > operr = error.get_converted_unexpected_exception(self.space, e) interpreter\pyframe.py:943: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_macro_ch...ild\pypy\module\_cffi_backend\test\test_recompiler.py:226]', line 1> at line 24 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, > executioncontext) interpreter\pyframe.py:286: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_macro_ch...ild\pypy\module\_cffi_backend\test\test_recompiler.py:226]', line 1> at line 24 pycode = <code object test_macro_check_value, file '[d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:226]', line 1> next_instr = 168 ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def dispatch(self, pycode, next_instr, ec): # For the sequel, force 'next_instr' to be unsigned for performance next_instr = r_uint(next_instr) co_code = pycode.co_code try: while True: > next_instr = self.handle_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:64: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_macro_ch...ild\pypy\module\_cffi_backend\test\test_recompiler.py:226]', line 1> at line 24 co_code = 'd\x01\x00d\x00\x00l\x00\x00}\x01\x00d\x02\x00d\x03\x00d\x04\x00d\x05\x00d\x06\x00d\x07\x00d\x08\x00g\x07\x00}\x02\x00...00\x83\x01\x00d\x13\x00|\x0b\x00|\n\x00f\x02\x00\x16k\x02\x00s\x1d\x02t\x0b\x00\x82\x01\x00q\x94\x01Wq$\x01Wd\x00\x00S' next_instr = 168 ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def handle_bytecode(self, co_code, next_instr, ec): try: > next_instr = self.dispatch_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:71: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_macro_ch...ild\pypy\module\_cffi_backend\test\test_recompiler.py:226]', line 1> at line 24 co_code = 'd\x01\x00d\x00\x00l\x00\x00}\x01\x00d\x02\x00d\x03\x00d\x04\x00d\x05\x00d\x06\x00d\x07\x00d\x08\x00g\x07\x00}\x02\x00...00\x83\x01\x00d\x13\x00|\x0b\x00|\n\x00f\x02\x00\x16k\x02\x00s\x1d\x02t\x0b\x00\x82\x01\x00q\x94\x01Wq$\x01Wd\x00\x00S' next_instr = 264 ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> @jit.unroll_safe def dispatch_bytecode(self, co_code, next_instr, ec): while True: self.last_instr = intmask(next_instr) if jit.we_are_jitted(): if self.debugdata: ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) else: # Only reload next_instr from last_instr when something that # can modify it actually ran (trace function or action # dispatcher). In the common case (no trace, positive ticker) # next_instr is unchanged and the round-trip is skipped. _d = self.debugdata if ec.space.reverse_debugging or ( _d is not None and _d.w_f_trace is not None) or ( not we_are_translated() and 'bytecode_only_trace' in ec.__dict__): ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) actionflag = ec.space.actionflag if actionflag.decrement_ticker(TICK_COUNTER_STEP) < 0: actionflag.action_dispatcher(ec, self) next_instr = r_uint(self.last_instr) opcode = ord(co_code[next_instr]) next_instr += 1 if opcode >= HAVE_ARGUMENT: lo = ord(co_code[next_instr]) hi = ord(co_code[next_instr+1]) next_instr += 2 oparg = (hi * 256) | lo else: oparg = 0 # note: the structure of the code here is such that it makes # (after translation) a big "if/elif" chain, which is then # turned into a switch(). while opcode == opcodedesc.EXTENDED_ARG.index: opcode = ord(co_code[next_instr]) if opcode < HAVE_ARGUMENT: raise BytecodeCorruption lo = ord(co_code[next_instr+1]) hi = ord(co_code[next_instr+2]) next_instr += 3 oparg = (oparg * 65536) | (hi * 256) | lo if opcode == opcodedesc.RETURN_VALUE.index: if not self.blockstack_non_empty(): self.frame_finished_execution = True # for generators raise Return w_returnvalue = self.popvalue() block = self.unrollstack(SReturnValue.kind) if block is None: self.pushvalue(w_returnvalue) raise Return else: unroller = SReturnValue(w_returnvalue) next_instr = block.handle(self, unroller) return next_instr # now inside a 'finally' block elif opcode == opcodedesc.END_FINALLY.index: unroller = self.end_finally() if isinstance(unroller, SuspendedUnroller): # go on unrolling the stack block = self.unrollstack(unroller.kind) if block is None: w_result = unroller.nomoreblocks() self.pushvalue(w_result) raise Return else: next_instr = block.handle(self, unroller) return next_instr elif opcode == opcodedesc.JUMP_ABSOLUTE.index: return self.jump_absolute(oparg, ec) elif opcode == opcodedesc.BREAK_LOOP.index: next_instr = self.BREAK_LOOP(oparg, next_instr) elif opcode == opcodedesc.CONTINUE_LOOP.index: return self.CONTINUE_LOOP(oparg, next_instr) elif opcode == opcodedesc.FOR_ITER.index: next_instr = self.FOR_ITER(oparg, next_instr) elif opcode == opcodedesc.JUMP_FORWARD.index: next_instr = self.JUMP_FORWARD(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_FALSE_OR_POP.index: next_instr = self.JUMP_IF_FALSE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_NOT_DEBUG.index: next_instr = self.JUMP_IF_NOT_DEBUG(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_TRUE_OR_POP.index: next_instr = self.JUMP_IF_TRUE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_FALSE.index: next_instr = self.POP_JUMP_IF_FALSE(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_TRUE.index: next_instr = self.POP_JUMP_IF_TRUE(oparg, next_instr) elif opcode == opcodedesc.BINARY_ADD.index: self.BINARY_ADD(oparg, next_instr) elif opcode == opcodedesc.BINARY_AND.index: self.BINARY_AND(oparg, next_instr) elif opcode == opcodedesc.BINARY_DIVIDE.index: self.BINARY_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_FLOOR_DIVIDE.index: self.BINARY_FLOOR_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_LSHIFT.index: self.BINARY_LSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_MODULO.index: self.BINARY_MODULO(oparg, next_instr) elif opcode == opcodedesc.BINARY_MULTIPLY.index: self.BINARY_MULTIPLY(oparg, next_instr) elif opcode == opcodedesc.BINARY_OR.index: self.BINARY_OR(oparg, next_instr) elif opcode == opcodedesc.BINARY_POWER.index: self.BINARY_POWER(oparg, next_instr) elif opcode == opcodedesc.BINARY_RSHIFT.index: self.BINARY_RSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBSCR.index: self.BINARY_SUBSCR(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBTRACT.index: self.BINARY_SUBTRACT(oparg, next_instr) elif opcode == opcodedesc.BINARY_TRUE_DIVIDE.index: self.BINARY_TRUE_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_XOR.index: self.BINARY_XOR(oparg, next_instr) elif opcode == opcodedesc.BUILD_CLASS.index: self.BUILD_CLASS(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST.index: self.BUILD_LIST(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST_FROM_ARG.index: self.BUILD_LIST_FROM_ARG(oparg, next_instr) elif opcode == opcodedesc.BUILD_MAP.index: self.BUILD_MAP(oparg, next_instr) elif opcode == opcodedesc.BUILD_SET.index: self.BUILD_SET(oparg, next_instr) elif opcode == opcodedesc.BUILD_SLICE.index: self.BUILD_SLICE(oparg, next_instr) elif opcode == opcodedesc.BUILD_TUPLE.index: self.BUILD_TUPLE(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION.index: self.CALL_FUNCTION(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_KW.index: self.CALL_FUNCTION_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR.index: self.CALL_FUNCTION_VAR(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR_KW.index: self.CALL_FUNCTION_VAR_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_METHOD.index: > self.CALL_METHOD(oparg, next_instr) interpreter\pyopcode.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ f = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_macro_ch...ild\pypy\module\_cffi_backend\test\test_recompiler.py:226]', line 1> at line 24 oparg = 3, ignored = (264,), n_args = 3, n_kwargs = 0, w_self = None @jit.unroll_safe def CALL_METHOD(f, oparg, *ignored): # opargs contains the arg, and kwarg count, excluding the implicit 'self' n_args = oparg & 0xff n_kwargs = (oparg >> 8) & 0xff w_self = f.peekvalue_maybe_none(n_args + (2 * n_kwargs)) n = n_args + (w_self is not None) if not n_kwargs: w_callable = f.peekvalue(n_args + (2 * n_kwargs) + 1) w_result = f.space.call_valuestack( > w_callable, n, f, methodcall=w_self is not None, dropvalues=n_args + 2) objspace\std\callmethod.py:96: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_macro_ch...ild\pypy\module\_cffi_backend\test\test_recompiler.py:226]', line 1> at line 24 dropvalues = 5, methodcall = False def call_valuestack(self, w_func, nargs, frame, dropvalues, methodcall=False): # methodcall is only used for better error messages in argument.py from pypy.interpreter.function import Function, Method, is_builtin_code if frame.get_is_being_profiled() and is_builtin_code(w_func): # XXX: this code is copied&pasted :-( from the slow path below # call_valuestack(). args = frame.make_arguments(nargs) frame.dropvalues(dropvalues) return self.call_args_and_c_profile(frame, w_func, args) if not self.config.objspace.disable_call_speedhacks: # start of hack for performance if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: w_func = w_func.w_function # reuse callable stack place for w_inst frame.settopvalue(w_inst, nargs) nargs += 1 methodcall = True elif nargs > 0 and ( self.abstract_isinstance_w(frame.peekvalue(nargs-1), # :-( w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): return w_func.funccall_valuestack( > nargs, frame, methodcall=methodcall, dropvalues=dropvalues) interpreter\baseobjspace.py:1243: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_macro_ch...ild\pypy\module\_cffi_backend\test\test_recompiler.py:226]', line 1> at line 24 dropvalues = 5, methodcall = False def funccall_valuestack(self, nargs, frame, dropvalues, methodcall=False): # speed hack # methodcall is only for better error messages from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit # if (jit.we_are_jitted() and code is self.space._code_of_sys_exc_info and nargs == 0): frame.dropvalues(dropvalues) from pypy.module.sys.vm import exc_info_direct return exc_info_direct(self.space, frame) # fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: f_0 = frame.peekvalue(0) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, f_0) elif nargs == 2: f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, f_1, f_0) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) frame.dropvalues(dropvalues) return code.fastcall_3(self.space, self, f_2, f_1, f_0) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) f_3 = frame.peekvalue(3) frame.dropvalues(dropvalues) return code.fastcall_4(self.space, self, f_3, f_2, f_1, f_0) elif (nargs | Code.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) return self._flat_pycall(code, nargs, frame, dropvalues) elif fast_natural_arity & Code.FLATPYCALL: natural_arity = fast_natural_arity & 0xff if natural_arity > nargs >= natural_arity - len(self.defs_w): assert isinstance(code, PyCode) return self._flat_pycall_defaults(code, nargs, frame, natural_arity - nargs, dropvalues) elif fast_natural_arity == Code.PASSTHROUGHARGS1 and nargs >= 1: assert isinstance(code, gateway.BuiltinCodePassThroughArguments1) w_obj = frame.peekvalue(nargs-1) args = frame.make_arguments(nargs-1) frame.dropvalues(dropvalues) return code.funcrun_obj(self, w_obj, args) args = frame.make_arguments(nargs, methodcall=methodcall) frame.dropvalues(dropvalues) > return self.call_args(args) interpreter\function.py:190: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('#define FOO_0_0 42\n#define FOO_0_1 42\n#define FOO_...fine FOO_6_5 9223372036854775809ULL\n#define FOO_6_6 -9223372036854775807LL')]) def call_args(self, args): # delegate activation to code > w_res = self.getcode().funcrun(self, args) interpreter\function.py:68: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('#define FOO_0_0 42\n#define FOO_0_1 42\n#define FOO_...fine FOO_6_5 9223372036854775809ULL\n#define FOO_6_6 -9223372036854775807LL')]) def funcrun(self, func, args): > return BuiltinCode.funcrun_obj(self, func, None, args) interpreter\gateway.py:781: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('#define FOO_0_0 42\n#define FOO_0_1 42\n#define FOO_...fine FOO_6_5 9223372036854775809ULL\n#define FOO_6_6 -9223372036854775807LL')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: w_result = activation._run(space, scope_w) except DescrMismatch: if w_obj is not None: args = args.prepend(w_obj) return self._type_unwrap_mismatch(space, args) except Exception as e: > self.handle_exception(space, e) interpreter\gateway.py:795: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> space = StdObjSpace e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def handle_exception(self, space, e): try: if not we_are_translated(): raise raise e except OperationError: raise except Exception as e: # general fall-back from pypy.interpreter import error > raise error.get_converted_unexpected_exception(space, e) interpreter\gateway.py:819: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('#define FOO_0_0 42\n#define FOO_0_1 42\n#define FOO_...fine FOO_6_5 9223372036854775809ULL\n#define FOO_6_6 -9223372036854775807LL')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: > w_result = activation._run(space, scope_w) interpreter\gateway.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinActivation_UwS_ObjSpace_text_text_text_W_Root_W_Root_W_Root_int_W_Root object at 0x000002791c13af38> space = StdObjSpace scope_w = [W_BytesObject('#define FOO_0_0 42\n#define FOO_0_1 42\n#define FOO_0_2 42\n#de...define FOO_6_5 -9223372036854775807L...OO_0_2 0x8000...define FOO_6_5 9223372036854775809ULL\n#define FOO_6_6 -9223372036854775807LL'), None, None, None, ...] def _run(self, space, scope_w): > return self.behavior(space, space.text_w(scope_w[0]), space.text_w(scope_w[1]), space.text_w(scope_w[2]), scope_w[3], scope_w[4], scope_w[5], space.gateway_int_w(scope_w[6]), scope_w[7]) <3152-codegen d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\rpython\tool\sourcetools.py:200>:3: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace cdef = '#define FOO_0_0 42\n#define FOO_0_1 42\n#define FOO_0_2 42\n#define FOO_0_3 42\n#define FOO_0_4 42\n#define FOO_0_5 4...#define FOO_6_4 -9223372036854775807LL\n#define FOO_6_5 -9223372036854775807LL\n#define FOO_6_6 -9223372036854775807LL' module_name = '_CFFI_test_macro_check_value_ok' source = '#define FOO_0_0 42\n#define FOO_0_1 -42\n#define FOO_0_2 0x80000000\n#define FOO_0_3 -2147483648\n#define FOO_0_4 0\n...FOO_6_3 -2147483648\n#define FOO_6_4 0\n#define FOO_6_5 9223372036854775809ULL\n#define FOO_6_6 -9223372036854775807LL' w_includes = None, w_extra_source = None, w_min_version = None, packed = 0 w_extra_compile_args = None @unwrap_spec(cdef='text', module_name='text', source='text', packed=int) def prepare(space, cdef, module_name, source, w_includes=None, w_extra_source=None, w_min_version=None, packed=False, w_extra_compile_args=None): try: import cffi from cffi import FFI # <== the system one, which from cffi import recompiler # needs to be at least cffi 1.0.4 from cffi import ffiplatform except ImportError: pytest.skip("system cffi module not found or older than 1.0.0") if w_min_version is None: min_version = (1, 4, 0) else: min_version = tuple(space.unwrap(w_min_version)) if cffi.__version_info__ < min_version: pytest.skip("system cffi module needs to be at least %s, got %s" % ( min_version, cffi.__version_info__)) space.appexec([], """(): import _cffi_backend # force it to be initialized """) includes = [] if w_includes: includes += space.unpackiterable(w_includes) assert module_name.startswith('test_') module_name = '_CFFI_' + module_name rdir = udir.ensure('recompiler', dir=1) rdir.join('Python.h').write( '#include <stdio.h>\n' '#define PYPY_VERSION XX\n' '#define PyMODINIT_FUNC /*exported*/ void\n' ) path = module_name.replace('.', os.sep) if '.' in module_name: subrdir = rdir.join(module_name[:module_name.index('.')]) os.mkdir(str(subrdir)) else: subrdir = rdir c_file = str(rdir.join('%s.c' % path)) ffi = FFI() for include_ffi_object in includes: ffi.include(include_ffi_object._test_recompiler_source_ffi) ffi.cdef(cdef, packed=packed) ffi.set_source(module_name, source) ffi.emit_c_code(c_file) base_module_name = module_name.split('.')[-1] sources = [] if w_extra_source is not None: sources.append(space.str_w(w_extra_source)) kwargs = {} # GCC 14 promotes -Wincompatible-pointer-types from a warning to an error # by default, which breaks cffi's intentionally-mismatched field-check # probes (e.g. test_misdeclared_field_1). Keep it a warning so the module # compiles and cffi's runtime checks can run. extra = ['-Wno-error=incompatible-pointer-types'] if w_extra_compile_args is not None: extra = extra + space.unwrap(w_extra_compile_args) kwargs['extra_compile_args'] = extra ext = ffiplatform.get_extension(c_file, module_name, include_dirs=[str(rdir)], export_symbols=['_cffi_pypyinit_' + base_module_name], sources=sources, **kwargs) > ffiplatform.compile(str(rdir), ext) module\_cffi_backend\test\test_recompiler.py:86: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x0000027925dabca0> compiler_verbose = 0, debug = None def compile(tmpdir, ext, compiler_verbose=0, debug=None): """Compile a C extension module using distutils.""" saved_environ = os.environ.copy() try: > outputfilename = _build(tmpdir, ext, compiler_verbose, debug) d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x0000027925dabca0> compiler_verbose = 0, debug = 0 def _build(tmpdir, ext, compiler_verbose=0, debug=None): # XXX compact but horrible :-( from cffi._shimmed_dist_utils import Distribution, CompileError, LinkError, set_threshold, set_verbosity dist = Distribution({'ext_modules': [ext]}) dist.parse_config_files() options = dist.get_option_dict('build_ext') if debug is None: debug = sys.flags.debug options['debug'] = ('ffiplatform', debug) options['force'] = ('ffiplatform', True) options['build_lib'] = ('ffiplatform', tmpdir) options['build_temp'] = ('ffiplatform', tmpdir) # try: old_level = set_threshold(0) or 0 try: set_verbosity(compiler_verbose) dist.run_command('build_ext') cmd_obj = dist.get_command_obj('build_ext') [soname] = cmd_obj.get_outputs() finally: set_threshold(old_level) except (CompileError, LinkError) as e: > raise VerificationError('%s: %s' % (e.__class__.__name__, e)) E VerificationError: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2 d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:54: VerificationError ---------------------------- Captured stdout call ----------------------------- generating d:\systemtemp\pytest\usession-main-595\recompiler\_CFFI_test_macro_check_value_ok.c ---------------------------- Captured stderr call ----------------------------- cl : Command line error D8021 : invalid numeric argument '/Wno-error=incompatible-pointer-types' _______________________ AppTestRecompiler.test_constant _______________________ self = <CallInfo when='call' exception: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2> func = <function <lambda> at 0x00000279278233d0>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ..\_pytest\runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ..\_pytest\runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_constant'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_constant'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ..\_pytest\vendored_packages\pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00000279153616a8> hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_constant'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_constant'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ..\_pytest\vendored_packages\pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_constant'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_constant'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ..\_pytest\vendored_packages\pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_constant'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791fff28e0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...t_constant'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792125c620> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792125c620> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...t_constant'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_constant'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791fff2868> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...t_constant'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792125c5e0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792125c5e0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...t_constant'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_constant'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ..\_pytest\vendored_packages\pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_constant'> def pytest_runtest_call(item): try: > item.runtest() ..\_pytest\runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_constant'> def runtest(self): target = self.obj if self.config.option.runappdirect: return target() space = target.im_self.space filename = self._getdynfilename(target) func = app2interp_temp(target.im_func, filename=filename) w_instance = self.parent.w_instance > self.execute_appex(space, func, space, w_instance) tool\pytest\apptest.py:89: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_constant'>, space = StdObjSpace target = <function test_constant at 0x00000279278234c0> args = (StdObjSpace, <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>) def execute_appex(self, space, target, *args): self.space = space try: > target(*args) tool\pytest\apptest.py:30: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) w_func = <Function test_constant> args = <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8> def appcaller(space, *args_w): if not isinstance(space, ObjSpace): raise TypeError("first argument must be a space instance.") # the last argument can be an Arguments w_func = self.wget(space, name) if not args_w: return space.call_function(w_func) else: args = args_w[-1] assert args is not None if not isinstance(args, Arguments): > return space.call_function(w_func, *args_w) interpreter\gateway.py:1227: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <Function test_constant> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) nargs = 1, Function = <class 'pypy.interpreter.function.Function'> Method = <class 'pypy.interpreter.function.Method'> def call_function(self, w_func, *args_w): nargs = len(args_w) # used for pruning funccall versions if not self.config.objspace.disable_call_speedhacks and nargs < 5: # start of hack for performance from pypy.interpreter.function import Function, Method if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: if nargs < 4: func = w_func.w_function if isinstance(func, Function): return func.funccall(w_inst, *args_w) elif args_w and ( self.abstract_isinstance_w(args_w[0], w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): > return w_func.funccall(*args_w) interpreter\baseobjspace.py:1210: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <Function test_constant> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) gateway = <module 'pypy.interpreter.gateway' from 'd:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\interpreter\\gateway.pyc'> PyCode = <class 'pypy.interpreter.pycode.PyCode'> code = <code object test_constant, file '[d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:268]', line 1> def funccall(self, *args_w): # speed hack from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit nargs = len(args_w) fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, args_w[0]) elif nargs == 2: assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, args_w[0], args_w[1]) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) return code.fastcall_3(self.space, self, args_w[0], args_w[1], args_w[2]) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) return code.fastcall_4(self.space, self, args_w[0], args_w[1], args_w[2], args_w[3]) elif (nargs | PyCode.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) if nargs < 5: new_frame = self.space.createframe(code, self.w_func_globals, self) for i in funccallunrolling: if i < nargs: new_frame.locals_cells_stack_w[i] = args_w[i] > return new_frame.run() interpreter\function.py:118: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_constant...uild\pypy\module\_cffi_backend\test\test_recompiler.py:268]', line 1> at line 5 def run(self): """Start this frame's execution.""" if self.getcode().co_flags & pycode.CO_GENERATOR: from pypy.interpreter.generator import GeneratorIterator return GeneratorIterator(self) else: > return self.execute_frame() interpreter\pyframe.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_constant...uild\pypy\module\_cffi_backend\test\test_recompiler.py:268]', line 1> at line 5 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, executioncontext) except OperationError: raise except Exception as e: # general fall-back > raise self._convert_unexpected_exception(e) interpreter\pyframe.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_constant...uild\pypy\module\_cffi_backend\test\test_recompiler.py:268]', line 1> at line 5 e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def _convert_unexpected_exception(self, e): from pypy.interpreter import error > operr = error.get_converted_unexpected_exception(self.space, e) interpreter\pyframe.py:943: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_constant...uild\pypy\module\_cffi_backend\test\test_recompiler.py:268]', line 1> at line 5 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, > executioncontext) interpreter\pyframe.py:286: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_constant...uild\pypy\module\_cffi_backend\test\test_recompiler.py:268]', line 1> at line 5 pycode = <code object test_constant, file '[d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:268]', line 1> next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def dispatch(self, pycode, next_instr, ec): # For the sequel, force 'next_instr' to be unsigned for performance next_instr = r_uint(next_instr) co_code = pycode.co_code try: while True: > next_instr = self.handle_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:64: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_constant...uild\pypy\module\_cffi_backend\test\test_recompiler.py:268]', line 1> at line 5 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00\xcc\x15\x00|\x02\x00j\x01\x00d\x04\x00k\x02\x00s3\x00t\x02\x00\x82\x01\x00t\x03\x00t\x04\x00d\x05\x00\x83\x02\x00\x01d\x00\x00S' next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def handle_bytecode(self, co_code, next_instr, ec): try: > next_instr = self.dispatch_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:71: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_constant...uild\pypy\module\_cffi_backend\test\test_recompiler.py:268]', line 1> at line 5 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00\xcc\x15\x00|\x02\x00j\x01\x00d\x04\x00k\x02\x00s3\x00t\x02\x00\x82\x01\x00t\x03\x00t\x04\x00d\x05\x00\x83\x02\x00\x01d\x00\x00S' next_instr = 18L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> @jit.unroll_safe def dispatch_bytecode(self, co_code, next_instr, ec): while True: self.last_instr = intmask(next_instr) if jit.we_are_jitted(): if self.debugdata: ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) else: # Only reload next_instr from last_instr when something that # can modify it actually ran (trace function or action # dispatcher). In the common case (no trace, positive ticker) # next_instr is unchanged and the round-trip is skipped. _d = self.debugdata if ec.space.reverse_debugging or ( _d is not None and _d.w_f_trace is not None) or ( not we_are_translated() and 'bytecode_only_trace' in ec.__dict__): ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) actionflag = ec.space.actionflag if actionflag.decrement_ticker(TICK_COUNTER_STEP) < 0: actionflag.action_dispatcher(ec, self) next_instr = r_uint(self.last_instr) opcode = ord(co_code[next_instr]) next_instr += 1 if opcode >= HAVE_ARGUMENT: lo = ord(co_code[next_instr]) hi = ord(co_code[next_instr+1]) next_instr += 2 oparg = (hi * 256) | lo else: oparg = 0 # note: the structure of the code here is such that it makes # (after translation) a big "if/elif" chain, which is then # turned into a switch(). while opcode == opcodedesc.EXTENDED_ARG.index: opcode = ord(co_code[next_instr]) if opcode < HAVE_ARGUMENT: raise BytecodeCorruption lo = ord(co_code[next_instr+1]) hi = ord(co_code[next_instr+2]) next_instr += 3 oparg = (oparg * 65536) | (hi * 256) | lo if opcode == opcodedesc.RETURN_VALUE.index: if not self.blockstack_non_empty(): self.frame_finished_execution = True # for generators raise Return w_returnvalue = self.popvalue() block = self.unrollstack(SReturnValue.kind) if block is None: self.pushvalue(w_returnvalue) raise Return else: unroller = SReturnValue(w_returnvalue) next_instr = block.handle(self, unroller) return next_instr # now inside a 'finally' block elif opcode == opcodedesc.END_FINALLY.index: unroller = self.end_finally() if isinstance(unroller, SuspendedUnroller): # go on unrolling the stack block = self.unrollstack(unroller.kind) if block is None: w_result = unroller.nomoreblocks() self.pushvalue(w_result) raise Return else: next_instr = block.handle(self, unroller) return next_instr elif opcode == opcodedesc.JUMP_ABSOLUTE.index: return self.jump_absolute(oparg, ec) elif opcode == opcodedesc.BREAK_LOOP.index: next_instr = self.BREAK_LOOP(oparg, next_instr) elif opcode == opcodedesc.CONTINUE_LOOP.index: return self.CONTINUE_LOOP(oparg, next_instr) elif opcode == opcodedesc.FOR_ITER.index: next_instr = self.FOR_ITER(oparg, next_instr) elif opcode == opcodedesc.JUMP_FORWARD.index: next_instr = self.JUMP_FORWARD(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_FALSE_OR_POP.index: next_instr = self.JUMP_IF_FALSE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_NOT_DEBUG.index: next_instr = self.JUMP_IF_NOT_DEBUG(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_TRUE_OR_POP.index: next_instr = self.JUMP_IF_TRUE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_FALSE.index: next_instr = self.POP_JUMP_IF_FALSE(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_TRUE.index: next_instr = self.POP_JUMP_IF_TRUE(oparg, next_instr) elif opcode == opcodedesc.BINARY_ADD.index: self.BINARY_ADD(oparg, next_instr) elif opcode == opcodedesc.BINARY_AND.index: self.BINARY_AND(oparg, next_instr) elif opcode == opcodedesc.BINARY_DIVIDE.index: self.BINARY_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_FLOOR_DIVIDE.index: self.BINARY_FLOOR_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_LSHIFT.index: self.BINARY_LSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_MODULO.index: self.BINARY_MODULO(oparg, next_instr) elif opcode == opcodedesc.BINARY_MULTIPLY.index: self.BINARY_MULTIPLY(oparg, next_instr) elif opcode == opcodedesc.BINARY_OR.index: self.BINARY_OR(oparg, next_instr) elif opcode == opcodedesc.BINARY_POWER.index: self.BINARY_POWER(oparg, next_instr) elif opcode == opcodedesc.BINARY_RSHIFT.index: self.BINARY_RSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBSCR.index: self.BINARY_SUBSCR(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBTRACT.index: self.BINARY_SUBTRACT(oparg, next_instr) elif opcode == opcodedesc.BINARY_TRUE_DIVIDE.index: self.BINARY_TRUE_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_XOR.index: self.BINARY_XOR(oparg, next_instr) elif opcode == opcodedesc.BUILD_CLASS.index: self.BUILD_CLASS(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST.index: self.BUILD_LIST(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST_FROM_ARG.index: self.BUILD_LIST_FROM_ARG(oparg, next_instr) elif opcode == opcodedesc.BUILD_MAP.index: self.BUILD_MAP(oparg, next_instr) elif opcode == opcodedesc.BUILD_SET.index: self.BUILD_SET(oparg, next_instr) elif opcode == opcodedesc.BUILD_SLICE.index: self.BUILD_SLICE(oparg, next_instr) elif opcode == opcodedesc.BUILD_TUPLE.index: self.BUILD_TUPLE(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION.index: self.CALL_FUNCTION(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_KW.index: self.CALL_FUNCTION_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR.index: self.CALL_FUNCTION_VAR(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR_KW.index: self.CALL_FUNCTION_VAR_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_METHOD.index: > self.CALL_METHOD(oparg, next_instr) interpreter\pyopcode.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ f = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_constant...uild\pypy\module\_cffi_backend\test\test_recompiler.py:268]', line 1> at line 5 oparg = 3, ignored = (18L,), n_args = 3, n_kwargs = 0, w_self = None @jit.unroll_safe def CALL_METHOD(f, oparg, *ignored): # opargs contains the arg, and kwarg count, excluding the implicit 'self' n_args = oparg & 0xff n_kwargs = (oparg >> 8) & 0xff w_self = f.peekvalue_maybe_none(n_args + (2 * n_kwargs)) n = n_args + (w_self is not None) if not n_kwargs: w_callable = f.peekvalue(n_args + (2 * n_kwargs) + 1) w_result = f.space.call_valuestack( > w_callable, n, f, methodcall=w_self is not None, dropvalues=n_args + 2) objspace\std\callmethod.py:96: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_constant...uild\pypy\module\_cffi_backend\test\test_recompiler.py:268]', line 1> at line 5 dropvalues = 5, methodcall = False def call_valuestack(self, w_func, nargs, frame, dropvalues, methodcall=False): # methodcall is only used for better error messages in argument.py from pypy.interpreter.function import Function, Method, is_builtin_code if frame.get_is_being_profiled() and is_builtin_code(w_func): # XXX: this code is copied&pasted :-( from the slow path below # call_valuestack(). args = frame.make_arguments(nargs) frame.dropvalues(dropvalues) return self.call_args_and_c_profile(frame, w_func, args) if not self.config.objspace.disable_call_speedhacks: # start of hack for performance if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: w_func = w_func.w_function # reuse callable stack place for w_inst frame.settopvalue(w_inst, nargs) nargs += 1 methodcall = True elif nargs > 0 and ( self.abstract_isinstance_w(frame.peekvalue(nargs-1), # :-( w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): return w_func.funccall_valuestack( > nargs, frame, methodcall=methodcall, dropvalues=dropvalues) interpreter\baseobjspace.py:1243: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_constant...uild\pypy\module\_cffi_backend\test\test_recompiler.py:268]', line 1> at line 5 dropvalues = 5, methodcall = False def funccall_valuestack(self, nargs, frame, dropvalues, methodcall=False): # speed hack # methodcall is only for better error messages from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit # if (jit.we_are_jitted() and code is self.space._code_of_sys_exc_info and nargs == 0): frame.dropvalues(dropvalues) from pypy.module.sys.vm import exc_info_direct return exc_info_direct(self.space, frame) # fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: f_0 = frame.peekvalue(0) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, f_0) elif nargs == 2: f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, f_1, f_0) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) frame.dropvalues(dropvalues) return code.fastcall_3(self.space, self, f_2, f_1, f_0) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) f_3 = frame.peekvalue(3) frame.dropvalues(dropvalues) return code.fastcall_4(self.space, self, f_3, f_2, f_1, f_0) elif (nargs | Code.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) return self._flat_pycall(code, nargs, frame, dropvalues) elif fast_natural_arity & Code.FLATPYCALL: natural_arity = fast_natural_arity & 0xff if natural_arity > nargs >= natural_arity - len(self.defs_w): assert isinstance(code, PyCode) return self._flat_pycall_defaults(code, nargs, frame, natural_arity - nargs, dropvalues) elif fast_natural_arity == Code.PASSTHROUGHARGS1 and nargs >= 1: assert isinstance(code, gateway.BuiltinCodePassThroughArguments1) w_obj = frame.peekvalue(nargs-1) args = frame.make_arguments(nargs-1) frame.dropvalues(dropvalues) return code.funcrun_obj(self, w_obj, args) args = frame.make_arguments(nargs, methodcall=methodcall) frame.dropvalues(dropvalues) > return self.call_args(args) interpreter\function.py:190: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('static const int FOOBAR;'), W_BytesObject('test_constant'), W_BytesObject('#define FOOBAR (-6912)')]) def call_args(self, args): # delegate activation to code > w_res = self.getcode().funcrun(self, args) interpreter\function.py:68: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('static const int FOOBAR;'), W_BytesObject('test_constant'), W_BytesObject('#define FOOBAR (-6912)')]) def funcrun(self, func, args): > return BuiltinCode.funcrun_obj(self, func, None, args) interpreter\gateway.py:781: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('static const int FOOBAR;'), W_BytesObject('test_constant'), W_BytesObject('#define FOOBAR (-6912)')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: w_result = activation._run(space, scope_w) except DescrMismatch: if w_obj is not None: args = args.prepend(w_obj) return self._type_unwrap_mismatch(space, args) except Exception as e: > self.handle_exception(space, e) interpreter\gateway.py:795: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> space = StdObjSpace e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def handle_exception(self, space, e): try: if not we_are_translated(): raise raise e except OperationError: raise except Exception as e: # general fall-back from pypy.interpreter import error > raise error.get_converted_unexpected_exception(space, e) interpreter\gateway.py:819: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('static const int FOOBAR;'), W_BytesObject('test_constant'), W_BytesObject('#define FOOBAR (-6912)')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: > w_result = activation._run(space, scope_w) interpreter\gateway.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinActivation_UwS_ObjSpace_text_text_text_W_Root_W_Root_W_Root_int_W_Root object at 0x000002791c13af38> space = StdObjSpace scope_w = [W_BytesObject('static const int FOOBAR;'), W_BytesObject('test_constant'), W_BytesObject('#define FOOBAR (-6912)'), None, None, None, ...] def _run(self, space, scope_w): > return self.behavior(space, space.text_w(scope_w[0]), space.text_w(scope_w[1]), space.text_w(scope_w[2]), scope_w[3], scope_w[4], scope_w[5], space.gateway_int_w(scope_w[6]), scope_w[7]) <3152-codegen d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\rpython\tool\sourcetools.py:200>:3: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace, cdef = 'static const int FOOBAR;' module_name = '_CFFI_test_constant', source = '#define FOOBAR (-6912)' w_includes = None, w_extra_source = None, w_min_version = None, packed = 0 w_extra_compile_args = None @unwrap_spec(cdef='text', module_name='text', source='text', packed=int) def prepare(space, cdef, module_name, source, w_includes=None, w_extra_source=None, w_min_version=None, packed=False, w_extra_compile_args=None): try: import cffi from cffi import FFI # <== the system one, which from cffi import recompiler # needs to be at least cffi 1.0.4 from cffi import ffiplatform except ImportError: pytest.skip("system cffi module not found or older than 1.0.0") if w_min_version is None: min_version = (1, 4, 0) else: min_version = tuple(space.unwrap(w_min_version)) if cffi.__version_info__ < min_version: pytest.skip("system cffi module needs to be at least %s, got %s" % ( min_version, cffi.__version_info__)) space.appexec([], """(): import _cffi_backend # force it to be initialized """) includes = [] if w_includes: includes += space.unpackiterable(w_includes) assert module_name.startswith('test_') module_name = '_CFFI_' + module_name rdir = udir.ensure('recompiler', dir=1) rdir.join('Python.h').write( '#include <stdio.h>\n' '#define PYPY_VERSION XX\n' '#define PyMODINIT_FUNC /*exported*/ void\n' ) path = module_name.replace('.', os.sep) if '.' in module_name: subrdir = rdir.join(module_name[:module_name.index('.')]) os.mkdir(str(subrdir)) else: subrdir = rdir c_file = str(rdir.join('%s.c' % path)) ffi = FFI() for include_ffi_object in includes: ffi.include(include_ffi_object._test_recompiler_source_ffi) ffi.cdef(cdef, packed=packed) ffi.set_source(module_name, source) ffi.emit_c_code(c_file) base_module_name = module_name.split('.')[-1] sources = [] if w_extra_source is not None: sources.append(space.str_w(w_extra_source)) kwargs = {} # GCC 14 promotes -Wincompatible-pointer-types from a warning to an error # by default, which breaks cffi's intentionally-mismatched field-check # probes (e.g. test_misdeclared_field_1). Keep it a warning so the module # compiles and cffi's runtime checks can run. extra = ['-Wno-error=incompatible-pointer-types'] if w_extra_compile_args is not None: extra = extra + space.unwrap(w_extra_compile_args) kwargs['extra_compile_args'] = extra ext = ffiplatform.get_extension(c_file, module_name, include_dirs=[str(rdir)], export_symbols=['_cffi_pypyinit_' + base_module_name], sources=sources, **kwargs) > ffiplatform.compile(str(rdir), ext) module\_cffi_backend\test\test_recompiler.py:86: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x000002792125d1a0> compiler_verbose = 0, debug = None def compile(tmpdir, ext, compiler_verbose=0, debug=None): """Compile a C extension module using distutils.""" saved_environ = os.environ.copy() try: > outputfilename = _build(tmpdir, ext, compiler_verbose, debug) d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x000002792125d1a0> compiler_verbose = 0, debug = 0 def _build(tmpdir, ext, compiler_verbose=0, debug=None): # XXX compact but horrible :-( from cffi._shimmed_dist_utils import Distribution, CompileError, LinkError, set_threshold, set_verbosity dist = Distribution({'ext_modules': [ext]}) dist.parse_config_files() options = dist.get_option_dict('build_ext') if debug is None: debug = sys.flags.debug options['debug'] = ('ffiplatform', debug) options['force'] = ('ffiplatform', True) options['build_lib'] = ('ffiplatform', tmpdir) options['build_temp'] = ('ffiplatform', tmpdir) # try: old_level = set_threshold(0) or 0 try: set_verbosity(compiler_verbose) dist.run_command('build_ext') cmd_obj = dist.get_command_obj('build_ext') [soname] = cmd_obj.get_outputs() finally: set_threshold(old_level) except (CompileError, LinkError) as e: > raise VerificationError('%s: %s' % (e.__class__.__name__, e)) E VerificationError: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2 d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:54: VerificationError ---------------------------- Captured stdout call ----------------------------- generating d:\systemtemp\pytest\usession-main-595\recompiler\_CFFI_test_constant.c ---------------------------- Captured stderr call ----------------------------- cl : Command line error D8021 : invalid numeric argument '/Wno-error=incompatible-pointer-types' _____________ AppTestRecompiler.test_check_value_of_static_const ______________ self = <CallInfo when='call' exception: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2> func = <function <lambda> at 0x00000279250285c0>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ..\_pytest\runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ..\_pytest\runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_check_value_of_static_const'>, ...ticall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_check_value_of_static_const'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ..\_pytest\vendored_packages\pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00000279153616a8> hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_check_value_of_static_const'>, ...ticall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_check_value_of_static_const'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ..\_pytest\vendored_packages\pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_check_value_of_static_const'>, ...ticall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_check_value_of_static_const'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ..\_pytest\vendored_packages\pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_check_value_of_static_const'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791a7240c0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...atic_const'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027929e87a60> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027929e87a60> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...atic_const'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_check_value_of_static_const'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791a724048> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...atic_const'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027929e87a20> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027929e87a20> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...atic_const'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_check_value_of_static_const'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ..\_pytest\vendored_packages\pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_check_value_of_static_const'> def pytest_runtest_call(item): try: > item.runtest() ..\_pytest\runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_check_value_of_static_const'> def runtest(self): target = self.obj if self.config.option.runappdirect: return target() space = target.im_self.space filename = self._getdynfilename(target) func = app2interp_temp(target.im_func, filename=filename) w_instance = self.parent.w_instance > self.execute_appex(space, func, space, w_instance) tool\pytest\apptest.py:89: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_check_value_of_static_const'>, space = StdObjSpace target = <function test_check_value_of_static_const at 0x0000027925028638> args = (StdObjSpace, <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>) def execute_appex(self, space, target, *args): self.space = space try: > target(*args) tool\pytest\apptest.py:30: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) w_func = <Function test_check_value_of_static_const> args = <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8> def appcaller(space, *args_w): if not isinstance(space, ObjSpace): raise TypeError("first argument must be a space instance.") # the last argument can be an Arguments w_func = self.wget(space, name) if not args_w: return space.call_function(w_func) else: args = args_w[-1] assert args is not None if not isinstance(args, Arguments): > return space.call_function(w_func, *args_w) interpreter\gateway.py:1227: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <Function test_check_value_of_static_const> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) nargs = 1, Function = <class 'pypy.interpreter.function.Function'> Method = <class 'pypy.interpreter.function.Method'> def call_function(self, w_func, *args_w): nargs = len(args_w) # used for pruning funccall versions if not self.config.objspace.disable_call_speedhacks and nargs < 5: # start of hack for performance from pypy.interpreter.function import Function, Method if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: if nargs < 4: func = w_func.w_function if isinstance(func, Function): return func.funccall(w_inst, *args_w) elif args_w and ( self.abstract_isinstance_w(args_w[0], w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): > return w_func.funccall(*args_w) interpreter\baseobjspace.py:1210: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <Function test_check_value_of_static_const> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) gateway = <module 'pypy.interpreter.gateway' from 'd:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\interpreter\\gateway.pyc'> PyCode = <class 'pypy.interpreter.pycode.PyCode'> code = <code object test_check_value_of_static_const, file '[d:\pypy_stuff\buildbot64...n-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:276]', line 1> def funccall(self, *args_w): # speed hack from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit nargs = len(args_w) fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, args_w[0]) elif nargs == 2: assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, args_w[0], args_w[1]) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) return code.fastcall_3(self.space, self, args_w[0], args_w[1], args_w[2]) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) return code.fastcall_4(self.space, self, args_w[0], args_w[1], args_w[2], args_w[3]) elif (nargs | PyCode.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) if nargs < 5: new_frame = self.space.createframe(code, self.w_func_globals, self) for i in funccallunrolling: if i < nargs: new_frame.locals_cells_stack_w[i] = args_w[i] > return new_frame.run() interpreter\function.py:118: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_check_va...uild\pypy\module\_cffi_backend\test\test_recompiler.py:276]', line 1> at line 5 def run(self): """Start this frame's execution.""" if self.getcode().co_flags & pycode.CO_GENERATOR: from pypy.interpreter.generator import GeneratorIterator return GeneratorIterator(self) else: > return self.execute_frame() interpreter\pyframe.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_check_va...uild\pypy\module\_cffi_backend\test\test_recompiler.py:276]', line 1> at line 5 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, executioncontext) except OperationError: raise except Exception as e: # general fall-back > raise self._convert_unexpected_exception(e) interpreter\pyframe.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_check_va...uild\pypy\module\_cffi_backend\test\test_recompiler.py:276]', line 1> at line 5 e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def _convert_unexpected_exception(self, e): from pypy.interpreter import error > operr = error.get_converted_unexpected_exception(self.space, e) interpreter\pyframe.py:943: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_check_va...uild\pypy\module\_cffi_backend\test\test_recompiler.py:276]', line 1> at line 5 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, > executioncontext) interpreter\pyframe.py:286: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_check_va...uild\pypy\module\_cffi_backend\test\test_recompiler.py:276]', line 1> at line 5 pycode = <code object test_check_value_of_static_const, file '[d:\pypy_stuff\buildbot64...n-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:276]', line 1> next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def dispatch(self, pycode, next_instr, ec): # For the sequel, force 'next_instr' to be unsigned for performance next_instr = r_uint(next_instr) co_code = pycode.co_code try: while True: > next_instr = self.handle_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:64: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_check_va...uild\pypy\module\_cffi_backend\test\test_recompiler.py:276]', line 1> at line 5 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00t\x01\x00|\x01\x00j\x02\x00t\...00d\x00\x00S\xcc\x1b\x00t\x04\x00|\x03\x00j\x05\x00\x83\x01\x00d\x05\x00k\x02\x00sQ\x00t\x06\x00\x82\x01\x00d\x00\x00S' next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def handle_bytecode(self, co_code, next_instr, ec): try: > next_instr = self.dispatch_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:71: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_check_va...uild\pypy\module\_cffi_backend\test\test_recompiler.py:276]', line 1> at line 5 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00t\x01\x00|\x01\x00j\x02\x00t\...00d\x00\x00S\xcc\x1b\x00t\x04\x00|\x03\x00j\x05\x00\x83\x01\x00d\x05\x00k\x02\x00sQ\x00t\x06\x00\x82\x01\x00d\x00\x00S' next_instr = 18L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> @jit.unroll_safe def dispatch_bytecode(self, co_code, next_instr, ec): while True: self.last_instr = intmask(next_instr) if jit.we_are_jitted(): if self.debugdata: ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) else: # Only reload next_instr from last_instr when something that # can modify it actually ran (trace function or action # dispatcher). In the common case (no trace, positive ticker) # next_instr is unchanged and the round-trip is skipped. _d = self.debugdata if ec.space.reverse_debugging or ( _d is not None and _d.w_f_trace is not None) or ( not we_are_translated() and 'bytecode_only_trace' in ec.__dict__): ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) actionflag = ec.space.actionflag if actionflag.decrement_ticker(TICK_COUNTER_STEP) < 0: actionflag.action_dispatcher(ec, self) next_instr = r_uint(self.last_instr) opcode = ord(co_code[next_instr]) next_instr += 1 if opcode >= HAVE_ARGUMENT: lo = ord(co_code[next_instr]) hi = ord(co_code[next_instr+1]) next_instr += 2 oparg = (hi * 256) | lo else: oparg = 0 # note: the structure of the code here is such that it makes # (after translation) a big "if/elif" chain, which is then # turned into a switch(). while opcode == opcodedesc.EXTENDED_ARG.index: opcode = ord(co_code[next_instr]) if opcode < HAVE_ARGUMENT: raise BytecodeCorruption lo = ord(co_code[next_instr+1]) hi = ord(co_code[next_instr+2]) next_instr += 3 oparg = (oparg * 65536) | (hi * 256) | lo if opcode == opcodedesc.RETURN_VALUE.index: if not self.blockstack_non_empty(): self.frame_finished_execution = True # for generators raise Return w_returnvalue = self.popvalue() block = self.unrollstack(SReturnValue.kind) if block is None: self.pushvalue(w_returnvalue) raise Return else: unroller = SReturnValue(w_returnvalue) next_instr = block.handle(self, unroller) return next_instr # now inside a 'finally' block elif opcode == opcodedesc.END_FINALLY.index: unroller = self.end_finally() if isinstance(unroller, SuspendedUnroller): # go on unrolling the stack block = self.unrollstack(unroller.kind) if block is None: w_result = unroller.nomoreblocks() self.pushvalue(w_result) raise Return else: next_instr = block.handle(self, unroller) return next_instr elif opcode == opcodedesc.JUMP_ABSOLUTE.index: return self.jump_absolute(oparg, ec) elif opcode == opcodedesc.BREAK_LOOP.index: next_instr = self.BREAK_LOOP(oparg, next_instr) elif opcode == opcodedesc.CONTINUE_LOOP.index: return self.CONTINUE_LOOP(oparg, next_instr) elif opcode == opcodedesc.FOR_ITER.index: next_instr = self.FOR_ITER(oparg, next_instr) elif opcode == opcodedesc.JUMP_FORWARD.index: next_instr = self.JUMP_FORWARD(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_FALSE_OR_POP.index: next_instr = self.JUMP_IF_FALSE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_NOT_DEBUG.index: next_instr = self.JUMP_IF_NOT_DEBUG(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_TRUE_OR_POP.index: next_instr = self.JUMP_IF_TRUE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_FALSE.index: next_instr = self.POP_JUMP_IF_FALSE(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_TRUE.index: next_instr = self.POP_JUMP_IF_TRUE(oparg, next_instr) elif opcode == opcodedesc.BINARY_ADD.index: self.BINARY_ADD(oparg, next_instr) elif opcode == opcodedesc.BINARY_AND.index: self.BINARY_AND(oparg, next_instr) elif opcode == opcodedesc.BINARY_DIVIDE.index: self.BINARY_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_FLOOR_DIVIDE.index: self.BINARY_FLOOR_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_LSHIFT.index: self.BINARY_LSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_MODULO.index: self.BINARY_MODULO(oparg, next_instr) elif opcode == opcodedesc.BINARY_MULTIPLY.index: self.BINARY_MULTIPLY(oparg, next_instr) elif opcode == opcodedesc.BINARY_OR.index: self.BINARY_OR(oparg, next_instr) elif opcode == opcodedesc.BINARY_POWER.index: self.BINARY_POWER(oparg, next_instr) elif opcode == opcodedesc.BINARY_RSHIFT.index: self.BINARY_RSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBSCR.index: self.BINARY_SUBSCR(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBTRACT.index: self.BINARY_SUBTRACT(oparg, next_instr) elif opcode == opcodedesc.BINARY_TRUE_DIVIDE.index: self.BINARY_TRUE_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_XOR.index: self.BINARY_XOR(oparg, next_instr) elif opcode == opcodedesc.BUILD_CLASS.index: self.BUILD_CLASS(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST.index: self.BUILD_LIST(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST_FROM_ARG.index: self.BUILD_LIST_FROM_ARG(oparg, next_instr) elif opcode == opcodedesc.BUILD_MAP.index: self.BUILD_MAP(oparg, next_instr) elif opcode == opcodedesc.BUILD_SET.index: self.BUILD_SET(oparg, next_instr) elif opcode == opcodedesc.BUILD_SLICE.index: self.BUILD_SLICE(oparg, next_instr) elif opcode == opcodedesc.BUILD_TUPLE.index: self.BUILD_TUPLE(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION.index: self.CALL_FUNCTION(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_KW.index: self.CALL_FUNCTION_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR.index: self.CALL_FUNCTION_VAR(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR_KW.index: self.CALL_FUNCTION_VAR_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_METHOD.index: > self.CALL_METHOD(oparg, next_instr) interpreter\pyopcode.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ f = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_check_va...uild\pypy\module\_cffi_backend\test\test_recompiler.py:276]', line 1> at line 5 oparg = 3, ignored = (18L,), n_args = 3, n_kwargs = 0, w_self = None @jit.unroll_safe def CALL_METHOD(f, oparg, *ignored): # opargs contains the arg, and kwarg count, excluding the implicit 'self' n_args = oparg & 0xff n_kwargs = (oparg >> 8) & 0xff w_self = f.peekvalue_maybe_none(n_args + (2 * n_kwargs)) n = n_args + (w_self is not None) if not n_kwargs: w_callable = f.peekvalue(n_args + (2 * n_kwargs) + 1) w_result = f.space.call_valuestack( > w_callable, n, f, methodcall=w_self is not None, dropvalues=n_args + 2) objspace\std\callmethod.py:96: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_check_va...uild\pypy\module\_cffi_backend\test\test_recompiler.py:276]', line 1> at line 5 dropvalues = 5, methodcall = False def call_valuestack(self, w_func, nargs, frame, dropvalues, methodcall=False): # methodcall is only used for better error messages in argument.py from pypy.interpreter.function import Function, Method, is_builtin_code if frame.get_is_being_profiled() and is_builtin_code(w_func): # XXX: this code is copied&pasted :-( from the slow path below # call_valuestack(). args = frame.make_arguments(nargs) frame.dropvalues(dropvalues) return self.call_args_and_c_profile(frame, w_func, args) if not self.config.objspace.disable_call_speedhacks: # start of hack for performance if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: w_func = w_func.w_function # reuse callable stack place for w_inst frame.settopvalue(w_inst, nargs) nargs += 1 methodcall = True elif nargs > 0 and ( self.abstract_isinstance_w(frame.peekvalue(nargs-1), # :-( w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): return w_func.funccall_valuestack( > nargs, frame, methodcall=methodcall, dropvalues=dropvalues) interpreter\baseobjspace.py:1243: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_check_va...uild\pypy\module\_cffi_backend\test\test_recompiler.py:276]', line 1> at line 5 dropvalues = 5, methodcall = False def funccall_valuestack(self, nargs, frame, dropvalues, methodcall=False): # speed hack # methodcall is only for better error messages from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit # if (jit.we_are_jitted() and code is self.space._code_of_sys_exc_info and nargs == 0): frame.dropvalues(dropvalues) from pypy.module.sys.vm import exc_info_direct return exc_info_direct(self.space, frame) # fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: f_0 = frame.peekvalue(0) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, f_0) elif nargs == 2: f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, f_1, f_0) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) frame.dropvalues(dropvalues) return code.fastcall_3(self.space, self, f_2, f_1, f_0) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) f_3 = frame.peekvalue(3) frame.dropvalues(dropvalues) return code.fastcall_4(self.space, self, f_3, f_2, f_1, f_0) elif (nargs | Code.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) return self._flat_pycall(code, nargs, frame, dropvalues) elif fast_natural_arity & Code.FLATPYCALL: natural_arity = fast_natural_arity & 0xff if natural_arity > nargs >= natural_arity - len(self.defs_w): assert isinstance(code, PyCode) return self._flat_pycall_defaults(code, nargs, frame, natural_arity - nargs, dropvalues) elif fast_natural_arity == Code.PASSTHROUGHARGS1 and nargs >= 1: assert isinstance(code, gateway.BuiltinCodePassThroughArguments1) w_obj = frame.peekvalue(nargs-1) args = frame.make_arguments(nargs-1) frame.dropvalues(dropvalues) return code.funcrun_obj(self, w_obj, args) args = frame.make_arguments(nargs, methodcall=methodcall) frame.dropvalues(dropvalues) > return self.call_args(args) interpreter\function.py:190: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('static const int FOOBAR = 042;'), W_BytesObject('test_check_value_of_static_const'), W_BytesObject('#define FOOBAR (-6912)')]) def call_args(self, args): # delegate activation to code > w_res = self.getcode().funcrun(self, args) interpreter\function.py:68: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('static const int FOOBAR = 042;'), W_BytesObject('test_check_value_of_static_const'), W_BytesObject('#define FOOBAR (-6912)')]) def funcrun(self, func, args): > return BuiltinCode.funcrun_obj(self, func, None, args) interpreter\gateway.py:781: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('static const int FOOBAR = 042;'), W_BytesObject('test_check_value_of_static_const'), W_BytesObject('#define FOOBAR (-6912)')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: w_result = activation._run(space, scope_w) except DescrMismatch: if w_obj is not None: args = args.prepend(w_obj) return self._type_unwrap_mismatch(space, args) except Exception as e: > self.handle_exception(space, e) interpreter\gateway.py:795: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> space = StdObjSpace e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def handle_exception(self, space, e): try: if not we_are_translated(): raise raise e except OperationError: raise except Exception as e: # general fall-back from pypy.interpreter import error > raise error.get_converted_unexpected_exception(space, e) interpreter\gateway.py:819: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('static const int FOOBAR = 042;'), W_BytesObject('test_check_value_of_static_const'), W_BytesObject('#define FOOBAR (-6912)')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: > w_result = activation._run(space, scope_w) interpreter\gateway.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinActivation_UwS_ObjSpace_text_text_text_W_Root_W_Root_W_Root_int_W_Root object at 0x000002791c13af38> space = StdObjSpace scope_w = [W_BytesObject('static const int FOOBAR = 042;'), W_BytesObject('test_check_value_of_static_const'), W_BytesObject('#define FOOBAR (-6912)'), None, None, None, ...] def _run(self, space, scope_w): > return self.behavior(space, space.text_w(scope_w[0]), space.text_w(scope_w[1]), space.text_w(scope_w[2]), scope_w[3], scope_w[4], scope_w[5], space.gateway_int_w(scope_w[6]), scope_w[7]) <3152-codegen d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\rpython\tool\sourcetools.py:200>:3: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace, cdef = 'static const int FOOBAR = 042;' module_name = '_CFFI_test_check_value_of_static_const' source = '#define FOOBAR (-6912)', w_includes = None, w_extra_source = None w_min_version = None, packed = 0, w_extra_compile_args = None @unwrap_spec(cdef='text', module_name='text', source='text', packed=int) def prepare(space, cdef, module_name, source, w_includes=None, w_extra_source=None, w_min_version=None, packed=False, w_extra_compile_args=None): try: import cffi from cffi import FFI # <== the system one, which from cffi import recompiler # needs to be at least cffi 1.0.4 from cffi import ffiplatform except ImportError: pytest.skip("system cffi module not found or older than 1.0.0") if w_min_version is None: min_version = (1, 4, 0) else: min_version = tuple(space.unwrap(w_min_version)) if cffi.__version_info__ < min_version: pytest.skip("system cffi module needs to be at least %s, got %s" % ( min_version, cffi.__version_info__)) space.appexec([], """(): import _cffi_backend # force it to be initialized """) includes = [] if w_includes: includes += space.unpackiterable(w_includes) assert module_name.startswith('test_') module_name = '_CFFI_' + module_name rdir = udir.ensure('recompiler', dir=1) rdir.join('Python.h').write( '#include <stdio.h>\n' '#define PYPY_VERSION XX\n' '#define PyMODINIT_FUNC /*exported*/ void\n' ) path = module_name.replace('.', os.sep) if '.' in module_name: subrdir = rdir.join(module_name[:module_name.index('.')]) os.mkdir(str(subrdir)) else: subrdir = rdir c_file = str(rdir.join('%s.c' % path)) ffi = FFI() for include_ffi_object in includes: ffi.include(include_ffi_object._test_recompiler_source_ffi) ffi.cdef(cdef, packed=packed) ffi.set_source(module_name, source) ffi.emit_c_code(c_file) base_module_name = module_name.split('.')[-1] sources = [] if w_extra_source is not None: sources.append(space.str_w(w_extra_source)) kwargs = {} # GCC 14 promotes -Wincompatible-pointer-types from a warning to an error # by default, which breaks cffi's intentionally-mismatched field-check # probes (e.g. test_misdeclared_field_1). Keep it a warning so the module # compiles and cffi's runtime checks can run. extra = ['-Wno-error=incompatible-pointer-types'] if w_extra_compile_args is not None: extra = extra + space.unwrap(w_extra_compile_args) kwargs['extra_compile_args'] = extra ext = ffiplatform.get_extension(c_file, module_name, include_dirs=[str(rdir)], export_symbols=['_cffi_pypyinit_' + base_module_name], sources=sources, **kwargs) > ffiplatform.compile(str(rdir), ext) module\_cffi_backend\test\test_recompiler.py:86: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x0000027929ebe5e0> compiler_verbose = 0, debug = None def compile(tmpdir, ext, compiler_verbose=0, debug=None): """Compile a C extension module using distutils.""" saved_environ = os.environ.copy() try: > outputfilename = _build(tmpdir, ext, compiler_verbose, debug) d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x0000027929ebe5e0> compiler_verbose = 0, debug = 0 def _build(tmpdir, ext, compiler_verbose=0, debug=None): # XXX compact but horrible :-( from cffi._shimmed_dist_utils import Distribution, CompileError, LinkError, set_threshold, set_verbosity dist = Distribution({'ext_modules': [ext]}) dist.parse_config_files() options = dist.get_option_dict('build_ext') if debug is None: debug = sys.flags.debug options['debug'] = ('ffiplatform', debug) options['force'] = ('ffiplatform', True) options['build_lib'] = ('ffiplatform', tmpdir) options['build_temp'] = ('ffiplatform', tmpdir) # try: old_level = set_threshold(0) or 0 try: set_verbosity(compiler_verbose) dist.run_command('build_ext') cmd_obj = dist.get_command_obj('build_ext') [soname] = cmd_obj.get_outputs() finally: set_threshold(old_level) except (CompileError, LinkError) as e: > raise VerificationError('%s: %s' % (e.__class__.__name__, e)) E VerificationError: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2 d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:54: VerificationError ---------------------------- Captured stdout call ----------------------------- generating d:\systemtemp\pytest\usession-main-595\recompiler\_CFFI_test_check_value_of_static_const.c ---------------------------- Captured stderr call ----------------------------- cl : Command line error D8021 : invalid numeric argument '/Wno-error=incompatible-pointer-types' ___________________ AppTestRecompiler.test_constant_nonint ____________________ self = <CallInfo when='call' exception: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2> func = <function <lambda> at 0x0000027921609f88>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ..\_pytest\runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ..\_pytest\runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_constant_nonint'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_constant_nonint'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ..\_pytest\vendored_packages\pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00000279153616a8> hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_constant_nonint'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_constant_nonint'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ..\_pytest\vendored_packages\pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_constant_nonint'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_constant_nonint'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ..\_pytest\vendored_packages\pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_constant_nonint'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00000279276204a8> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...ant_nonint'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027925bbec60> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027925bbec60> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...ant_nonint'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_constant_nonint'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00000279276203b8> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...ant_nonint'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027925bbec20> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027925bbec20> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...ant_nonint'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_constant_nonint'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ..\_pytest\vendored_packages\pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_constant_nonint'> def pytest_runtest_call(item): try: > item.runtest() ..\_pytest\runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_constant_nonint'> def runtest(self): target = self.obj if self.config.option.runappdirect: return target() space = target.im_self.space filename = self._getdynfilename(target) func = app2interp_temp(target.im_func, filename=filename) w_instance = self.parent.w_instance > self.execute_appex(space, func, space, w_instance) tool\pytest\apptest.py:89: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_constant_nonint'>, space = StdObjSpace target = <function test_constant_nonint at 0x000002791bb9a188> args = (StdObjSpace, <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>) def execute_appex(self, space, target, *args): self.space = space try: > target(*args) tool\pytest\apptest.py:30: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) w_func = <Function test_constant_nonint> args = <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8> def appcaller(space, *args_w): if not isinstance(space, ObjSpace): raise TypeError("first argument must be a space instance.") # the last argument can be an Arguments w_func = self.wget(space, name) if not args_w: return space.call_function(w_func) else: args = args_w[-1] assert args is not None if not isinstance(args, Arguments): > return space.call_function(w_func, *args_w) interpreter\gateway.py:1227: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <Function test_constant_nonint> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) nargs = 1, Function = <class 'pypy.interpreter.function.Function'> Method = <class 'pypy.interpreter.function.Method'> def call_function(self, w_func, *args_w): nargs = len(args_w) # used for pruning funccall versions if not self.config.objspace.disable_call_speedhacks and nargs < 5: # start of hack for performance from pypy.interpreter.function import Function, Method if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: if nargs < 4: func = w_func.w_function if isinstance(func, Function): return func.funccall(w_inst, *args_w) elif args_w and ( self.abstract_isinstance_w(args_w[0], w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): > return w_func.funccall(*args_w) interpreter\baseobjspace.py:1210: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <Function test_constant_nonint> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) gateway = <module 'pypy.interpreter.gateway' from 'd:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\interpreter\\gateway.pyc'> PyCode = <class 'pypy.interpreter.pycode.PyCode'> code = <code object test_constant_nonint, file '[d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:285]', line 1> def funccall(self, *args_w): # speed hack from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit nargs = len(args_w) fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, args_w[0]) elif nargs == 2: assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, args_w[0], args_w[1]) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) return code.fastcall_3(self.space, self, args_w[0], args_w[1], args_w[2]) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) return code.fastcall_4(self.space, self, args_w[0], args_w[1], args_w[2], args_w[3]) elif (nargs | PyCode.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) if nargs < 5: new_frame = self.space.createframe(code, self.w_func_globals, self) for i in funccallunrolling: if i < nargs: new_frame.locals_cells_stack_w[i] = args_w[i] > return new_frame.run() interpreter\function.py:118: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_constant...uild\pypy\module\_cffi_backend\test\test_recompiler.py:285]', line 1> at line 5 def run(self): """Start this frame's execution.""" if self.getcode().co_flags & pycode.CO_GENERATOR: from pypy.interpreter.generator import GeneratorIterator return GeneratorIterator(self) else: > return self.execute_frame() interpreter\pyframe.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_constant...uild\pypy\module\_cffi_backend\test\test_recompiler.py:285]', line 1> at line 5 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, executioncontext) except OperationError: raise except Exception as e: # general fall-back > raise self._convert_unexpected_exception(e) interpreter\pyframe.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_constant...uild\pypy\module\_cffi_backend\test\test_recompiler.py:285]', line 1> at line 5 e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def _convert_unexpected_exception(self, e): from pypy.interpreter import error > operr = error.get_converted_unexpected_exception(self.space, e) interpreter\pyframe.py:943: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_constant...uild\pypy\module\_cffi_backend\test\test_recompiler.py:285]', line 1> at line 5 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, > executioncontext) interpreter\pyframe.py:286: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_constant...uild\pypy\module\_cffi_backend\test\test_recompiler.py:285]', line 1> at line 5 pycode = <code object test_constant_nonint, file '[d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:285]', line 1> next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def dispatch(self, pycode, next_instr, ec): # For the sequel, force 'next_instr' to be unsigned for performance next_instr = r_uint(next_instr) co_code = pycode.co_code try: while True: > next_instr = self.handle_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:64: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_constant...uild\pypy\module\_cffi_backend\test\test_recompiler.py:285]', line 1> at line 5 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00\xcc\x15\x00|\x02\x00j\x01\x00d\x04\x00k\x02\x00s3\x00t\x02\x00\x82\x01\x00t\x03\x00t\x04\x00d\x05\x00\x83\x02\x00\x01d\x00\x00S' next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def handle_bytecode(self, co_code, next_instr, ec): try: > next_instr = self.dispatch_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:71: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_constant...uild\pypy\module\_cffi_backend\test\test_recompiler.py:285]', line 1> at line 5 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00\xcc\x15\x00|\x02\x00j\x01\x00d\x04\x00k\x02\x00s3\x00t\x02\x00\x82\x01\x00t\x03\x00t\x04\x00d\x05\x00\x83\x02\x00\x01d\x00\x00S' next_instr = 18L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> @jit.unroll_safe def dispatch_bytecode(self, co_code, next_instr, ec): while True: self.last_instr = intmask(next_instr) if jit.we_are_jitted(): if self.debugdata: ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) else: # Only reload next_instr from last_instr when something that # can modify it actually ran (trace function or action # dispatcher). In the common case (no trace, positive ticker) # next_instr is unchanged and the round-trip is skipped. _d = self.debugdata if ec.space.reverse_debugging or ( _d is not None and _d.w_f_trace is not None) or ( not we_are_translated() and 'bytecode_only_trace' in ec.__dict__): ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) actionflag = ec.space.actionflag if actionflag.decrement_ticker(TICK_COUNTER_STEP) < 0: actionflag.action_dispatcher(ec, self) next_instr = r_uint(self.last_instr) opcode = ord(co_code[next_instr]) next_instr += 1 if opcode >= HAVE_ARGUMENT: lo = ord(co_code[next_instr]) hi = ord(co_code[next_instr+1]) next_instr += 2 oparg = (hi * 256) | lo else: oparg = 0 # note: the structure of the code here is such that it makes # (after translation) a big "if/elif" chain, which is then # turned into a switch(). while opcode == opcodedesc.EXTENDED_ARG.index: opcode = ord(co_code[next_instr]) if opcode < HAVE_ARGUMENT: raise BytecodeCorruption lo = ord(co_code[next_instr+1]) hi = ord(co_code[next_instr+2]) next_instr += 3 oparg = (oparg * 65536) | (hi * 256) | lo if opcode == opcodedesc.RETURN_VALUE.index: if not self.blockstack_non_empty(): self.frame_finished_execution = True # for generators raise Return w_returnvalue = self.popvalue() block = self.unrollstack(SReturnValue.kind) if block is None: self.pushvalue(w_returnvalue) raise Return else: unroller = SReturnValue(w_returnvalue) next_instr = block.handle(self, unroller) return next_instr # now inside a 'finally' block elif opcode == opcodedesc.END_FINALLY.index: unroller = self.end_finally() if isinstance(unroller, SuspendedUnroller): # go on unrolling the stack block = self.unrollstack(unroller.kind) if block is None: w_result = unroller.nomoreblocks() self.pushvalue(w_result) raise Return else: next_instr = block.handle(self, unroller) return next_instr elif opcode == opcodedesc.JUMP_ABSOLUTE.index: return self.jump_absolute(oparg, ec) elif opcode == opcodedesc.BREAK_LOOP.index: next_instr = self.BREAK_LOOP(oparg, next_instr) elif opcode == opcodedesc.CONTINUE_LOOP.index: return self.CONTINUE_LOOP(oparg, next_instr) elif opcode == opcodedesc.FOR_ITER.index: next_instr = self.FOR_ITER(oparg, next_instr) elif opcode == opcodedesc.JUMP_FORWARD.index: next_instr = self.JUMP_FORWARD(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_FALSE_OR_POP.index: next_instr = self.JUMP_IF_FALSE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_NOT_DEBUG.index: next_instr = self.JUMP_IF_NOT_DEBUG(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_TRUE_OR_POP.index: next_instr = self.JUMP_IF_TRUE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_FALSE.index: next_instr = self.POP_JUMP_IF_FALSE(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_TRUE.index: next_instr = self.POP_JUMP_IF_TRUE(oparg, next_instr) elif opcode == opcodedesc.BINARY_ADD.index: self.BINARY_ADD(oparg, next_instr) elif opcode == opcodedesc.BINARY_AND.index: self.BINARY_AND(oparg, next_instr) elif opcode == opcodedesc.BINARY_DIVIDE.index: self.BINARY_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_FLOOR_DIVIDE.index: self.BINARY_FLOOR_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_LSHIFT.index: self.BINARY_LSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_MODULO.index: self.BINARY_MODULO(oparg, next_instr) elif opcode == opcodedesc.BINARY_MULTIPLY.index: self.BINARY_MULTIPLY(oparg, next_instr) elif opcode == opcodedesc.BINARY_OR.index: self.BINARY_OR(oparg, next_instr) elif opcode == opcodedesc.BINARY_POWER.index: self.BINARY_POWER(oparg, next_instr) elif opcode == opcodedesc.BINARY_RSHIFT.index: self.BINARY_RSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBSCR.index: self.BINARY_SUBSCR(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBTRACT.index: self.BINARY_SUBTRACT(oparg, next_instr) elif opcode == opcodedesc.BINARY_TRUE_DIVIDE.index: self.BINARY_TRUE_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_XOR.index: self.BINARY_XOR(oparg, next_instr) elif opcode == opcodedesc.BUILD_CLASS.index: self.BUILD_CLASS(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST.index: self.BUILD_LIST(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST_FROM_ARG.index: self.BUILD_LIST_FROM_ARG(oparg, next_instr) elif opcode == opcodedesc.BUILD_MAP.index: self.BUILD_MAP(oparg, next_instr) elif opcode == opcodedesc.BUILD_SET.index: self.BUILD_SET(oparg, next_instr) elif opcode == opcodedesc.BUILD_SLICE.index: self.BUILD_SLICE(oparg, next_instr) elif opcode == opcodedesc.BUILD_TUPLE.index: self.BUILD_TUPLE(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION.index: self.CALL_FUNCTION(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_KW.index: self.CALL_FUNCTION_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR.index: self.CALL_FUNCTION_VAR(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR_KW.index: self.CALL_FUNCTION_VAR_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_METHOD.index: > self.CALL_METHOD(oparg, next_instr) interpreter\pyopcode.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ f = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_constant...uild\pypy\module\_cffi_backend\test\test_recompiler.py:285]', line 1> at line 5 oparg = 3, ignored = (18L,), n_args = 3, n_kwargs = 0, w_self = None @jit.unroll_safe def CALL_METHOD(f, oparg, *ignored): # opargs contains the arg, and kwarg count, excluding the implicit 'self' n_args = oparg & 0xff n_kwargs = (oparg >> 8) & 0xff w_self = f.peekvalue_maybe_none(n_args + (2 * n_kwargs)) n = n_args + (w_self is not None) if not n_kwargs: w_callable = f.peekvalue(n_args + (2 * n_kwargs) + 1) w_result = f.space.call_valuestack( > w_callable, n, f, methodcall=w_self is not None, dropvalues=n_args + 2) objspace\std\callmethod.py:96: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_constant...uild\pypy\module\_cffi_backend\test\test_recompiler.py:285]', line 1> at line 5 dropvalues = 5, methodcall = False def call_valuestack(self, w_func, nargs, frame, dropvalues, methodcall=False): # methodcall is only used for better error messages in argument.py from pypy.interpreter.function import Function, Method, is_builtin_code if frame.get_is_being_profiled() and is_builtin_code(w_func): # XXX: this code is copied&pasted :-( from the slow path below # call_valuestack(). args = frame.make_arguments(nargs) frame.dropvalues(dropvalues) return self.call_args_and_c_profile(frame, w_func, args) if not self.config.objspace.disable_call_speedhacks: # start of hack for performance if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: w_func = w_func.w_function # reuse callable stack place for w_inst frame.settopvalue(w_inst, nargs) nargs += 1 methodcall = True elif nargs > 0 and ( self.abstract_isinstance_w(frame.peekvalue(nargs-1), # :-( w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): return w_func.funccall_valuestack( > nargs, frame, methodcall=methodcall, dropvalues=dropvalues) interpreter\baseobjspace.py:1243: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_constant...uild\pypy\module\_cffi_backend\test\test_recompiler.py:285]', line 1> at line 5 dropvalues = 5, methodcall = False def funccall_valuestack(self, nargs, frame, dropvalues, methodcall=False): # speed hack # methodcall is only for better error messages from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit # if (jit.we_are_jitted() and code is self.space._code_of_sys_exc_info and nargs == 0): frame.dropvalues(dropvalues) from pypy.module.sys.vm import exc_info_direct return exc_info_direct(self.space, frame) # fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: f_0 = frame.peekvalue(0) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, f_0) elif nargs == 2: f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, f_1, f_0) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) frame.dropvalues(dropvalues) return code.fastcall_3(self.space, self, f_2, f_1, f_0) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) f_3 = frame.peekvalue(3) frame.dropvalues(dropvalues) return code.fastcall_4(self.space, self, f_3, f_2, f_1, f_0) elif (nargs | Code.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) return self._flat_pycall(code, nargs, frame, dropvalues) elif fast_natural_arity & Code.FLATPYCALL: natural_arity = fast_natural_arity & 0xff if natural_arity > nargs >= natural_arity - len(self.defs_w): assert isinstance(code, PyCode) return self._flat_pycall_defaults(code, nargs, frame, natural_arity - nargs, dropvalues) elif fast_natural_arity == Code.PASSTHROUGHARGS1 and nargs >= 1: assert isinstance(code, gateway.BuiltinCodePassThroughArguments1) w_obj = frame.peekvalue(nargs-1) args = frame.make_arguments(nargs-1) frame.dropvalues(dropvalues) return code.funcrun_obj(self, w_obj, args) args = frame.make_arguments(nargs, methodcall=methodcall) frame.dropvalues(dropvalues) > return self.call_args(args) interpreter\function.py:190: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('static const double FOOBAR;'), W_BytesObject('test_constant_nonint'), W_BytesObject('#define FOOBAR (-6912.5)')]) def call_args(self, args): # delegate activation to code > w_res = self.getcode().funcrun(self, args) interpreter\function.py:68: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('static const double FOOBAR;'), W_BytesObject('test_constant_nonint'), W_BytesObject('#define FOOBAR (-6912.5)')]) def funcrun(self, func, args): > return BuiltinCode.funcrun_obj(self, func, None, args) interpreter\gateway.py:781: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('static const double FOOBAR;'), W_BytesObject('test_constant_nonint'), W_BytesObject('#define FOOBAR (-6912.5)')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: w_result = activation._run(space, scope_w) except DescrMismatch: if w_obj is not None: args = args.prepend(w_obj) return self._type_unwrap_mismatch(space, args) except Exception as e: > self.handle_exception(space, e) interpreter\gateway.py:795: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> space = StdObjSpace e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def handle_exception(self, space, e): try: if not we_are_translated(): raise raise e except OperationError: raise except Exception as e: # general fall-back from pypy.interpreter import error > raise error.get_converted_unexpected_exception(space, e) interpreter\gateway.py:819: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('static const double FOOBAR;'), W_BytesObject('test_constant_nonint'), W_BytesObject('#define FOOBAR (-6912.5)')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: > w_result = activation._run(space, scope_w) interpreter\gateway.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinActivation_UwS_ObjSpace_text_text_text_W_Root_W_Root_W_Root_int_W_Root object at 0x000002791c13af38> space = StdObjSpace scope_w = [W_BytesObject('static const double FOOBAR;'), W_BytesObject('test_constant_nonint'), W_BytesObject('#define FOOBAR (-6912.5)'), None, None, None, ...] def _run(self, space, scope_w): > return self.behavior(space, space.text_w(scope_w[0]), space.text_w(scope_w[1]), space.text_w(scope_w[2]), scope_w[3], scope_w[4], scope_w[5], space.gateway_int_w(scope_w[6]), scope_w[7]) <3152-codegen d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\rpython\tool\sourcetools.py:200>:3: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace, cdef = 'static const double FOOBAR;' module_name = '_CFFI_test_constant_nonint', source = '#define FOOBAR (-6912.5)' w_includes = None, w_extra_source = None, w_min_version = None, packed = 0 w_extra_compile_args = None @unwrap_spec(cdef='text', module_name='text', source='text', packed=int) def prepare(space, cdef, module_name, source, w_includes=None, w_extra_source=None, w_min_version=None, packed=False, w_extra_compile_args=None): try: import cffi from cffi import FFI # <== the system one, which from cffi import recompiler # needs to be at least cffi 1.0.4 from cffi import ffiplatform except ImportError: pytest.skip("system cffi module not found or older than 1.0.0") if w_min_version is None: min_version = (1, 4, 0) else: min_version = tuple(space.unwrap(w_min_version)) if cffi.__version_info__ < min_version: pytest.skip("system cffi module needs to be at least %s, got %s" % ( min_version, cffi.__version_info__)) space.appexec([], """(): import _cffi_backend # force it to be initialized """) includes = [] if w_includes: includes += space.unpackiterable(w_includes) assert module_name.startswith('test_') module_name = '_CFFI_' + module_name rdir = udir.ensure('recompiler', dir=1) rdir.join('Python.h').write( '#include <stdio.h>\n' '#define PYPY_VERSION XX\n' '#define PyMODINIT_FUNC /*exported*/ void\n' ) path = module_name.replace('.', os.sep) if '.' in module_name: subrdir = rdir.join(module_name[:module_name.index('.')]) os.mkdir(str(subrdir)) else: subrdir = rdir c_file = str(rdir.join('%s.c' % path)) ffi = FFI() for include_ffi_object in includes: ffi.include(include_ffi_object._test_recompiler_source_ffi) ffi.cdef(cdef, packed=packed) ffi.set_source(module_name, source) ffi.emit_c_code(c_file) base_module_name = module_name.split('.')[-1] sources = [] if w_extra_source is not None: sources.append(space.str_w(w_extra_source)) kwargs = {} # GCC 14 promotes -Wincompatible-pointer-types from a warning to an error # by default, which breaks cffi's intentionally-mismatched field-check # probes (e.g. test_misdeclared_field_1). Keep it a warning so the module # compiles and cffi's runtime checks can run. extra = ['-Wno-error=incompatible-pointer-types'] if w_extra_compile_args is not None: extra = extra + space.unwrap(w_extra_compile_args) kwargs['extra_compile_args'] = extra ext = ffiplatform.get_extension(c_file, module_name, include_dirs=[str(rdir)], export_symbols=['_cffi_pypyinit_' + base_module_name], sources=sources, **kwargs) > ffiplatform.compile(str(rdir), ext) module\_cffi_backend\test\test_recompiler.py:86: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x0000027925bbfc60> compiler_verbose = 0, debug = None def compile(tmpdir, ext, compiler_verbose=0, debug=None): """Compile a C extension module using distutils.""" saved_environ = os.environ.copy() try: > outputfilename = _build(tmpdir, ext, compiler_verbose, debug) d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x0000027925bbfc60> compiler_verbose = 0, debug = 0 def _build(tmpdir, ext, compiler_verbose=0, debug=None): # XXX compact but horrible :-( from cffi._shimmed_dist_utils import Distribution, CompileError, LinkError, set_threshold, set_verbosity dist = Distribution({'ext_modules': [ext]}) dist.parse_config_files() options = dist.get_option_dict('build_ext') if debug is None: debug = sys.flags.debug options['debug'] = ('ffiplatform', debug) options['force'] = ('ffiplatform', True) options['build_lib'] = ('ffiplatform', tmpdir) options['build_temp'] = ('ffiplatform', tmpdir) # try: old_level = set_threshold(0) or 0 try: set_verbosity(compiler_verbose) dist.run_command('build_ext') cmd_obj = dist.get_command_obj('build_ext') [soname] = cmd_obj.get_outputs() finally: set_threshold(old_level) except (CompileError, LinkError) as e: > raise VerificationError('%s: %s' % (e.__class__.__name__, e)) E VerificationError: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2 d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:54: VerificationError ---------------------------- Captured stdout call ----------------------------- generating d:\systemtemp\pytest\usession-main-595\recompiler\_CFFI_test_constant_nonint.c ---------------------------- Captured stderr call ----------------------------- cl : Command line error D8021 : invalid numeric argument '/Wno-error=incompatible-pointer-types' _____________________ AppTestRecompiler.test_constant_ptr _____________________ self = <CallInfo when='call' exception: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2> func = <function <lambda> at 0x000002791b36cf20>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ..\_pytest\runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ..\_pytest\runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_constant_ptr'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_constant_ptr'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ..\_pytest\vendored_packages\pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00000279153616a8> hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_constant_ptr'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_constant_ptr'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ..\_pytest\vendored_packages\pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_constant_ptr'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_constant_ptr'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ..\_pytest\vendored_packages\pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_constant_ptr'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791ad449a8> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...nstant_ptr'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002791b9e6720> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002791b9e6720> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...nstant_ptr'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_constant_ptr'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791ad44840> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...nstant_ptr'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002791b9e66e0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002791b9e66e0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...nstant_ptr'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_constant_ptr'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ..\_pytest\vendored_packages\pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_constant_ptr'> def pytest_runtest_call(item): try: > item.runtest() ..\_pytest\runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_constant_ptr'> def runtest(self): target = self.obj if self.config.option.runappdirect: return target() space = target.im_self.space filename = self._getdynfilename(target) func = app2interp_temp(target.im_func, filename=filename) w_instance = self.parent.w_instance > self.execute_appex(space, func, space, w_instance) tool\pytest\apptest.py:89: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_constant_ptr'>, space = StdObjSpace target = <function test_constant_ptr at 0x000002791b36d010> args = (StdObjSpace, <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>) def execute_appex(self, space, target, *args): self.space = space try: > target(*args) tool\pytest\apptest.py:30: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) w_func = <Function test_constant_ptr> args = <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8> def appcaller(space, *args_w): if not isinstance(space, ObjSpace): raise TypeError("first argument must be a space instance.") # the last argument can be an Arguments w_func = self.wget(space, name) if not args_w: return space.call_function(w_func) else: args = args_w[-1] assert args is not None if not isinstance(args, Arguments): > return space.call_function(w_func, *args_w) interpreter\gateway.py:1227: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <Function test_constant_ptr> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) nargs = 1, Function = <class 'pypy.interpreter.function.Function'> Method = <class 'pypy.interpreter.function.Method'> def call_function(self, w_func, *args_w): nargs = len(args_w) # used for pruning funccall versions if not self.config.objspace.disable_call_speedhacks and nargs < 5: # start of hack for performance from pypy.interpreter.function import Function, Method if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: if nargs < 4: func = w_func.w_function if isinstance(func, Function): return func.funccall(w_inst, *args_w) elif args_w and ( self.abstract_isinstance_w(args_w[0], w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): > return w_func.funccall(*args_w) interpreter\baseobjspace.py:1210: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <Function test_constant_ptr> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) gateway = <module 'pypy.interpreter.gateway' from 'd:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\interpreter\\gateway.pyc'> PyCode = <class 'pypy.interpreter.pycode.PyCode'> code = <code object test_constant_ptr, file '[d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:293]', line 1> def funccall(self, *args_w): # speed hack from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit nargs = len(args_w) fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, args_w[0]) elif nargs == 2: assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, args_w[0], args_w[1]) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) return code.fastcall_3(self.space, self, args_w[0], args_w[1], args_w[2]) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) return code.fastcall_4(self.space, self, args_w[0], args_w[1], args_w[2], args_w[3]) elif (nargs | PyCode.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) if nargs < 5: new_frame = self.space.createframe(code, self.w_func_globals, self) for i in funccallunrolling: if i < nargs: new_frame.locals_cells_stack_w[i] = args_w[i] > return new_frame.run() interpreter\function.py:118: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_constant...uild\pypy\module\_cffi_backend\test\test_recompiler.py:293]', line 1> at line 5 def run(self): """Start this frame's execution.""" if self.getcode().co_flags & pycode.CO_GENERATOR: from pypy.interpreter.generator import GeneratorIterator return GeneratorIterator(self) else: > return self.execute_frame() interpreter\pyframe.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_constant...uild\pypy\module\_cffi_backend\test\test_recompiler.py:293]', line 1> at line 5 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, executioncontext) except OperationError: raise except Exception as e: # general fall-back > raise self._convert_unexpected_exception(e) interpreter\pyframe.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_constant...uild\pypy\module\_cffi_backend\test\test_recompiler.py:293]', line 1> at line 5 e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def _convert_unexpected_exception(self, e): from pypy.interpreter import error > operr = error.get_converted_unexpected_exception(self.space, e) interpreter\pyframe.py:943: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_constant...uild\pypy\module\_cffi_backend\test\test_recompiler.py:293]', line 1> at line 5 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, > executioncontext) interpreter\pyframe.py:286: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_constant...uild\pypy\module\_cffi_backend\test\test_recompiler.py:293]', line 1> at line 5 pycode = <code object test_constant_ptr, file '[d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:293]', line 1> next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def dispatch(self, pycode, next_instr, ec): # For the sequel, force 'next_instr' to be unsigned for performance next_instr = r_uint(next_instr) co_code = pycode.co_code try: while True: > next_instr = self.handle_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:64: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_constant...uild\pypy\module\_cffi_backend\test\test_recompiler.py:293]', line 1> at line 5 co_code = "|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00\xcc\x18\x00|\x02\x00j\x01\x0...00\xca\x01\x00k\x02\x00s`\x00t\x03\x00\x82\x01\x00d\x00\x00S\xca\x01\x00k\x02\x00s`\x00t\x03\x00\x82\x01\x00d\x00\x00S" next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def handle_bytecode(self, co_code, next_instr, ec): try: > next_instr = self.dispatch_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:71: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_constant...uild\pypy\module\_cffi_backend\test\test_recompiler.py:293]', line 1> at line 5 co_code = "|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00\xcc\x18\x00|\x02\x00j\x01\x0...00\xca\x01\x00k\x02\x00s`\x00t\x03\x00\x82\x01\x00d\x00\x00S\xca\x01\x00k\x02\x00s`\x00t\x03\x00\x82\x01\x00d\x00\x00S" next_instr = 18L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> @jit.unroll_safe def dispatch_bytecode(self, co_code, next_instr, ec): while True: self.last_instr = intmask(next_instr) if jit.we_are_jitted(): if self.debugdata: ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) else: # Only reload next_instr from last_instr when something that # can modify it actually ran (trace function or action # dispatcher). In the common case (no trace, positive ticker) # next_instr is unchanged and the round-trip is skipped. _d = self.debugdata if ec.space.reverse_debugging or ( _d is not None and _d.w_f_trace is not None) or ( not we_are_translated() and 'bytecode_only_trace' in ec.__dict__): ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) actionflag = ec.space.actionflag if actionflag.decrement_ticker(TICK_COUNTER_STEP) < 0: actionflag.action_dispatcher(ec, self) next_instr = r_uint(self.last_instr) opcode = ord(co_code[next_instr]) next_instr += 1 if opcode >= HAVE_ARGUMENT: lo = ord(co_code[next_instr]) hi = ord(co_code[next_instr+1]) next_instr += 2 oparg = (hi * 256) | lo else: oparg = 0 # note: the structure of the code here is such that it makes # (after translation) a big "if/elif" chain, which is then # turned into a switch(). while opcode == opcodedesc.EXTENDED_ARG.index: opcode = ord(co_code[next_instr]) if opcode < HAVE_ARGUMENT: raise BytecodeCorruption lo = ord(co_code[next_instr+1]) hi = ord(co_code[next_instr+2]) next_instr += 3 oparg = (oparg * 65536) | (hi * 256) | lo if opcode == opcodedesc.RETURN_VALUE.index: if not self.blockstack_non_empty(): self.frame_finished_execution = True # for generators raise Return w_returnvalue = self.popvalue() block = self.unrollstack(SReturnValue.kind) if block is None: self.pushvalue(w_returnvalue) raise Return else: unroller = SReturnValue(w_returnvalue) next_instr = block.handle(self, unroller) return next_instr # now inside a 'finally' block elif opcode == opcodedesc.END_FINALLY.index: unroller = self.end_finally() if isinstance(unroller, SuspendedUnroller): # go on unrolling the stack block = self.unrollstack(unroller.kind) if block is None: w_result = unroller.nomoreblocks() self.pushvalue(w_result) raise Return else: next_instr = block.handle(self, unroller) return next_instr elif opcode == opcodedesc.JUMP_ABSOLUTE.index: return self.jump_absolute(oparg, ec) elif opcode == opcodedesc.BREAK_LOOP.index: next_instr = self.BREAK_LOOP(oparg, next_instr) elif opcode == opcodedesc.CONTINUE_LOOP.index: return self.CONTINUE_LOOP(oparg, next_instr) elif opcode == opcodedesc.FOR_ITER.index: next_instr = self.FOR_ITER(oparg, next_instr) elif opcode == opcodedesc.JUMP_FORWARD.index: next_instr = self.JUMP_FORWARD(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_FALSE_OR_POP.index: next_instr = self.JUMP_IF_FALSE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_NOT_DEBUG.index: next_instr = self.JUMP_IF_NOT_DEBUG(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_TRUE_OR_POP.index: next_instr = self.JUMP_IF_TRUE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_FALSE.index: next_instr = self.POP_JUMP_IF_FALSE(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_TRUE.index: next_instr = self.POP_JUMP_IF_TRUE(oparg, next_instr) elif opcode == opcodedesc.BINARY_ADD.index: self.BINARY_ADD(oparg, next_instr) elif opcode == opcodedesc.BINARY_AND.index: self.BINARY_AND(oparg, next_instr) elif opcode == opcodedesc.BINARY_DIVIDE.index: self.BINARY_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_FLOOR_DIVIDE.index: self.BINARY_FLOOR_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_LSHIFT.index: self.BINARY_LSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_MODULO.index: self.BINARY_MODULO(oparg, next_instr) elif opcode == opcodedesc.BINARY_MULTIPLY.index: self.BINARY_MULTIPLY(oparg, next_instr) elif opcode == opcodedesc.BINARY_OR.index: self.BINARY_OR(oparg, next_instr) elif opcode == opcodedesc.BINARY_POWER.index: self.BINARY_POWER(oparg, next_instr) elif opcode == opcodedesc.BINARY_RSHIFT.index: self.BINARY_RSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBSCR.index: self.BINARY_SUBSCR(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBTRACT.index: self.BINARY_SUBTRACT(oparg, next_instr) elif opcode == opcodedesc.BINARY_TRUE_DIVIDE.index: self.BINARY_TRUE_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_XOR.index: self.BINARY_XOR(oparg, next_instr) elif opcode == opcodedesc.BUILD_CLASS.index: self.BUILD_CLASS(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST.index: self.BUILD_LIST(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST_FROM_ARG.index: self.BUILD_LIST_FROM_ARG(oparg, next_instr) elif opcode == opcodedesc.BUILD_MAP.index: self.BUILD_MAP(oparg, next_instr) elif opcode == opcodedesc.BUILD_SET.index: self.BUILD_SET(oparg, next_instr) elif opcode == opcodedesc.BUILD_SLICE.index: self.BUILD_SLICE(oparg, next_instr) elif opcode == opcodedesc.BUILD_TUPLE.index: self.BUILD_TUPLE(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION.index: self.CALL_FUNCTION(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_KW.index: self.CALL_FUNCTION_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR.index: self.CALL_FUNCTION_VAR(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR_KW.index: self.CALL_FUNCTION_VAR_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_METHOD.index: > self.CALL_METHOD(oparg, next_instr) interpreter\pyopcode.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ f = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_constant...uild\pypy\module\_cffi_backend\test\test_recompiler.py:293]', line 1> at line 5 oparg = 3, ignored = (18L,), n_args = 3, n_kwargs = 0, w_self = None @jit.unroll_safe def CALL_METHOD(f, oparg, *ignored): # opargs contains the arg, and kwarg count, excluding the implicit 'self' n_args = oparg & 0xff n_kwargs = (oparg >> 8) & 0xff w_self = f.peekvalue_maybe_none(n_args + (2 * n_kwargs)) n = n_args + (w_self is not None) if not n_kwargs: w_callable = f.peekvalue(n_args + (2 * n_kwargs) + 1) w_result = f.space.call_valuestack( > w_callable, n, f, methodcall=w_self is not None, dropvalues=n_args + 2) objspace\std\callmethod.py:96: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_constant...uild\pypy\module\_cffi_backend\test\test_recompiler.py:293]', line 1> at line 5 dropvalues = 5, methodcall = False def call_valuestack(self, w_func, nargs, frame, dropvalues, methodcall=False): # methodcall is only used for better error messages in argument.py from pypy.interpreter.function import Function, Method, is_builtin_code if frame.get_is_being_profiled() and is_builtin_code(w_func): # XXX: this code is copied&pasted :-( from the slow path below # call_valuestack(). args = frame.make_arguments(nargs) frame.dropvalues(dropvalues) return self.call_args_and_c_profile(frame, w_func, args) if not self.config.objspace.disable_call_speedhacks: # start of hack for performance if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: w_func = w_func.w_function # reuse callable stack place for w_inst frame.settopvalue(w_inst, nargs) nargs += 1 methodcall = True elif nargs > 0 and ( self.abstract_isinstance_w(frame.peekvalue(nargs-1), # :-( w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): return w_func.funccall_valuestack( > nargs, frame, methodcall=methodcall, dropvalues=dropvalues) interpreter\baseobjspace.py:1243: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_constant...uild\pypy\module\_cffi_backend\test\test_recompiler.py:293]', line 1> at line 5 dropvalues = 5, methodcall = False def funccall_valuestack(self, nargs, frame, dropvalues, methodcall=False): # speed hack # methodcall is only for better error messages from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit # if (jit.we_are_jitted() and code is self.space._code_of_sys_exc_info and nargs == 0): frame.dropvalues(dropvalues) from pypy.module.sys.vm import exc_info_direct return exc_info_direct(self.space, frame) # fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: f_0 = frame.peekvalue(0) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, f_0) elif nargs == 2: f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, f_1, f_0) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) frame.dropvalues(dropvalues) return code.fastcall_3(self.space, self, f_2, f_1, f_0) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) f_3 = frame.peekvalue(3) frame.dropvalues(dropvalues) return code.fastcall_4(self.space, self, f_3, f_2, f_1, f_0) elif (nargs | Code.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) return self._flat_pycall(code, nargs, frame, dropvalues) elif fast_natural_arity & Code.FLATPYCALL: natural_arity = fast_natural_arity & 0xff if natural_arity > nargs >= natural_arity - len(self.defs_w): assert isinstance(code, PyCode) return self._flat_pycall_defaults(code, nargs, frame, natural_arity - nargs, dropvalues) elif fast_natural_arity == Code.PASSTHROUGHARGS1 and nargs >= 1: assert isinstance(code, gateway.BuiltinCodePassThroughArguments1) w_obj = frame.peekvalue(nargs-1) args = frame.make_arguments(nargs-1) frame.dropvalues(dropvalues) return code.funcrun_obj(self, w_obj, args) args = frame.make_arguments(nargs, methodcall=methodcall) frame.dropvalues(dropvalues) > return self.call_args(args) interpreter\function.py:190: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('static double *const FOOBAR;'), W_BytesObject('test_constant_ptr'), W_BytesObject('#define FOOBAR NULL')]) def call_args(self, args): # delegate activation to code > w_res = self.getcode().funcrun(self, args) interpreter\function.py:68: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('static double *const FOOBAR;'), W_BytesObject('test_constant_ptr'), W_BytesObject('#define FOOBAR NULL')]) def funcrun(self, func, args): > return BuiltinCode.funcrun_obj(self, func, None, args) interpreter\gateway.py:781: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('static double *const FOOBAR;'), W_BytesObject('test_constant_ptr'), W_BytesObject('#define FOOBAR NULL')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: w_result = activation._run(space, scope_w) except DescrMismatch: if w_obj is not None: args = args.prepend(w_obj) return self._type_unwrap_mismatch(space, args) except Exception as e: > self.handle_exception(space, e) interpreter\gateway.py:795: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> space = StdObjSpace e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def handle_exception(self, space, e): try: if not we_are_translated(): raise raise e except OperationError: raise except Exception as e: # general fall-back from pypy.interpreter import error > raise error.get_converted_unexpected_exception(space, e) interpreter\gateway.py:819: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('static double *const FOOBAR;'), W_BytesObject('test_constant_ptr'), W_BytesObject('#define FOOBAR NULL')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: > w_result = activation._run(space, scope_w) interpreter\gateway.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinActivation_UwS_ObjSpace_text_text_text_W_Root_W_Root_W_Root_int_W_Root object at 0x000002791c13af38> space = StdObjSpace scope_w = [W_BytesObject('static double *const FOOBAR;'), W_BytesObject('test_constant_ptr'), W_BytesObject('#define FOOBAR NULL'), None, None, None, ...] def _run(self, space, scope_w): > return self.behavior(space, space.text_w(scope_w[0]), space.text_w(scope_w[1]), space.text_w(scope_w[2]), scope_w[3], scope_w[4], scope_w[5], space.gateway_int_w(scope_w[6]), scope_w[7]) <3152-codegen d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\rpython\tool\sourcetools.py:200>:3: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace, cdef = 'static double *const FOOBAR;' module_name = '_CFFI_test_constant_ptr', source = '#define FOOBAR NULL' w_includes = None, w_extra_source = None, w_min_version = None, packed = 0 w_extra_compile_args = None @unwrap_spec(cdef='text', module_name='text', source='text', packed=int) def prepare(space, cdef, module_name, source, w_includes=None, w_extra_source=None, w_min_version=None, packed=False, w_extra_compile_args=None): try: import cffi from cffi import FFI # <== the system one, which from cffi import recompiler # needs to be at least cffi 1.0.4 from cffi import ffiplatform except ImportError: pytest.skip("system cffi module not found or older than 1.0.0") if w_min_version is None: min_version = (1, 4, 0) else: min_version = tuple(space.unwrap(w_min_version)) if cffi.__version_info__ < min_version: pytest.skip("system cffi module needs to be at least %s, got %s" % ( min_version, cffi.__version_info__)) space.appexec([], """(): import _cffi_backend # force it to be initialized """) includes = [] if w_includes: includes += space.unpackiterable(w_includes) assert module_name.startswith('test_') module_name = '_CFFI_' + module_name rdir = udir.ensure('recompiler', dir=1) rdir.join('Python.h').write( '#include <stdio.h>\n' '#define PYPY_VERSION XX\n' '#define PyMODINIT_FUNC /*exported*/ void\n' ) path = module_name.replace('.', os.sep) if '.' in module_name: subrdir = rdir.join(module_name[:module_name.index('.')]) os.mkdir(str(subrdir)) else: subrdir = rdir c_file = str(rdir.join('%s.c' % path)) ffi = FFI() for include_ffi_object in includes: ffi.include(include_ffi_object._test_recompiler_source_ffi) ffi.cdef(cdef, packed=packed) ffi.set_source(module_name, source) ffi.emit_c_code(c_file) base_module_name = module_name.split('.')[-1] sources = [] if w_extra_source is not None: sources.append(space.str_w(w_extra_source)) kwargs = {} # GCC 14 promotes -Wincompatible-pointer-types from a warning to an error # by default, which breaks cffi's intentionally-mismatched field-check # probes (e.g. test_misdeclared_field_1). Keep it a warning so the module # compiles and cffi's runtime checks can run. extra = ['-Wno-error=incompatible-pointer-types'] if w_extra_compile_args is not None: extra = extra + space.unwrap(w_extra_compile_args) kwargs['extra_compile_args'] = extra ext = ffiplatform.get_extension(c_file, module_name, include_dirs=[str(rdir)], export_symbols=['_cffi_pypyinit_' + base_module_name], sources=sources, **kwargs) > ffiplatform.compile(str(rdir), ext) module\_cffi_backend\test\test_recompiler.py:86: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x000002791c2d9460> compiler_verbose = 0, debug = None def compile(tmpdir, ext, compiler_verbose=0, debug=None): """Compile a C extension module using distutils.""" saved_environ = os.environ.copy() try: > outputfilename = _build(tmpdir, ext, compiler_verbose, debug) d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x000002791c2d9460> compiler_verbose = 0, debug = 0 def _build(tmpdir, ext, compiler_verbose=0, debug=None): # XXX compact but horrible :-( from cffi._shimmed_dist_utils import Distribution, CompileError, LinkError, set_threshold, set_verbosity dist = Distribution({'ext_modules': [ext]}) dist.parse_config_files() options = dist.get_option_dict('build_ext') if debug is None: debug = sys.flags.debug options['debug'] = ('ffiplatform', debug) options['force'] = ('ffiplatform', True) options['build_lib'] = ('ffiplatform', tmpdir) options['build_temp'] = ('ffiplatform', tmpdir) # try: old_level = set_threshold(0) or 0 try: set_verbosity(compiler_verbose) dist.run_command('build_ext') cmd_obj = dist.get_command_obj('build_ext') [soname] = cmd_obj.get_outputs() finally: set_threshold(old_level) except (CompileError, LinkError) as e: > raise VerificationError('%s: %s' % (e.__class__.__name__, e)) E VerificationError: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2 d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:54: VerificationError ---------------------------- Captured stdout call ----------------------------- generating d:\systemtemp\pytest\usession-main-595\recompiler\_CFFI_test_constant_ptr.c ---------------------------- Captured stderr call ----------------------------- cl : Command line error D8021 : invalid numeric argument '/Wno-error=incompatible-pointer-types' _________________________ AppTestRecompiler.test_dir __________________________ self = <CallInfo when='call' exception: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2> func = <function <lambda> at 0x000002792155aa70>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ..\_pytest\runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ..\_pytest\runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_dir'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_dir'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ..\_pytest\vendored_packages\pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00000279153616a8> hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_dir'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_dir'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ..\_pytest\vendored_packages\pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_dir'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_dir'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ..\_pytest\vendored_packages\pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_dir'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791fb2e890> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i... 'test_dir'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00000279269a1820> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00000279269a1820> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i... 'test_dir'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_dir'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791fb2e818> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i... 'test_dir'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00000279269a17e0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00000279269a17e0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i... 'test_dir'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_dir'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ..\_pytest\vendored_packages\pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_dir'> def pytest_runtest_call(item): try: > item.runtest() ..\_pytest\runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_dir'> def runtest(self): target = self.obj if self.config.option.runappdirect: return target() space = target.im_self.space filename = self._getdynfilename(target) func = app2interp_temp(target.im_func, filename=filename) w_instance = self.parent.w_instance > self.execute_appex(space, func, space, w_instance) tool\pytest\apptest.py:89: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_dir'>, space = StdObjSpace target = <function test_dir at 0x000002792155aae8> args = (StdObjSpace, <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>) def execute_appex(self, space, target, *args): self.space = space try: > target(*args) tool\pytest\apptest.py:30: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) w_func = <Function test_dir> args = <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8> def appcaller(space, *args_w): if not isinstance(space, ObjSpace): raise TypeError("first argument must be a space instance.") # the last argument can be an Arguments w_func = self.wget(space, name) if not args_w: return space.call_function(w_func) else: args = args_w[-1] assert args is not None if not isinstance(args, Arguments): > return space.call_function(w_func, *args_w) interpreter\gateway.py:1227: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <Function test_dir> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) nargs = 1, Function = <class 'pypy.interpreter.function.Function'> Method = <class 'pypy.interpreter.function.Method'> def call_function(self, w_func, *args_w): nargs = len(args_w) # used for pruning funccall versions if not self.config.objspace.disable_call_speedhacks and nargs < 5: # start of hack for performance from pypy.interpreter.function import Function, Method if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: if nargs < 4: func = w_func.w_function if isinstance(func, Function): return func.funccall(w_inst, *args_w) elif args_w and ( self.abstract_isinstance_w(args_w[0], w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): > return w_func.funccall(*args_w) interpreter\baseobjspace.py:1210: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <Function test_dir> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) gateway = <module 'pypy.interpreter.gateway' from 'd:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\interpreter\\gateway.pyc'> PyCode = <class 'pypy.interpreter.pycode.PyCode'> code = <code object test_dir, file '[d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:301]', line 1> def funccall(self, *args_w): # speed hack from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit nargs = len(args_w) fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, args_w[0]) elif nargs == 2: assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, args_w[0], args_w[1]) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) return code.fastcall_3(self.space, self, args_w[0], args_w[1], args_w[2]) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) return code.fastcall_4(self.space, self, args_w[0], args_w[1], args_w[2], args_w[3]) elif (nargs | PyCode.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) if nargs < 5: new_frame = self.space.createframe(code, self.w_func_globals, self) for i in funccallunrolling: if i < nargs: new_frame.locals_cells_stack_w[i] = args_w[i] > return new_frame.run() interpreter\function.py:118: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_dir, fil...uild\pypy\module\_cffi_backend\test\test_recompiler.py:301]', line 1> at line 4 def run(self): """Start this frame's execution.""" if self.getcode().co_flags & pycode.CO_GENERATOR: from pypy.interpreter.generator import GeneratorIterator return GeneratorIterator(self) else: > return self.execute_frame() interpreter\pyframe.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_dir, fil...uild\pypy\module\_cffi_backend\test\test_recompiler.py:301]', line 1> at line 4 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, executioncontext) except OperationError: raise except Exception as e: # general fall-back > raise self._convert_unexpected_exception(e) interpreter\pyframe.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_dir, fil...uild\pypy\module\_cffi_backend\test\test_recompiler.py:301]', line 1> at line 4 e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def _convert_unexpected_exception(self, e): from pypy.interpreter import error > operr = error.get_converted_unexpected_exception(self.space, e) interpreter\pyframe.py:943: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_dir, fil...uild\pypy\module\_cffi_backend\test\test_recompiler.py:301]', line 1> at line 4 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, > executioncontext) interpreter\pyframe.py:286: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_dir, fil...uild\pypy\module\_cffi_backend\test\test_recompiler.py:301]', line 1> at line 4 pycode = <code object test_dir, file '[d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:301]', line 1> next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def dispatch(self, pycode, next_instr, ec): # For the sequel, force 'next_instr' to be unsigned for performance next_instr = r_uint(next_instr) co_code = pycode.co_code try: while True: > next_instr = self.handle_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:64: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_dir, fil...uild\pypy\module\_cffi_backend\test\test_recompiler.py:301]', line 1> at line 4 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00d\x04\x00|\x02\x00_\x01\x00\x...x06\x00<\xcc\x1b\x00|\x02\x00\xc9\x07\x00d\n\x00\xca\x01\x00d\x0b\x00k\x02\x00s\xc8\x00t\x03\x00\x82\x01\x00d\x00\x00S' next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def handle_bytecode(self, co_code, next_instr, ec): try: > next_instr = self.dispatch_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:71: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_dir, fil...uild\pypy\module\_cffi_backend\test\test_recompiler.py:301]', line 1> at line 4 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00d\x04\x00|\x02\x00_\x01\x00\x...x06\x00<\xcc\x1b\x00|\x02\x00\xc9\x07\x00d\n\x00\xca\x01\x00d\x0b\x00k\x02\x00s\xc8\x00t\x03\x00\x82\x01\x00d\x00\x00S' next_instr = 18L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> @jit.unroll_safe def dispatch_bytecode(self, co_code, next_instr, ec): while True: self.last_instr = intmask(next_instr) if jit.we_are_jitted(): if self.debugdata: ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) else: # Only reload next_instr from last_instr when something that # can modify it actually ran (trace function or action # dispatcher). In the common case (no trace, positive ticker) # next_instr is unchanged and the round-trip is skipped. _d = self.debugdata if ec.space.reverse_debugging or ( _d is not None and _d.w_f_trace is not None) or ( not we_are_translated() and 'bytecode_only_trace' in ec.__dict__): ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) actionflag = ec.space.actionflag if actionflag.decrement_ticker(TICK_COUNTER_STEP) < 0: actionflag.action_dispatcher(ec, self) next_instr = r_uint(self.last_instr) opcode = ord(co_code[next_instr]) next_instr += 1 if opcode >= HAVE_ARGUMENT: lo = ord(co_code[next_instr]) hi = ord(co_code[next_instr+1]) next_instr += 2 oparg = (hi * 256) | lo else: oparg = 0 # note: the structure of the code here is such that it makes # (after translation) a big "if/elif" chain, which is then # turned into a switch(). while opcode == opcodedesc.EXTENDED_ARG.index: opcode = ord(co_code[next_instr]) if opcode < HAVE_ARGUMENT: raise BytecodeCorruption lo = ord(co_code[next_instr+1]) hi = ord(co_code[next_instr+2]) next_instr += 3 oparg = (oparg * 65536) | (hi * 256) | lo if opcode == opcodedesc.RETURN_VALUE.index: if not self.blockstack_non_empty(): self.frame_finished_execution = True # for generators raise Return w_returnvalue = self.popvalue() block = self.unrollstack(SReturnValue.kind) if block is None: self.pushvalue(w_returnvalue) raise Return else: unroller = SReturnValue(w_returnvalue) next_instr = block.handle(self, unroller) return next_instr # now inside a 'finally' block elif opcode == opcodedesc.END_FINALLY.index: unroller = self.end_finally() if isinstance(unroller, SuspendedUnroller): # go on unrolling the stack block = self.unrollstack(unroller.kind) if block is None: w_result = unroller.nomoreblocks() self.pushvalue(w_result) raise Return else: next_instr = block.handle(self, unroller) return next_instr elif opcode == opcodedesc.JUMP_ABSOLUTE.index: return self.jump_absolute(oparg, ec) elif opcode == opcodedesc.BREAK_LOOP.index: next_instr = self.BREAK_LOOP(oparg, next_instr) elif opcode == opcodedesc.CONTINUE_LOOP.index: return self.CONTINUE_LOOP(oparg, next_instr) elif opcode == opcodedesc.FOR_ITER.index: next_instr = self.FOR_ITER(oparg, next_instr) elif opcode == opcodedesc.JUMP_FORWARD.index: next_instr = self.JUMP_FORWARD(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_FALSE_OR_POP.index: next_instr = self.JUMP_IF_FALSE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_NOT_DEBUG.index: next_instr = self.JUMP_IF_NOT_DEBUG(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_TRUE_OR_POP.index: next_instr = self.JUMP_IF_TRUE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_FALSE.index: next_instr = self.POP_JUMP_IF_FALSE(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_TRUE.index: next_instr = self.POP_JUMP_IF_TRUE(oparg, next_instr) elif opcode == opcodedesc.BINARY_ADD.index: self.BINARY_ADD(oparg, next_instr) elif opcode == opcodedesc.BINARY_AND.index: self.BINARY_AND(oparg, next_instr) elif opcode == opcodedesc.BINARY_DIVIDE.index: self.BINARY_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_FLOOR_DIVIDE.index: self.BINARY_FLOOR_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_LSHIFT.index: self.BINARY_LSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_MODULO.index: self.BINARY_MODULO(oparg, next_instr) elif opcode == opcodedesc.BINARY_MULTIPLY.index: self.BINARY_MULTIPLY(oparg, next_instr) elif opcode == opcodedesc.BINARY_OR.index: self.BINARY_OR(oparg, next_instr) elif opcode == opcodedesc.BINARY_POWER.index: self.BINARY_POWER(oparg, next_instr) elif opcode == opcodedesc.BINARY_RSHIFT.index: self.BINARY_RSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBSCR.index: self.BINARY_SUBSCR(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBTRACT.index: self.BINARY_SUBTRACT(oparg, next_instr) elif opcode == opcodedesc.BINARY_TRUE_DIVIDE.index: self.BINARY_TRUE_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_XOR.index: self.BINARY_XOR(oparg, next_instr) elif opcode == opcodedesc.BUILD_CLASS.index: self.BUILD_CLASS(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST.index: self.BUILD_LIST(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST_FROM_ARG.index: self.BUILD_LIST_FROM_ARG(oparg, next_instr) elif opcode == opcodedesc.BUILD_MAP.index: self.BUILD_MAP(oparg, next_instr) elif opcode == opcodedesc.BUILD_SET.index: self.BUILD_SET(oparg, next_instr) elif opcode == opcodedesc.BUILD_SLICE.index: self.BUILD_SLICE(oparg, next_instr) elif opcode == opcodedesc.BUILD_TUPLE.index: self.BUILD_TUPLE(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION.index: self.CALL_FUNCTION(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_KW.index: self.CALL_FUNCTION_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR.index: self.CALL_FUNCTION_VAR(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR_KW.index: self.CALL_FUNCTION_VAR_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_METHOD.index: > self.CALL_METHOD(oparg, next_instr) interpreter\pyopcode.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ f = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_dir, fil...uild\pypy\module\_cffi_backend\test\test_recompiler.py:301]', line 1> at line 4 oparg = 3, ignored = (18L,), n_args = 3, n_kwargs = 0, w_self = None @jit.unroll_safe def CALL_METHOD(f, oparg, *ignored): # opargs contains the arg, and kwarg count, excluding the implicit 'self' n_args = oparg & 0xff n_kwargs = (oparg >> 8) & 0xff w_self = f.peekvalue_maybe_none(n_args + (2 * n_kwargs)) n = n_args + (w_self is not None) if not n_kwargs: w_callable = f.peekvalue(n_args + (2 * n_kwargs) + 1) w_result = f.space.call_valuestack( > w_callable, n, f, methodcall=w_self is not None, dropvalues=n_args + 2) objspace\std\callmethod.py:96: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_dir, fil...uild\pypy\module\_cffi_backend\test\test_recompiler.py:301]', line 1> at line 4 dropvalues = 5, methodcall = False def call_valuestack(self, w_func, nargs, frame, dropvalues, methodcall=False): # methodcall is only used for better error messages in argument.py from pypy.interpreter.function import Function, Method, is_builtin_code if frame.get_is_being_profiled() and is_builtin_code(w_func): # XXX: this code is copied&pasted :-( from the slow path below # call_valuestack(). args = frame.make_arguments(nargs) frame.dropvalues(dropvalues) return self.call_args_and_c_profile(frame, w_func, args) if not self.config.objspace.disable_call_speedhacks: # start of hack for performance if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: w_func = w_func.w_function # reuse callable stack place for w_inst frame.settopvalue(w_inst, nargs) nargs += 1 methodcall = True elif nargs > 0 and ( self.abstract_isinstance_w(frame.peekvalue(nargs-1), # :-( w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): return w_func.funccall_valuestack( > nargs, frame, methodcall=methodcall, dropvalues=dropvalues) interpreter\baseobjspace.py:1243: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_dir, fil...uild\pypy\module\_cffi_backend\test\test_recompiler.py:301]', line 1> at line 4 dropvalues = 5, methodcall = False def funccall_valuestack(self, nargs, frame, dropvalues, methodcall=False): # speed hack # methodcall is only for better error messages from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit # if (jit.we_are_jitted() and code is self.space._code_of_sys_exc_info and nargs == 0): frame.dropvalues(dropvalues) from pypy.module.sys.vm import exc_info_direct return exc_info_direct(self.space, frame) # fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: f_0 = frame.peekvalue(0) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, f_0) elif nargs == 2: f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, f_1, f_0) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) frame.dropvalues(dropvalues) return code.fastcall_3(self.space, self, f_2, f_1, f_0) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) f_3 = frame.peekvalue(3) frame.dropvalues(dropvalues) return code.fastcall_4(self.space, self, f_3, f_2, f_1, f_0) elif (nargs | Code.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) return self._flat_pycall(code, nargs, frame, dropvalues) elif fast_natural_arity & Code.FLATPYCALL: natural_arity = fast_natural_arity & 0xff if natural_arity > nargs >= natural_arity - len(self.defs_w): assert isinstance(code, PyCode) return self._flat_pycall_defaults(code, nargs, frame, natural_arity - nargs, dropvalues) elif fast_natural_arity == Code.PASSTHROUGHARGS1 and nargs >= 1: assert isinstance(code, gateway.BuiltinCodePassThroughArguments1) w_obj = frame.peekvalue(nargs-1) args = frame.make_arguments(nargs-1) frame.dropvalues(dropvalues) return code.funcrun_obj(self, w_obj, args) args = frame.make_arguments(nargs, methodcall=methodcall) frame.dropvalues(dropvalues) > return self.call_args(args) interpreter\function.py:190: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('int ff(int); int aa; static const int my_constant;')...\n int aa;\n int ff(int x) { return x+aa; }\n ')]) def call_args(self, args): # delegate activation to code > w_res = self.getcode().funcrun(self, args) interpreter\function.py:68: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('int ff(int); int aa; static const int my_constant;')...\n int aa;\n int ff(int x) { return x+aa; }\n ')]) def funcrun(self, func, args): > return BuiltinCode.funcrun_obj(self, func, None, args) interpreter\gateway.py:781: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('int ff(int); int aa; static const int my_constant;')...\n int aa;\n int ff(int x) { return x+aa; }\n ')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: w_result = activation._run(space, scope_w) except DescrMismatch: if w_obj is not None: args = args.prepend(w_obj) return self._type_unwrap_mismatch(space, args) except Exception as e: > self.handle_exception(space, e) interpreter\gateway.py:795: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> space = StdObjSpace e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def handle_exception(self, space, e): try: if not we_are_translated(): raise raise e except OperationError: raise except Exception as e: # general fall-back from pypy.interpreter import error > raise error.get_converted_unexpected_exception(space, e) interpreter\gateway.py:819: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('int ff(int); int aa; static const int my_constant;')...\n int aa;\n int ff(int x) { return x+aa; }\n ')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: > w_result = activation._run(space, scope_w) interpreter\gateway.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinActivation_UwS_ObjSpace_text_text_text_W_Root_W_Root_W_Root_int_W_Root object at 0x000002791c13af38> space = StdObjSpace scope_w = [W_BytesObject('int ff(int); int aa; static const int my_constant;'), W_BytesObject('test_dir'), W_BytesObject('\n ...my_constant (-45)\n int aa;\n int ff(int x) { return x+aa; }\n '), None, None, None, ...] def _run(self, space, scope_w): > return self.behavior(space, space.text_w(scope_w[0]), space.text_w(scope_w[1]), space.text_w(scope_w[2]), scope_w[3], scope_w[4], scope_w[5], space.gateway_int_w(scope_w[6]), scope_w[7]) <3152-codegen d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\rpython\tool\sourcetools.py:200>:3: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace, cdef = 'int ff(int); int aa; static const int my_constant;' module_name = '_CFFI_test_dir' source = '\n #define my_constant (-45)\n int aa;\n int ff(int x) { return x+aa; }\n ' w_includes = None, w_extra_source = None, w_min_version = None, packed = 0 w_extra_compile_args = None @unwrap_spec(cdef='text', module_name='text', source='text', packed=int) def prepare(space, cdef, module_name, source, w_includes=None, w_extra_source=None, w_min_version=None, packed=False, w_extra_compile_args=None): try: import cffi from cffi import FFI # <== the system one, which from cffi import recompiler # needs to be at least cffi 1.0.4 from cffi import ffiplatform except ImportError: pytest.skip("system cffi module not found or older than 1.0.0") if w_min_version is None: min_version = (1, 4, 0) else: min_version = tuple(space.unwrap(w_min_version)) if cffi.__version_info__ < min_version: pytest.skip("system cffi module needs to be at least %s, got %s" % ( min_version, cffi.__version_info__)) space.appexec([], """(): import _cffi_backend # force it to be initialized """) includes = [] if w_includes: includes += space.unpackiterable(w_includes) assert module_name.startswith('test_') module_name = '_CFFI_' + module_name rdir = udir.ensure('recompiler', dir=1) rdir.join('Python.h').write( '#include <stdio.h>\n' '#define PYPY_VERSION XX\n' '#define PyMODINIT_FUNC /*exported*/ void\n' ) path = module_name.replace('.', os.sep) if '.' in module_name: subrdir = rdir.join(module_name[:module_name.index('.')]) os.mkdir(str(subrdir)) else: subrdir = rdir c_file = str(rdir.join('%s.c' % path)) ffi = FFI() for include_ffi_object in includes: ffi.include(include_ffi_object._test_recompiler_source_ffi) ffi.cdef(cdef, packed=packed) ffi.set_source(module_name, source) ffi.emit_c_code(c_file) base_module_name = module_name.split('.')[-1] sources = [] if w_extra_source is not None: sources.append(space.str_w(w_extra_source)) kwargs = {} # GCC 14 promotes -Wincompatible-pointer-types from a warning to an error # by default, which breaks cffi's intentionally-mismatched field-check # probes (e.g. test_misdeclared_field_1). Keep it a warning so the module # compiles and cffi's runtime checks can run. extra = ['-Wno-error=incompatible-pointer-types'] if w_extra_compile_args is not None: extra = extra + space.unwrap(w_extra_compile_args) kwargs['extra_compile_args'] = extra ext = ffiplatform.get_extension(c_file, module_name, include_dirs=[str(rdir)], export_symbols=['_cffi_pypyinit_' + base_module_name], sources=sources, **kwargs) > ffiplatform.compile(str(rdir), ext) module\_cffi_backend\test\test_recompiler.py:86: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x00000279269a1b60> compiler_verbose = 0, debug = None def compile(tmpdir, ext, compiler_verbose=0, debug=None): """Compile a C extension module using distutils.""" saved_environ = os.environ.copy() try: > outputfilename = _build(tmpdir, ext, compiler_verbose, debug) d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x00000279269a1b60> compiler_verbose = 0, debug = 0 def _build(tmpdir, ext, compiler_verbose=0, debug=None): # XXX compact but horrible :-( from cffi._shimmed_dist_utils import Distribution, CompileError, LinkError, set_threshold, set_verbosity dist = Distribution({'ext_modules': [ext]}) dist.parse_config_files() options = dist.get_option_dict('build_ext') if debug is None: debug = sys.flags.debug options['debug'] = ('ffiplatform', debug) options['force'] = ('ffiplatform', True) options['build_lib'] = ('ffiplatform', tmpdir) options['build_temp'] = ('ffiplatform', tmpdir) # try: old_level = set_threshold(0) or 0 try: set_verbosity(compiler_verbose) dist.run_command('build_ext') cmd_obj = dist.get_command_obj('build_ext') [soname] = cmd_obj.get_outputs() finally: set_threshold(old_level) except (CompileError, LinkError) as e: > raise VerificationError('%s: %s' % (e.__class__.__name__, e)) E VerificationError: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2 d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:54: VerificationError ---------------------------- Captured stdout call ----------------------------- generating d:\systemtemp\pytest\usession-main-595\recompiler\_CFFI_test_dir.c ---------------------------- Captured stderr call ----------------------------- d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\cparser.py:165: UserWarning: Global variable 'aa' in cdef(): for consistency with C it should have a storage class specifier (usually 'extern') "(usually 'extern')" % (decl.name,)) cl : Command line error D8021 : invalid numeric argument '/Wno-error=incompatible-pointer-types' _________________ AppTestRecompiler.test_verify_opaque_struct _________________ self = <CallInfo when='call' exception: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2> func = <function <lambda> at 0x0000027927822cc8>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ..\_pytest\runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ..\_pytest\runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_verify_opaque_struct'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_verify_opaque_struct'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ..\_pytest\vendored_packages\pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00000279153616a8> hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_verify_opaque_struct'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_verify_opaque_struct'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ..\_pytest\vendored_packages\pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_verify_opaque_struct'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_verify_opaque_struct'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ..\_pytest\vendored_packages\pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_verify_opaque_struct'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791e731268> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...que_struct'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00000279282f3ba0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00000279282f3ba0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...que_struct'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_verify_opaque_struct'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791e730ed0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...que_struct'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00000279282f3b60> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00000279282f3b60> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...que_struct'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_verify_opaque_struct'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ..\_pytest\vendored_packages\pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_verify_opaque_struct'> def pytest_runtest_call(item): try: > item.runtest() ..\_pytest\runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_verify_opaque_struct'> def runtest(self): target = self.obj if self.config.option.runappdirect: return target() space = target.im_self.space filename = self._getdynfilename(target) func = app2interp_temp(target.im_func, filename=filename) w_instance = self.parent.w_instance > self.execute_appex(space, func, space, w_instance) tool\pytest\apptest.py:89: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_verify_opaque_struct'>, space = StdObjSpace target = <function test_verify_opaque_struct at 0x0000027927822d40> args = (StdObjSpace, <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>) def execute_appex(self, space, target, *args): self.space = space try: > target(*args) tool\pytest\apptest.py:30: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) w_func = <Function test_verify_opaque_struct> args = <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8> def appcaller(space, *args_w): if not isinstance(space, ObjSpace): raise TypeError("first argument must be a space instance.") # the last argument can be an Arguments w_func = self.wget(space, name) if not args_w: return space.call_function(w_func) else: args = args_w[-1] assert args is not None if not isinstance(args, Arguments): > return space.call_function(w_func, *args_w) interpreter\gateway.py:1227: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <Function test_verify_opaque_struct> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) nargs = 1, Function = <class 'pypy.interpreter.function.Function'> Method = <class 'pypy.interpreter.function.Method'> def call_function(self, w_func, *args_w): nargs = len(args_w) # used for pruning funccall versions if not self.config.objspace.disable_call_speedhacks and nargs < 5: # start of hack for performance from pypy.interpreter.function import Function, Method if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: if nargs < 4: func = w_func.w_function if isinstance(func, Function): return func.funccall(w_inst, *args_w) elif args_w and ( self.abstract_isinstance_w(args_w[0], w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): > return w_func.funccall(*args_w) interpreter\baseobjspace.py:1210: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <Function test_verify_opaque_struct> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) gateway = <module 'pypy.interpreter.gateway' from 'd:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\interpreter\\gateway.pyc'> PyCode = <class 'pypy.interpreter.pycode.PyCode'> code = <code object test_verify_opaque_struct, file '[d:\pypy_stuff\buildbot64\slave\...n-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:321]', line 1> def funccall(self, *args_w): # speed hack from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit nargs = len(args_w) fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, args_w[0]) elif nargs == 2: assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, args_w[0], args_w[1]) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) return code.fastcall_3(self.space, self, args_w[0], args_w[1], args_w[2]) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) return code.fastcall_4(self.space, self, args_w[0], args_w[1], args_w[2], args_w[3]) elif (nargs | PyCode.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) if nargs < 5: new_frame = self.space.createframe(code, self.w_func_globals, self) for i in funccallunrolling: if i < nargs: new_frame.locals_cells_stack_w[i] = args_w[i] > return new_frame.run() interpreter\function.py:118: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_verify_o...uild\pypy\module\_cffi_backend\test\test_recompiler.py:321]', line 1> at line 5 def run(self): """Start this frame's execution.""" if self.getcode().co_flags & pycode.CO_GENERATOR: from pypy.interpreter.generator import GeneratorIterator return GeneratorIterator(self) else: > return self.execute_frame() interpreter\pyframe.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_verify_o...uild\pypy\module\_cffi_backend\test\test_recompiler.py:321]', line 1> at line 5 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, executioncontext) except OperationError: raise except Exception as e: # general fall-back > raise self._convert_unexpected_exception(e) interpreter\pyframe.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_verify_o...uild\pypy\module\_cffi_backend\test\test_recompiler.py:321]', line 1> at line 5 e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def _convert_unexpected_exception(self, e): from pypy.interpreter import error > operr = error.get_converted_unexpected_exception(self.space, e) interpreter\pyframe.py:943: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_verify_o...uild\pypy\module\_cffi_backend\test\test_recompiler.py:321]', line 1> at line 5 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, > executioncontext) interpreter\pyframe.py:286: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_verify_o...uild\pypy\module\_cffi_backend\test\test_recompiler.py:321]', line 1> at line 5 pycode = <code object test_verify_opaque_struct, file '[d:\pypy_stuff\buildbot64\slave\...n-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:321]', line 1> next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def dispatch(self, pycode, next_instr, ec): # For the sequel, force 'next_instr' to be unsigned for performance next_instr = r_uint(next_instr) co_code = pycode.co_code try: while True: > next_instr = self.handle_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:64: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_verify_o...uild\pypy\module\_cffi_backend\test\test_recompiler.py:321]', line 1> at line 5 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x01\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00\xcc\x1e\x00|\x01\x00\xc9\x01\x00d\x03\x00\xca\x01\x00j\x02\x00d\x03\x00k\x02\x00s<\x00t\x03\x00\x82\x01\x00d\x00\x00S' next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def handle_bytecode(self, co_code, next_instr, ec): try: > next_instr = self.dispatch_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:71: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_verify_o...uild\pypy\module\_cffi_backend\test\test_recompiler.py:321]', line 1> at line 5 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x01\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00\xcc\x1e\x00|\x01\x00\xc9\x01\x00d\x03\x00\xca\x01\x00j\x02\x00d\x03\x00k\x02\x00s<\x00t\x03\x00\x82\x01\x00d\x00\x00S' next_instr = 18L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> @jit.unroll_safe def dispatch_bytecode(self, co_code, next_instr, ec): while True: self.last_instr = intmask(next_instr) if jit.we_are_jitted(): if self.debugdata: ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) else: # Only reload next_instr from last_instr when something that # can modify it actually ran (trace function or action # dispatcher). In the common case (no trace, positive ticker) # next_instr is unchanged and the round-trip is skipped. _d = self.debugdata if ec.space.reverse_debugging or ( _d is not None and _d.w_f_trace is not None) or ( not we_are_translated() and 'bytecode_only_trace' in ec.__dict__): ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) actionflag = ec.space.actionflag if actionflag.decrement_ticker(TICK_COUNTER_STEP) < 0: actionflag.action_dispatcher(ec, self) next_instr = r_uint(self.last_instr) opcode = ord(co_code[next_instr]) next_instr += 1 if opcode >= HAVE_ARGUMENT: lo = ord(co_code[next_instr]) hi = ord(co_code[next_instr+1]) next_instr += 2 oparg = (hi * 256) | lo else: oparg = 0 # note: the structure of the code here is such that it makes # (after translation) a big "if/elif" chain, which is then # turned into a switch(). while opcode == opcodedesc.EXTENDED_ARG.index: opcode = ord(co_code[next_instr]) if opcode < HAVE_ARGUMENT: raise BytecodeCorruption lo = ord(co_code[next_instr+1]) hi = ord(co_code[next_instr+2]) next_instr += 3 oparg = (oparg * 65536) | (hi * 256) | lo if opcode == opcodedesc.RETURN_VALUE.index: if not self.blockstack_non_empty(): self.frame_finished_execution = True # for generators raise Return w_returnvalue = self.popvalue() block = self.unrollstack(SReturnValue.kind) if block is None: self.pushvalue(w_returnvalue) raise Return else: unroller = SReturnValue(w_returnvalue) next_instr = block.handle(self, unroller) return next_instr # now inside a 'finally' block elif opcode == opcodedesc.END_FINALLY.index: unroller = self.end_finally() if isinstance(unroller, SuspendedUnroller): # go on unrolling the stack block = self.unrollstack(unroller.kind) if block is None: w_result = unroller.nomoreblocks() self.pushvalue(w_result) raise Return else: next_instr = block.handle(self, unroller) return next_instr elif opcode == opcodedesc.JUMP_ABSOLUTE.index: return self.jump_absolute(oparg, ec) elif opcode == opcodedesc.BREAK_LOOP.index: next_instr = self.BREAK_LOOP(oparg, next_instr) elif opcode == opcodedesc.CONTINUE_LOOP.index: return self.CONTINUE_LOOP(oparg, next_instr) elif opcode == opcodedesc.FOR_ITER.index: next_instr = self.FOR_ITER(oparg, next_instr) elif opcode == opcodedesc.JUMP_FORWARD.index: next_instr = self.JUMP_FORWARD(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_FALSE_OR_POP.index: next_instr = self.JUMP_IF_FALSE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_NOT_DEBUG.index: next_instr = self.JUMP_IF_NOT_DEBUG(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_TRUE_OR_POP.index: next_instr = self.JUMP_IF_TRUE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_FALSE.index: next_instr = self.POP_JUMP_IF_FALSE(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_TRUE.index: next_instr = self.POP_JUMP_IF_TRUE(oparg, next_instr) elif opcode == opcodedesc.BINARY_ADD.index: self.BINARY_ADD(oparg, next_instr) elif opcode == opcodedesc.BINARY_AND.index: self.BINARY_AND(oparg, next_instr) elif opcode == opcodedesc.BINARY_DIVIDE.index: self.BINARY_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_FLOOR_DIVIDE.index: self.BINARY_FLOOR_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_LSHIFT.index: self.BINARY_LSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_MODULO.index: self.BINARY_MODULO(oparg, next_instr) elif opcode == opcodedesc.BINARY_MULTIPLY.index: self.BINARY_MULTIPLY(oparg, next_instr) elif opcode == opcodedesc.BINARY_OR.index: self.BINARY_OR(oparg, next_instr) elif opcode == opcodedesc.BINARY_POWER.index: self.BINARY_POWER(oparg, next_instr) elif opcode == opcodedesc.BINARY_RSHIFT.index: self.BINARY_RSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBSCR.index: self.BINARY_SUBSCR(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBTRACT.index: self.BINARY_SUBTRACT(oparg, next_instr) elif opcode == opcodedesc.BINARY_TRUE_DIVIDE.index: self.BINARY_TRUE_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_XOR.index: self.BINARY_XOR(oparg, next_instr) elif opcode == opcodedesc.BUILD_CLASS.index: self.BUILD_CLASS(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST.index: self.BUILD_LIST(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST_FROM_ARG.index: self.BUILD_LIST_FROM_ARG(oparg, next_instr) elif opcode == opcodedesc.BUILD_MAP.index: self.BUILD_MAP(oparg, next_instr) elif opcode == opcodedesc.BUILD_SET.index: self.BUILD_SET(oparg, next_instr) elif opcode == opcodedesc.BUILD_SLICE.index: self.BUILD_SLICE(oparg, next_instr) elif opcode == opcodedesc.BUILD_TUPLE.index: self.BUILD_TUPLE(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION.index: self.CALL_FUNCTION(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_KW.index: self.CALL_FUNCTION_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR.index: self.CALL_FUNCTION_VAR(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR_KW.index: self.CALL_FUNCTION_VAR_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_METHOD.index: > self.CALL_METHOD(oparg, next_instr) interpreter\pyopcode.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ f = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_verify_o...uild\pypy\module\_cffi_backend\test\test_recompiler.py:321]', line 1> at line 5 oparg = 3, ignored = (18L,), n_args = 3, n_kwargs = 0, w_self = None @jit.unroll_safe def CALL_METHOD(f, oparg, *ignored): # opargs contains the arg, and kwarg count, excluding the implicit 'self' n_args = oparg & 0xff n_kwargs = (oparg >> 8) & 0xff w_self = f.peekvalue_maybe_none(n_args + (2 * n_kwargs)) n = n_args + (w_self is not None) if not n_kwargs: w_callable = f.peekvalue(n_args + (2 * n_kwargs) + 1) w_result = f.space.call_valuestack( > w_callable, n, f, methodcall=w_self is not None, dropvalues=n_args + 2) objspace\std\callmethod.py:96: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_verify_o...uild\pypy\module\_cffi_backend\test\test_recompiler.py:321]', line 1> at line 5 dropvalues = 5, methodcall = False def call_valuestack(self, w_func, nargs, frame, dropvalues, methodcall=False): # methodcall is only used for better error messages in argument.py from pypy.interpreter.function import Function, Method, is_builtin_code if frame.get_is_being_profiled() and is_builtin_code(w_func): # XXX: this code is copied&pasted :-( from the slow path below # call_valuestack(). args = frame.make_arguments(nargs) frame.dropvalues(dropvalues) return self.call_args_and_c_profile(frame, w_func, args) if not self.config.objspace.disable_call_speedhacks: # start of hack for performance if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: w_func = w_func.w_function # reuse callable stack place for w_inst frame.settopvalue(w_inst, nargs) nargs += 1 methodcall = True elif nargs > 0 and ( self.abstract_isinstance_w(frame.peekvalue(nargs-1), # :-( w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): return w_func.funccall_valuestack( > nargs, frame, methodcall=methodcall, dropvalues=dropvalues) interpreter\baseobjspace.py:1243: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_verify_o...uild\pypy\module\_cffi_backend\test\test_recompiler.py:321]', line 1> at line 5 dropvalues = 5, methodcall = False def funccall_valuestack(self, nargs, frame, dropvalues, methodcall=False): # speed hack # methodcall is only for better error messages from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit # if (jit.we_are_jitted() and code is self.space._code_of_sys_exc_info and nargs == 0): frame.dropvalues(dropvalues) from pypy.module.sys.vm import exc_info_direct return exc_info_direct(self.space, frame) # fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: f_0 = frame.peekvalue(0) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, f_0) elif nargs == 2: f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, f_1, f_0) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) frame.dropvalues(dropvalues) return code.fastcall_3(self.space, self, f_2, f_1, f_0) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) f_3 = frame.peekvalue(3) frame.dropvalues(dropvalues) return code.fastcall_4(self.space, self, f_3, f_2, f_1, f_0) elif (nargs | Code.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) return self._flat_pycall(code, nargs, frame, dropvalues) elif fast_natural_arity & Code.FLATPYCALL: natural_arity = fast_natural_arity & 0xff if natural_arity > nargs >= natural_arity - len(self.defs_w): assert isinstance(code, PyCode) return self._flat_pycall_defaults(code, nargs, frame, natural_arity - nargs, dropvalues) elif fast_natural_arity == Code.PASSTHROUGHARGS1 and nargs >= 1: assert isinstance(code, gateway.BuiltinCodePassThroughArguments1) w_obj = frame.peekvalue(nargs-1) args = frame.make_arguments(nargs-1) frame.dropvalues(dropvalues) return code.funcrun_obj(self, w_obj, args) args = frame.make_arguments(nargs, methodcall=methodcall) frame.dropvalues(dropvalues) > return self.call_args(args) interpreter\function.py:190: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('struct foo_s;'), W_BytesObject('test_verify_opaque_struct'), W_BytesObject('struct foo_s;')]) def call_args(self, args): # delegate activation to code > w_res = self.getcode().funcrun(self, args) interpreter\function.py:68: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('struct foo_s;'), W_BytesObject('test_verify_opaque_struct'), W_BytesObject('struct foo_s;')]) def funcrun(self, func, args): > return BuiltinCode.funcrun_obj(self, func, None, args) interpreter\gateway.py:781: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('struct foo_s;'), W_BytesObject('test_verify_opaque_struct'), W_BytesObject('struct foo_s;')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: w_result = activation._run(space, scope_w) except DescrMismatch: if w_obj is not None: args = args.prepend(w_obj) return self._type_unwrap_mismatch(space, args) except Exception as e: > self.handle_exception(space, e) interpreter\gateway.py:795: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> space = StdObjSpace e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def handle_exception(self, space, e): try: if not we_are_translated(): raise raise e except OperationError: raise except Exception as e: # general fall-back from pypy.interpreter import error > raise error.get_converted_unexpected_exception(space, e) interpreter\gateway.py:819: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('struct foo_s;'), W_BytesObject('test_verify_opaque_struct'), W_BytesObject('struct foo_s;')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: > w_result = activation._run(space, scope_w) interpreter\gateway.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinActivation_UwS_ObjSpace_text_text_text_W_Root_W_Root_W_Root_int_W_Root object at 0x000002791c13af38> space = StdObjSpace scope_w = [W_BytesObject('struct foo_s;'), W_BytesObject('test_verify_opaque_struct'), W_BytesObject('struct foo_s;'), None, None, None, ...] def _run(self, space, scope_w): > return self.behavior(space, space.text_w(scope_w[0]), space.text_w(scope_w[1]), space.text_w(scope_w[2]), scope_w[3], scope_w[4], scope_w[5], space.gateway_int_w(scope_w[6]), scope_w[7]) <3152-codegen d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\rpython\tool\sourcetools.py:200>:3: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace, cdef = 'struct foo_s;' module_name = '_CFFI_test_verify_opaque_struct', source = 'struct foo_s;' w_includes = None, w_extra_source = None, w_min_version = None, packed = 0 w_extra_compile_args = None @unwrap_spec(cdef='text', module_name='text', source='text', packed=int) def prepare(space, cdef, module_name, source, w_includes=None, w_extra_source=None, w_min_version=None, packed=False, w_extra_compile_args=None): try: import cffi from cffi import FFI # <== the system one, which from cffi import recompiler # needs to be at least cffi 1.0.4 from cffi import ffiplatform except ImportError: pytest.skip("system cffi module not found or older than 1.0.0") if w_min_version is None: min_version = (1, 4, 0) else: min_version = tuple(space.unwrap(w_min_version)) if cffi.__version_info__ < min_version: pytest.skip("system cffi module needs to be at least %s, got %s" % ( min_version, cffi.__version_info__)) space.appexec([], """(): import _cffi_backend # force it to be initialized """) includes = [] if w_includes: includes += space.unpackiterable(w_includes) assert module_name.startswith('test_') module_name = '_CFFI_' + module_name rdir = udir.ensure('recompiler', dir=1) rdir.join('Python.h').write( '#include <stdio.h>\n' '#define PYPY_VERSION XX\n' '#define PyMODINIT_FUNC /*exported*/ void\n' ) path = module_name.replace('.', os.sep) if '.' in module_name: subrdir = rdir.join(module_name[:module_name.index('.')]) os.mkdir(str(subrdir)) else: subrdir = rdir c_file = str(rdir.join('%s.c' % path)) ffi = FFI() for include_ffi_object in includes: ffi.include(include_ffi_object._test_recompiler_source_ffi) ffi.cdef(cdef, packed=packed) ffi.set_source(module_name, source) ffi.emit_c_code(c_file) base_module_name = module_name.split('.')[-1] sources = [] if w_extra_source is not None: sources.append(space.str_w(w_extra_source)) kwargs = {} # GCC 14 promotes -Wincompatible-pointer-types from a warning to an error # by default, which breaks cffi's intentionally-mismatched field-check # probes (e.g. test_misdeclared_field_1). Keep it a warning so the module # compiles and cffi's runtime checks can run. extra = ['-Wno-error=incompatible-pointer-types'] if w_extra_compile_args is not None: extra = extra + space.unwrap(w_extra_compile_args) kwargs['extra_compile_args'] = extra ext = ffiplatform.get_extension(c_file, module_name, include_dirs=[str(rdir)], export_symbols=['_cffi_pypyinit_' + base_module_name], sources=sources, **kwargs) > ffiplatform.compile(str(rdir), ext) module\_cffi_backend\test\test_recompiler.py:86: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x00000279282fc6a0> compiler_verbose = 0, debug = None def compile(tmpdir, ext, compiler_verbose=0, debug=None): """Compile a C extension module using distutils.""" saved_environ = os.environ.copy() try: > outputfilename = _build(tmpdir, ext, compiler_verbose, debug) d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x00000279282fc6a0> compiler_verbose = 0, debug = 0 def _build(tmpdir, ext, compiler_verbose=0, debug=None): # XXX compact but horrible :-( from cffi._shimmed_dist_utils import Distribution, CompileError, LinkError, set_threshold, set_verbosity dist = Distribution({'ext_modules': [ext]}) dist.parse_config_files() options = dist.get_option_dict('build_ext') if debug is None: debug = sys.flags.debug options['debug'] = ('ffiplatform', debug) options['force'] = ('ffiplatform', True) options['build_lib'] = ('ffiplatform', tmpdir) options['build_temp'] = ('ffiplatform', tmpdir) # try: old_level = set_threshold(0) or 0 try: set_verbosity(compiler_verbose) dist.run_command('build_ext') cmd_obj = dist.get_command_obj('build_ext') [soname] = cmd_obj.get_outputs() finally: set_threshold(old_level) except (CompileError, LinkError) as e: > raise VerificationError('%s: %s' % (e.__class__.__name__, e)) E VerificationError: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2 d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:54: VerificationError ---------------------------- Captured stdout call ----------------------------- generating d:\systemtemp\pytest\usession-main-595\recompiler\_CFFI_test_verify_opaque_struct.c ---------------------------- Captured stderr call ----------------------------- cl : Command line error D8021 : invalid numeric argument '/Wno-error=incompatible-pointer-types' _________________ AppTestRecompiler.test_verify_opaque_union __________________ self = <CallInfo when='call' exception: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2> func = <function <lambda> at 0x0000027925028f98>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ..\_pytest\runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ..\_pytest\runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_verify_opaque_union'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_verify_opaque_union'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ..\_pytest\vendored_packages\pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00000279153616a8> hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_verify_opaque_union'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_verify_opaque_union'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ..\_pytest\vendored_packages\pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_verify_opaque_union'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_verify_opaque_union'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ..\_pytest\vendored_packages\pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_verify_opaque_union'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002792b55c250> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...aque_union'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792b558620> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792b558620> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...aque_union'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_verify_opaque_union'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002792b55c200> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...aque_union'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792b5585e0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792b5585e0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...aque_union'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_verify_opaque_union'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ..\_pytest\vendored_packages\pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_verify_opaque_union'> def pytest_runtest_call(item): try: > item.runtest() ..\_pytest\runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_verify_opaque_union'> def runtest(self): target = self.obj if self.config.option.runappdirect: return target() space = target.im_self.space filename = self._getdynfilename(target) func = app2interp_temp(target.im_func, filename=filename) w_instance = self.parent.w_instance > self.execute_appex(space, func, space, w_instance) tool\pytest\apptest.py:89: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_verify_opaque_union'>, space = StdObjSpace target = <function test_verify_opaque_union at 0x0000027925029010> args = (StdObjSpace, <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>) def execute_appex(self, space, target, *args): self.space = space try: > target(*args) tool\pytest\apptest.py:30: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) w_func = <Function test_verify_opaque_union> args = <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8> def appcaller(space, *args_w): if not isinstance(space, ObjSpace): raise TypeError("first argument must be a space instance.") # the last argument can be an Arguments w_func = self.wget(space, name) if not args_w: return space.call_function(w_func) else: args = args_w[-1] assert args is not None if not isinstance(args, Arguments): > return space.call_function(w_func, *args_w) interpreter\gateway.py:1227: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <Function test_verify_opaque_union> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) nargs = 1, Function = <class 'pypy.interpreter.function.Function'> Method = <class 'pypy.interpreter.function.Method'> def call_function(self, w_func, *args_w): nargs = len(args_w) # used for pruning funccall versions if not self.config.objspace.disable_call_speedhacks and nargs < 5: # start of hack for performance from pypy.interpreter.function import Function, Method if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: if nargs < 4: func = w_func.w_function if isinstance(func, Function): return func.funccall(w_inst, *args_w) elif args_w and ( self.abstract_isinstance_w(args_w[0], w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): > return w_func.funccall(*args_w) interpreter\baseobjspace.py:1210: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <Function test_verify_opaque_union> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) gateway = <module 'pypy.interpreter.gateway' from 'd:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\interpreter\\gateway.pyc'> PyCode = <class 'pypy.interpreter.pycode.PyCode'> code = <code object test_verify_opaque_union, file '[d:\pypy_stuff\buildbot64\slave\o...n-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:328]', line 1> def funccall(self, *args_w): # speed hack from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit nargs = len(args_w) fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, args_w[0]) elif nargs == 2: assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, args_w[0], args_w[1]) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) return code.fastcall_3(self.space, self, args_w[0], args_w[1], args_w[2]) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) return code.fastcall_4(self.space, self, args_w[0], args_w[1], args_w[2], args_w[3]) elif (nargs | PyCode.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) if nargs < 5: new_frame = self.space.createframe(code, self.w_func_globals, self) for i in funccallunrolling: if i < nargs: new_frame.locals_cells_stack_w[i] = args_w[i] > return new_frame.run() interpreter\function.py:118: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_verify_o...uild\pypy\module\_cffi_backend\test\test_recompiler.py:328]', line 1> at line 5 def run(self): """Start this frame's execution.""" if self.getcode().co_flags & pycode.CO_GENERATOR: from pypy.interpreter.generator import GeneratorIterator return GeneratorIterator(self) else: > return self.execute_frame() interpreter\pyframe.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_verify_o...uild\pypy\module\_cffi_backend\test\test_recompiler.py:328]', line 1> at line 5 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, executioncontext) except OperationError: raise except Exception as e: # general fall-back > raise self._convert_unexpected_exception(e) interpreter\pyframe.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_verify_o...uild\pypy\module\_cffi_backend\test\test_recompiler.py:328]', line 1> at line 5 e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def _convert_unexpected_exception(self, e): from pypy.interpreter import error > operr = error.get_converted_unexpected_exception(self.space, e) interpreter\pyframe.py:943: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_verify_o...uild\pypy\module\_cffi_backend\test\test_recompiler.py:328]', line 1> at line 5 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, > executioncontext) interpreter\pyframe.py:286: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_verify_o...uild\pypy\module\_cffi_backend\test\test_recompiler.py:328]', line 1> at line 5 pycode = <code object test_verify_opaque_union, file '[d:\pypy_stuff\buildbot64\slave\o...n-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:328]', line 1> next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def dispatch(self, pycode, next_instr, ec): # For the sequel, force 'next_instr' to be unsigned for performance next_instr = r_uint(next_instr) co_code = pycode.co_code try: while True: > next_instr = self.handle_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:64: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_verify_o...uild\pypy\module\_cffi_backend\test\test_recompiler.py:328]', line 1> at line 5 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x01\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00\xcc\x1e\x00|\x01\x00\xc9\x01\x00d\x03\x00\xca\x01\x00j\x02\x00d\x03\x00k\x02\x00s<\x00t\x03\x00\x82\x01\x00d\x00\x00S' next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def handle_bytecode(self, co_code, next_instr, ec): try: > next_instr = self.dispatch_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:71: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_verify_o...uild\pypy\module\_cffi_backend\test\test_recompiler.py:328]', line 1> at line 5 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x01\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00\xcc\x1e\x00|\x01\x00\xc9\x01\x00d\x03\x00\xca\x01\x00j\x02\x00d\x03\x00k\x02\x00s<\x00t\x03\x00\x82\x01\x00d\x00\x00S' next_instr = 18L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> @jit.unroll_safe def dispatch_bytecode(self, co_code, next_instr, ec): while True: self.last_instr = intmask(next_instr) if jit.we_are_jitted(): if self.debugdata: ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) else: # Only reload next_instr from last_instr when something that # can modify it actually ran (trace function or action # dispatcher). In the common case (no trace, positive ticker) # next_instr is unchanged and the round-trip is skipped. _d = self.debugdata if ec.space.reverse_debugging or ( _d is not None and _d.w_f_trace is not None) or ( not we_are_translated() and 'bytecode_only_trace' in ec.__dict__): ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) actionflag = ec.space.actionflag if actionflag.decrement_ticker(TICK_COUNTER_STEP) < 0: actionflag.action_dispatcher(ec, self) next_instr = r_uint(self.last_instr) opcode = ord(co_code[next_instr]) next_instr += 1 if opcode >= HAVE_ARGUMENT: lo = ord(co_code[next_instr]) hi = ord(co_code[next_instr+1]) next_instr += 2 oparg = (hi * 256) | lo else: oparg = 0 # note: the structure of the code here is such that it makes # (after translation) a big "if/elif" chain, which is then # turned into a switch(). while opcode == opcodedesc.EXTENDED_ARG.index: opcode = ord(co_code[next_instr]) if opcode < HAVE_ARGUMENT: raise BytecodeCorruption lo = ord(co_code[next_instr+1]) hi = ord(co_code[next_instr+2]) next_instr += 3 oparg = (oparg * 65536) | (hi * 256) | lo if opcode == opcodedesc.RETURN_VALUE.index: if not self.blockstack_non_empty(): self.frame_finished_execution = True # for generators raise Return w_returnvalue = self.popvalue() block = self.unrollstack(SReturnValue.kind) if block is None: self.pushvalue(w_returnvalue) raise Return else: unroller = SReturnValue(w_returnvalue) next_instr = block.handle(self, unroller) return next_instr # now inside a 'finally' block elif opcode == opcodedesc.END_FINALLY.index: unroller = self.end_finally() if isinstance(unroller, SuspendedUnroller): # go on unrolling the stack block = self.unrollstack(unroller.kind) if block is None: w_result = unroller.nomoreblocks() self.pushvalue(w_result) raise Return else: next_instr = block.handle(self, unroller) return next_instr elif opcode == opcodedesc.JUMP_ABSOLUTE.index: return self.jump_absolute(oparg, ec) elif opcode == opcodedesc.BREAK_LOOP.index: next_instr = self.BREAK_LOOP(oparg, next_instr) elif opcode == opcodedesc.CONTINUE_LOOP.index: return self.CONTINUE_LOOP(oparg, next_instr) elif opcode == opcodedesc.FOR_ITER.index: next_instr = self.FOR_ITER(oparg, next_instr) elif opcode == opcodedesc.JUMP_FORWARD.index: next_instr = self.JUMP_FORWARD(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_FALSE_OR_POP.index: next_instr = self.JUMP_IF_FALSE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_NOT_DEBUG.index: next_instr = self.JUMP_IF_NOT_DEBUG(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_TRUE_OR_POP.index: next_instr = self.JUMP_IF_TRUE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_FALSE.index: next_instr = self.POP_JUMP_IF_FALSE(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_TRUE.index: next_instr = self.POP_JUMP_IF_TRUE(oparg, next_instr) elif opcode == opcodedesc.BINARY_ADD.index: self.BINARY_ADD(oparg, next_instr) elif opcode == opcodedesc.BINARY_AND.index: self.BINARY_AND(oparg, next_instr) elif opcode == opcodedesc.BINARY_DIVIDE.index: self.BINARY_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_FLOOR_DIVIDE.index: self.BINARY_FLOOR_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_LSHIFT.index: self.BINARY_LSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_MODULO.index: self.BINARY_MODULO(oparg, next_instr) elif opcode == opcodedesc.BINARY_MULTIPLY.index: self.BINARY_MULTIPLY(oparg, next_instr) elif opcode == opcodedesc.BINARY_OR.index: self.BINARY_OR(oparg, next_instr) elif opcode == opcodedesc.BINARY_POWER.index: self.BINARY_POWER(oparg, next_instr) elif opcode == opcodedesc.BINARY_RSHIFT.index: self.BINARY_RSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBSCR.index: self.BINARY_SUBSCR(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBTRACT.index: self.BINARY_SUBTRACT(oparg, next_instr) elif opcode == opcodedesc.BINARY_TRUE_DIVIDE.index: self.BINARY_TRUE_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_XOR.index: self.BINARY_XOR(oparg, next_instr) elif opcode == opcodedesc.BUILD_CLASS.index: self.BUILD_CLASS(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST.index: self.BUILD_LIST(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST_FROM_ARG.index: self.BUILD_LIST_FROM_ARG(oparg, next_instr) elif opcode == opcodedesc.BUILD_MAP.index: self.BUILD_MAP(oparg, next_instr) elif opcode == opcodedesc.BUILD_SET.index: self.BUILD_SET(oparg, next_instr) elif opcode == opcodedesc.BUILD_SLICE.index: self.BUILD_SLICE(oparg, next_instr) elif opcode == opcodedesc.BUILD_TUPLE.index: self.BUILD_TUPLE(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION.index: self.CALL_FUNCTION(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_KW.index: self.CALL_FUNCTION_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR.index: self.CALL_FUNCTION_VAR(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR_KW.index: self.CALL_FUNCTION_VAR_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_METHOD.index: > self.CALL_METHOD(oparg, next_instr) interpreter\pyopcode.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ f = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_verify_o...uild\pypy\module\_cffi_backend\test\test_recompiler.py:328]', line 1> at line 5 oparg = 3, ignored = (18L,), n_args = 3, n_kwargs = 0, w_self = None @jit.unroll_safe def CALL_METHOD(f, oparg, *ignored): # opargs contains the arg, and kwarg count, excluding the implicit 'self' n_args = oparg & 0xff n_kwargs = (oparg >> 8) & 0xff w_self = f.peekvalue_maybe_none(n_args + (2 * n_kwargs)) n = n_args + (w_self is not None) if not n_kwargs: w_callable = f.peekvalue(n_args + (2 * n_kwargs) + 1) w_result = f.space.call_valuestack( > w_callable, n, f, methodcall=w_self is not None, dropvalues=n_args + 2) objspace\std\callmethod.py:96: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_verify_o...uild\pypy\module\_cffi_backend\test\test_recompiler.py:328]', line 1> at line 5 dropvalues = 5, methodcall = False def call_valuestack(self, w_func, nargs, frame, dropvalues, methodcall=False): # methodcall is only used for better error messages in argument.py from pypy.interpreter.function import Function, Method, is_builtin_code if frame.get_is_being_profiled() and is_builtin_code(w_func): # XXX: this code is copied&pasted :-( from the slow path below # call_valuestack(). args = frame.make_arguments(nargs) frame.dropvalues(dropvalues) return self.call_args_and_c_profile(frame, w_func, args) if not self.config.objspace.disable_call_speedhacks: # start of hack for performance if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: w_func = w_func.w_function # reuse callable stack place for w_inst frame.settopvalue(w_inst, nargs) nargs += 1 methodcall = True elif nargs > 0 and ( self.abstract_isinstance_w(frame.peekvalue(nargs-1), # :-( w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): return w_func.funccall_valuestack( > nargs, frame, methodcall=methodcall, dropvalues=dropvalues) interpreter\baseobjspace.py:1243: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_verify_o...uild\pypy\module\_cffi_backend\test\test_recompiler.py:328]', line 1> at line 5 dropvalues = 5, methodcall = False def funccall_valuestack(self, nargs, frame, dropvalues, methodcall=False): # speed hack # methodcall is only for better error messages from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit # if (jit.we_are_jitted() and code is self.space._code_of_sys_exc_info and nargs == 0): frame.dropvalues(dropvalues) from pypy.module.sys.vm import exc_info_direct return exc_info_direct(self.space, frame) # fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: f_0 = frame.peekvalue(0) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, f_0) elif nargs == 2: f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, f_1, f_0) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) frame.dropvalues(dropvalues) return code.fastcall_3(self.space, self, f_2, f_1, f_0) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) f_3 = frame.peekvalue(3) frame.dropvalues(dropvalues) return code.fastcall_4(self.space, self, f_3, f_2, f_1, f_0) elif (nargs | Code.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) return self._flat_pycall(code, nargs, frame, dropvalues) elif fast_natural_arity & Code.FLATPYCALL: natural_arity = fast_natural_arity & 0xff if natural_arity > nargs >= natural_arity - len(self.defs_w): assert isinstance(code, PyCode) return self._flat_pycall_defaults(code, nargs, frame, natural_arity - nargs, dropvalues) elif fast_natural_arity == Code.PASSTHROUGHARGS1 and nargs >= 1: assert isinstance(code, gateway.BuiltinCodePassThroughArguments1) w_obj = frame.peekvalue(nargs-1) args = frame.make_arguments(nargs-1) frame.dropvalues(dropvalues) return code.funcrun_obj(self, w_obj, args) args = frame.make_arguments(nargs, methodcall=methodcall) frame.dropvalues(dropvalues) > return self.call_args(args) interpreter\function.py:190: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('union foo_s;'), W_BytesObject('test_verify_opaque_union'), W_BytesObject('union foo_s;')]) def call_args(self, args): # delegate activation to code > w_res = self.getcode().funcrun(self, args) interpreter\function.py:68: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('union foo_s;'), W_BytesObject('test_verify_opaque_union'), W_BytesObject('union foo_s;')]) def funcrun(self, func, args): > return BuiltinCode.funcrun_obj(self, func, None, args) interpreter\gateway.py:781: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('union foo_s;'), W_BytesObject('test_verify_opaque_union'), W_BytesObject('union foo_s;')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: w_result = activation._run(space, scope_w) except DescrMismatch: if w_obj is not None: args = args.prepend(w_obj) return self._type_unwrap_mismatch(space, args) except Exception as e: > self.handle_exception(space, e) interpreter\gateway.py:795: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> space = StdObjSpace e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def handle_exception(self, space, e): try: if not we_are_translated(): raise raise e except OperationError: raise except Exception as e: # general fall-back from pypy.interpreter import error > raise error.get_converted_unexpected_exception(space, e) interpreter\gateway.py:819: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('union foo_s;'), W_BytesObject('test_verify_opaque_union'), W_BytesObject('union foo_s;')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: > w_result = activation._run(space, scope_w) interpreter\gateway.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinActivation_UwS_ObjSpace_text_text_text_W_Root_W_Root_W_Root_int_W_Root object at 0x000002791c13af38> space = StdObjSpace scope_w = [W_BytesObject('union foo_s;'), W_BytesObject('test_verify_opaque_union'), W_BytesObject('union foo_s;'), None, None, None, ...] def _run(self, space, scope_w): > return self.behavior(space, space.text_w(scope_w[0]), space.text_w(scope_w[1]), space.text_w(scope_w[2]), scope_w[3], scope_w[4], scope_w[5], space.gateway_int_w(scope_w[6]), scope_w[7]) <3152-codegen d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\rpython\tool\sourcetools.py:200>:3: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace, cdef = 'union foo_s;' module_name = '_CFFI_test_verify_opaque_union', source = 'union foo_s;' w_includes = None, w_extra_source = None, w_min_version = None, packed = 0 w_extra_compile_args = None @unwrap_spec(cdef='text', module_name='text', source='text', packed=int) def prepare(space, cdef, module_name, source, w_includes=None, w_extra_source=None, w_min_version=None, packed=False, w_extra_compile_args=None): try: import cffi from cffi import FFI # <== the system one, which from cffi import recompiler # needs to be at least cffi 1.0.4 from cffi import ffiplatform except ImportError: pytest.skip("system cffi module not found or older than 1.0.0") if w_min_version is None: min_version = (1, 4, 0) else: min_version = tuple(space.unwrap(w_min_version)) if cffi.__version_info__ < min_version: pytest.skip("system cffi module needs to be at least %s, got %s" % ( min_version, cffi.__version_info__)) space.appexec([], """(): import _cffi_backend # force it to be initialized """) includes = [] if w_includes: includes += space.unpackiterable(w_includes) assert module_name.startswith('test_') module_name = '_CFFI_' + module_name rdir = udir.ensure('recompiler', dir=1) rdir.join('Python.h').write( '#include <stdio.h>\n' '#define PYPY_VERSION XX\n' '#define PyMODINIT_FUNC /*exported*/ void\n' ) path = module_name.replace('.', os.sep) if '.' in module_name: subrdir = rdir.join(module_name[:module_name.index('.')]) os.mkdir(str(subrdir)) else: subrdir = rdir c_file = str(rdir.join('%s.c' % path)) ffi = FFI() for include_ffi_object in includes: ffi.include(include_ffi_object._test_recompiler_source_ffi) ffi.cdef(cdef, packed=packed) ffi.set_source(module_name, source) ffi.emit_c_code(c_file) base_module_name = module_name.split('.')[-1] sources = [] if w_extra_source is not None: sources.append(space.str_w(w_extra_source)) kwargs = {} # GCC 14 promotes -Wincompatible-pointer-types from a warning to an error # by default, which breaks cffi's intentionally-mismatched field-check # probes (e.g. test_misdeclared_field_1). Keep it a warning so the module # compiles and cffi's runtime checks can run. extra = ['-Wno-error=incompatible-pointer-types'] if w_extra_compile_args is not None: extra = extra + space.unwrap(w_extra_compile_args) kwargs['extra_compile_args'] = extra ext = ffiplatform.get_extension(c_file, module_name, include_dirs=[str(rdir)], export_symbols=['_cffi_pypyinit_' + base_module_name], sources=sources, **kwargs) > ffiplatform.compile(str(rdir), ext) module\_cffi_backend\test\test_recompiler.py:86: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x000002792b559160> compiler_verbose = 0, debug = None def compile(tmpdir, ext, compiler_verbose=0, debug=None): """Compile a C extension module using distutils.""" saved_environ = os.environ.copy() try: > outputfilename = _build(tmpdir, ext, compiler_verbose, debug) d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x000002792b559160> compiler_verbose = 0, debug = 0 def _build(tmpdir, ext, compiler_verbose=0, debug=None): # XXX compact but horrible :-( from cffi._shimmed_dist_utils import Distribution, CompileError, LinkError, set_threshold, set_verbosity dist = Distribution({'ext_modules': [ext]}) dist.parse_config_files() options = dist.get_option_dict('build_ext') if debug is None: debug = sys.flags.debug options['debug'] = ('ffiplatform', debug) options['force'] = ('ffiplatform', True) options['build_lib'] = ('ffiplatform', tmpdir) options['build_temp'] = ('ffiplatform', tmpdir) # try: old_level = set_threshold(0) or 0 try: set_verbosity(compiler_verbose) dist.run_command('build_ext') cmd_obj = dist.get_command_obj('build_ext') [soname] = cmd_obj.get_outputs() finally: set_threshold(old_level) except (CompileError, LinkError) as e: > raise VerificationError('%s: %s' % (e.__class__.__name__, e)) E VerificationError: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2 d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:54: VerificationError ---------------------------- Captured stdout call ----------------------------- generating d:\systemtemp\pytest\usession-main-595\recompiler\_CFFI_test_verify_opaque_union.c ---------------------------- Captured stderr call ----------------------------- cl : Command line error D8021 : invalid numeric argument '/Wno-error=incompatible-pointer-types' ____________________ AppTestRecompiler.test_verify_struct _____________________ self = <CallInfo when='call' exception: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2> func = <function <lambda> at 0x000002792b269358>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ..\_pytest\runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ..\_pytest\runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_verify_struct'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_verify_struct'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ..\_pytest\vendored_packages\pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00000279153616a8> hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_verify_struct'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_verify_struct'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ..\_pytest\vendored_packages\pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_verify_struct'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_verify_struct'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ..\_pytest\vendored_packages\pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_verify_struct'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002792082f830> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...ify_struct'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027928cff6e0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027928cff6e0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...ify_struct'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_verify_struct'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002792082f268> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...ify_struct'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027928cff6a0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027928cff6a0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...ify_struct'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_verify_struct'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ..\_pytest\vendored_packages\pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_verify_struct'> def pytest_runtest_call(item): try: > item.runtest() ..\_pytest\runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_verify_struct'> def runtest(self): target = self.obj if self.config.option.runappdirect: return target() space = target.im_self.space filename = self._getdynfilename(target) func = app2interp_temp(target.im_func, filename=filename) w_instance = self.parent.w_instance > self.execute_appex(space, func, space, w_instance) tool\pytest\apptest.py:89: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_verify_struct'>, space = StdObjSpace target = <function test_verify_struct at 0x000002792b269628> args = (StdObjSpace, <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>) def execute_appex(self, space, target, *args): self.space = space try: > target(*args) tool\pytest\apptest.py:30: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) w_func = <Function test_verify_struct> args = <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8> def appcaller(space, *args_w): if not isinstance(space, ObjSpace): raise TypeError("first argument must be a space instance.") # the last argument can be an Arguments w_func = self.wget(space, name) if not args_w: return space.call_function(w_func) else: args = args_w[-1] assert args is not None if not isinstance(args, Arguments): > return space.call_function(w_func, *args_w) interpreter\gateway.py:1227: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <Function test_verify_struct> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) nargs = 1, Function = <class 'pypy.interpreter.function.Function'> Method = <class 'pypy.interpreter.function.Method'> def call_function(self, w_func, *args_w): nargs = len(args_w) # used for pruning funccall versions if not self.config.objspace.disable_call_speedhacks and nargs < 5: # start of hack for performance from pypy.interpreter.function import Function, Method if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: if nargs < 4: func = w_func.w_function if isinstance(func, Function): return func.funccall(w_inst, *args_w) elif args_w and ( self.abstract_isinstance_w(args_w[0], w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): > return w_func.funccall(*args_w) interpreter\baseobjspace.py:1210: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <Function test_verify_struct> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) gateway = <module 'pypy.interpreter.gateway' from 'd:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\interpreter\\gateway.pyc'> PyCode = <class 'pypy.interpreter.pycode.PyCode'> code = <code object test_verify_struct, file '[d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:335]', line 1> def funccall(self, *args_w): # speed hack from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit nargs = len(args_w) fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, args_w[0]) elif nargs == 2: assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, args_w[0], args_w[1]) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) return code.fastcall_3(self.space, self, args_w[0], args_w[1], args_w[2]) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) return code.fastcall_4(self.space, self, args_w[0], args_w[1], args_w[2], args_w[3]) elif (nargs | PyCode.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) if nargs < 5: new_frame = self.space.createframe(code, self.w_func_globals, self) for i in funccallunrolling: if i < nargs: new_frame.locals_cells_stack_w[i] = args_w[i] > return new_frame.run() interpreter\function.py:118: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_verify_s...uild\pypy\module\_cffi_backend\test\test_recompiler.py:335]', line 1> at line 6 def run(self): """Start this frame's execution.""" if self.getcode().co_flags & pycode.CO_GENERATOR: from pypy.interpreter.generator import GeneratorIterator return GeneratorIterator(self) else: > return self.execute_frame() interpreter\pyframe.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_verify_s...uild\pypy\module\_cffi_backend\test\test_recompiler.py:335]', line 1> at line 6 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, executioncontext) except OperationError: raise except Exception as e: # general fall-back > raise self._convert_unexpected_exception(e) interpreter\pyframe.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_verify_s...uild\pypy\module\_cffi_backend\test\test_recompiler.py:335]', line 1> at line 6 e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def _convert_unexpected_exception(self, e): from pypy.interpreter import error > operr = error.get_converted_unexpected_exception(self.space, e) interpreter\pyframe.py:943: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_verify_s...uild\pypy\module\_cffi_backend\test\test_recompiler.py:335]', line 1> at line 6 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, > executioncontext) interpreter\pyframe.py:286: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_verify_s...uild\pypy\module\_cffi_backend\test\test_recompiler.py:335]', line 1> at line 6 pycode = <code object test_verify_struct, file '[d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:335]', line 1> next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def dispatch(self, pycode, next_instr, ec): # For the sequel, force 'next_instr' to be unsigned for performance next_instr = r_uint(next_instr) co_code = pycode.co_code try: while True: > next_instr = self.handle_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:64: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_verify_s...uild\pypy\module\_cffi_backend\test\test_recompiler.py:335]', line 1> at line 6 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00|\x01\x00\xc9\x01\x00d\x04\x0...c9\x0b\x00|\x03\x00d\t\x00\xca\x02\x00d\x0e\x00\x19|\x03\x00j\x05\x00k\x02\x00s\xea\x01t\x04\x00\x82\x01\x00d\x00\x00S' next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def handle_bytecode(self, co_code, next_instr, ec): try: > next_instr = self.dispatch_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:71: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_verify_s...uild\pypy\module\_cffi_backend\test\test_recompiler.py:335]', line 1> at line 6 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00|\x01\x00\xc9\x01\x00d\x04\x0...c9\x0b\x00|\x03\x00d\t\x00\xca\x02\x00d\x0e\x00\x19|\x03\x00j\x05\x00k\x02\x00s\xea\x01t\x04\x00\x82\x01\x00d\x00\x00S' next_instr = 18L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> @jit.unroll_safe def dispatch_bytecode(self, co_code, next_instr, ec): while True: self.last_instr = intmask(next_instr) if jit.we_are_jitted(): if self.debugdata: ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) else: # Only reload next_instr from last_instr when something that # can modify it actually ran (trace function or action # dispatcher). In the common case (no trace, positive ticker) # next_instr is unchanged and the round-trip is skipped. _d = self.debugdata if ec.space.reverse_debugging or ( _d is not None and _d.w_f_trace is not None) or ( not we_are_translated() and 'bytecode_only_trace' in ec.__dict__): ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) actionflag = ec.space.actionflag if actionflag.decrement_ticker(TICK_COUNTER_STEP) < 0: actionflag.action_dispatcher(ec, self) next_instr = r_uint(self.last_instr) opcode = ord(co_code[next_instr]) next_instr += 1 if opcode >= HAVE_ARGUMENT: lo = ord(co_code[next_instr]) hi = ord(co_code[next_instr+1]) next_instr += 2 oparg = (hi * 256) | lo else: oparg = 0 # note: the structure of the code here is such that it makes # (after translation) a big "if/elif" chain, which is then # turned into a switch(). while opcode == opcodedesc.EXTENDED_ARG.index: opcode = ord(co_code[next_instr]) if opcode < HAVE_ARGUMENT: raise BytecodeCorruption lo = ord(co_code[next_instr+1]) hi = ord(co_code[next_instr+2]) next_instr += 3 oparg = (oparg * 65536) | (hi * 256) | lo if opcode == opcodedesc.RETURN_VALUE.index: if not self.blockstack_non_empty(): self.frame_finished_execution = True # for generators raise Return w_returnvalue = self.popvalue() block = self.unrollstack(SReturnValue.kind) if block is None: self.pushvalue(w_returnvalue) raise Return else: unroller = SReturnValue(w_returnvalue) next_instr = block.handle(self, unroller) return next_instr # now inside a 'finally' block elif opcode == opcodedesc.END_FINALLY.index: unroller = self.end_finally() if isinstance(unroller, SuspendedUnroller): # go on unrolling the stack block = self.unrollstack(unroller.kind) if block is None: w_result = unroller.nomoreblocks() self.pushvalue(w_result) raise Return else: next_instr = block.handle(self, unroller) return next_instr elif opcode == opcodedesc.JUMP_ABSOLUTE.index: return self.jump_absolute(oparg, ec) elif opcode == opcodedesc.BREAK_LOOP.index: next_instr = self.BREAK_LOOP(oparg, next_instr) elif opcode == opcodedesc.CONTINUE_LOOP.index: return self.CONTINUE_LOOP(oparg, next_instr) elif opcode == opcodedesc.FOR_ITER.index: next_instr = self.FOR_ITER(oparg, next_instr) elif opcode == opcodedesc.JUMP_FORWARD.index: next_instr = self.JUMP_FORWARD(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_FALSE_OR_POP.index: next_instr = self.JUMP_IF_FALSE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_NOT_DEBUG.index: next_instr = self.JUMP_IF_NOT_DEBUG(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_TRUE_OR_POP.index: next_instr = self.JUMP_IF_TRUE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_FALSE.index: next_instr = self.POP_JUMP_IF_FALSE(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_TRUE.index: next_instr = self.POP_JUMP_IF_TRUE(oparg, next_instr) elif opcode == opcodedesc.BINARY_ADD.index: self.BINARY_ADD(oparg, next_instr) elif opcode == opcodedesc.BINARY_AND.index: self.BINARY_AND(oparg, next_instr) elif opcode == opcodedesc.BINARY_DIVIDE.index: self.BINARY_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_FLOOR_DIVIDE.index: self.BINARY_FLOOR_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_LSHIFT.index: self.BINARY_LSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_MODULO.index: self.BINARY_MODULO(oparg, next_instr) elif opcode == opcodedesc.BINARY_MULTIPLY.index: self.BINARY_MULTIPLY(oparg, next_instr) elif opcode == opcodedesc.BINARY_OR.index: self.BINARY_OR(oparg, next_instr) elif opcode == opcodedesc.BINARY_POWER.index: self.BINARY_POWER(oparg, next_instr) elif opcode == opcodedesc.BINARY_RSHIFT.index: self.BINARY_RSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBSCR.index: self.BINARY_SUBSCR(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBTRACT.index: self.BINARY_SUBTRACT(oparg, next_instr) elif opcode == opcodedesc.BINARY_TRUE_DIVIDE.index: self.BINARY_TRUE_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_XOR.index: self.BINARY_XOR(oparg, next_instr) elif opcode == opcodedesc.BUILD_CLASS.index: self.BUILD_CLASS(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST.index: self.BUILD_LIST(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST_FROM_ARG.index: self.BUILD_LIST_FROM_ARG(oparg, next_instr) elif opcode == opcodedesc.BUILD_MAP.index: self.BUILD_MAP(oparg, next_instr) elif opcode == opcodedesc.BUILD_SET.index: self.BUILD_SET(oparg, next_instr) elif opcode == opcodedesc.BUILD_SLICE.index: self.BUILD_SLICE(oparg, next_instr) elif opcode == opcodedesc.BUILD_TUPLE.index: self.BUILD_TUPLE(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION.index: self.CALL_FUNCTION(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_KW.index: self.CALL_FUNCTION_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR.index: self.CALL_FUNCTION_VAR(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR_KW.index: self.CALL_FUNCTION_VAR_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_METHOD.index: > self.CALL_METHOD(oparg, next_instr) interpreter\pyopcode.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ f = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_verify_s...uild\pypy\module\_cffi_backend\test\test_recompiler.py:335]', line 1> at line 6 oparg = 3, ignored = (18L,), n_args = 3, n_kwargs = 0, w_self = None @jit.unroll_safe def CALL_METHOD(f, oparg, *ignored): # opargs contains the arg, and kwarg count, excluding the implicit 'self' n_args = oparg & 0xff n_kwargs = (oparg >> 8) & 0xff w_self = f.peekvalue_maybe_none(n_args + (2 * n_kwargs)) n = n_args + (w_self is not None) if not n_kwargs: w_callable = f.peekvalue(n_args + (2 * n_kwargs) + 1) w_result = f.space.call_valuestack( > w_callable, n, f, methodcall=w_self is not None, dropvalues=n_args + 2) objspace\std\callmethod.py:96: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_verify_s...uild\pypy\module\_cffi_backend\test\test_recompiler.py:335]', line 1> at line 6 dropvalues = 5, methodcall = False def call_valuestack(self, w_func, nargs, frame, dropvalues, methodcall=False): # methodcall is only used for better error messages in argument.py from pypy.interpreter.function import Function, Method, is_builtin_code if frame.get_is_being_profiled() and is_builtin_code(w_func): # XXX: this code is copied&pasted :-( from the slow path below # call_valuestack(). args = frame.make_arguments(nargs) frame.dropvalues(dropvalues) return self.call_args_and_c_profile(frame, w_func, args) if not self.config.objspace.disable_call_speedhacks: # start of hack for performance if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: w_func = w_func.w_function # reuse callable stack place for w_inst frame.settopvalue(w_inst, nargs) nargs += 1 methodcall = True elif nargs > 0 and ( self.abstract_isinstance_w(frame.peekvalue(nargs-1), # :-( w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): return w_func.funccall_valuestack( > nargs, frame, methodcall=methodcall, dropvalues=dropvalues) interpreter\baseobjspace.py:1243: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_verify_s...uild\pypy\module\_cffi_backend\test\test_recompiler.py:335]', line 1> at line 6 dropvalues = 5, methodcall = False def funccall_valuestack(self, nargs, frame, dropvalues, methodcall=False): # speed hack # methodcall is only for better error messages from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit # if (jit.we_are_jitted() and code is self.space._code_of_sys_exc_info and nargs == 0): frame.dropvalues(dropvalues) from pypy.module.sys.vm import exc_info_direct return exc_info_direct(self.space, frame) # fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: f_0 = frame.peekvalue(0) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, f_0) elif nargs == 2: f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, f_1, f_0) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) frame.dropvalues(dropvalues) return code.fastcall_3(self.space, self, f_2, f_1, f_0) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) f_3 = frame.peekvalue(3) frame.dropvalues(dropvalues) return code.fastcall_4(self.space, self, f_3, f_2, f_1, f_0) elif (nargs | Code.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) return self._flat_pycall(code, nargs, frame, dropvalues) elif fast_natural_arity & Code.FLATPYCALL: natural_arity = fast_natural_arity & 0xff if natural_arity > nargs >= natural_arity - len(self.defs_w): assert isinstance(code, PyCode) return self._flat_pycall_defaults(code, nargs, frame, natural_arity - nargs, dropvalues) elif fast_natural_arity == Code.PASSTHROUGHARGS1 and nargs >= 1: assert isinstance(code, gateway.BuiltinCodePassThroughArguments1) w_obj = frame.peekvalue(nargs-1) args = frame.make_arguments(nargs-1) frame.dropvalues(dropvalues) return code.funcrun_obj(self, w_obj, args) args = frame.make_arguments(nargs, methodcall=methodcall) frame.dropvalues(dropvalues) > return self.call_args(args) interpreter\function.py:190: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('struct foo_s { int b; short a; ...; };\n ...o_s { short a; int b; };\n struct bar_s { struct foo_s *f; };')]) def call_args(self, args): # delegate activation to code > w_res = self.getcode().funcrun(self, args) interpreter\function.py:68: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('struct foo_s { int b; short a; ...; };\n ...o_s { short a; int b; };\n struct bar_s { struct foo_s *f; };')]) def funcrun(self, func, args): > return BuiltinCode.funcrun_obj(self, func, None, args) interpreter\gateway.py:781: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('struct foo_s { int b; short a; ...; };\n ...o_s { short a; int b; };\n struct bar_s { struct foo_s *f; };')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: w_result = activation._run(space, scope_w) except DescrMismatch: if w_obj is not None: args = args.prepend(w_obj) return self._type_unwrap_mismatch(space, args) except Exception as e: > self.handle_exception(space, e) interpreter\gateway.py:795: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> space = StdObjSpace e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def handle_exception(self, space, e): try: if not we_are_translated(): raise raise e except OperationError: raise except Exception as e: # general fall-back from pypy.interpreter import error > raise error.get_converted_unexpected_exception(space, e) interpreter\gateway.py:819: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('struct foo_s { int b; short a; ...; };\n ...o_s { short a; int b; };\n struct bar_s { struct foo_s *f; };')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: > w_result = activation._run(space, scope_w) interpreter\gateway.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinActivation_UwS_ObjSpace_text_text_text_W_Root_W_Root_W_Root_int_W_Root object at 0x000002791c13af38> space = StdObjSpace scope_w = [W_BytesObject('struct foo_s { int b; short a; ...; };\n struct bar_s { struct foo_s *f; };'), W_BytesOb...sObject('struct foo_s { short a; int b; };\n struct bar_s { struct foo_s *f; };'), None, None, None, ...] def _run(self, space, scope_w): > return self.behavior(space, space.text_w(scope_w[0]), space.text_w(scope_w[1]), space.text_w(scope_w[2]), scope_w[3], scope_w[4], scope_w[5], space.gateway_int_w(scope_w[6]), scope_w[7]) <3152-codegen d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\rpython\tool\sourcetools.py:200>:3: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace cdef = 'struct foo_s { int b; short a; ...; };\n struct bar_s { struct foo_s *f; };' module_name = '_CFFI_test_verify_struct' source = 'struct foo_s { short a; int b; };\n struct bar_s { struct foo_s *f; };' w_includes = None, w_extra_source = None, w_min_version = None, packed = 0 w_extra_compile_args = None @unwrap_spec(cdef='text', module_name='text', source='text', packed=int) def prepare(space, cdef, module_name, source, w_includes=None, w_extra_source=None, w_min_version=None, packed=False, w_extra_compile_args=None): try: import cffi from cffi import FFI # <== the system one, which from cffi import recompiler # needs to be at least cffi 1.0.4 from cffi import ffiplatform except ImportError: pytest.skip("system cffi module not found or older than 1.0.0") if w_min_version is None: min_version = (1, 4, 0) else: min_version = tuple(space.unwrap(w_min_version)) if cffi.__version_info__ < min_version: pytest.skip("system cffi module needs to be at least %s, got %s" % ( min_version, cffi.__version_info__)) space.appexec([], """(): import _cffi_backend # force it to be initialized """) includes = [] if w_includes: includes += space.unpackiterable(w_includes) assert module_name.startswith('test_') module_name = '_CFFI_' + module_name rdir = udir.ensure('recompiler', dir=1) rdir.join('Python.h').write( '#include <stdio.h>\n' '#define PYPY_VERSION XX\n' '#define PyMODINIT_FUNC /*exported*/ void\n' ) path = module_name.replace('.', os.sep) if '.' in module_name: subrdir = rdir.join(module_name[:module_name.index('.')]) os.mkdir(str(subrdir)) else: subrdir = rdir c_file = str(rdir.join('%s.c' % path)) ffi = FFI() for include_ffi_object in includes: ffi.include(include_ffi_object._test_recompiler_source_ffi) ffi.cdef(cdef, packed=packed) ffi.set_source(module_name, source) ffi.emit_c_code(c_file) base_module_name = module_name.split('.')[-1] sources = [] if w_extra_source is not None: sources.append(space.str_w(w_extra_source)) kwargs = {} # GCC 14 promotes -Wincompatible-pointer-types from a warning to an error # by default, which breaks cffi's intentionally-mismatched field-check # probes (e.g. test_misdeclared_field_1). Keep it a warning so the module # compiles and cffi's runtime checks can run. extra = ['-Wno-error=incompatible-pointer-types'] if w_extra_compile_args is not None: extra = extra + space.unwrap(w_extra_compile_args) kwargs['extra_compile_args'] = extra ext = ffiplatform.get_extension(c_file, module_name, include_dirs=[str(rdir)], export_symbols=['_cffi_pypyinit_' + base_module_name], sources=sources, **kwargs) > ffiplatform.compile(str(rdir), ext) module\_cffi_backend\test\test_recompiler.py:86: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x0000027928d11be0> compiler_verbose = 0, debug = None def compile(tmpdir, ext, compiler_verbose=0, debug=None): """Compile a C extension module using distutils.""" saved_environ = os.environ.copy() try: > outputfilename = _build(tmpdir, ext, compiler_verbose, debug) d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x0000027928d11be0> compiler_verbose = 0, debug = 0 def _build(tmpdir, ext, compiler_verbose=0, debug=None): # XXX compact but horrible :-( from cffi._shimmed_dist_utils import Distribution, CompileError, LinkError, set_threshold, set_verbosity dist = Distribution({'ext_modules': [ext]}) dist.parse_config_files() options = dist.get_option_dict('build_ext') if debug is None: debug = sys.flags.debug options['debug'] = ('ffiplatform', debug) options['force'] = ('ffiplatform', True) options['build_lib'] = ('ffiplatform', tmpdir) options['build_temp'] = ('ffiplatform', tmpdir) # try: old_level = set_threshold(0) or 0 try: set_verbosity(compiler_verbose) dist.run_command('build_ext') cmd_obj = dist.get_command_obj('build_ext') [soname] = cmd_obj.get_outputs() finally: set_threshold(old_level) except (CompileError, LinkError) as e: > raise VerificationError('%s: %s' % (e.__class__.__name__, e)) E VerificationError: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2 d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:54: VerificationError ---------------------------- Captured stdout call ----------------------------- generating d:\systemtemp\pytest\usession-main-595\recompiler\_CFFI_test_verify_struct.c ---------------------------- Captured stderr call ----------------------------- cl : Command line error D8021 : invalid numeric argument '/Wno-error=incompatible-pointer-types' ______________ AppTestRecompiler.test_verify_exact_field_offset _______________ self = <CallInfo when='call' exception: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2> func = <function <lambda> at 0x000002792942e890>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ..\_pytest\runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ..\_pytest\runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_verify_exact_field_offset'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_verify_exact_field_offset'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ..\_pytest\vendored_packages\pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00000279153616a8> hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_verify_exact_field_offset'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_verify_exact_field_offset'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ..\_pytest\vendored_packages\pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_verify_exact_field_offset'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_verify_exact_field_offset'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ..\_pytest\vendored_packages\pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_verify_exact_field_offset'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791aa3c4f8> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...eld_offset'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792a7124e0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792a7124e0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...eld_offset'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_verify_exact_field_offset'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791aa3c4a8> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...eld_offset'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792a7124a0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792a7124a0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...eld_offset'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_verify_exact_field_offset'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ..\_pytest\vendored_packages\pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_verify_exact_field_offset'> def pytest_runtest_call(item): try: > item.runtest() ..\_pytest\runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_verify_exact_field_offset'> def runtest(self): target = self.obj if self.config.option.runappdirect: return target() space = target.im_self.space filename = self._getdynfilename(target) func = app2interp_temp(target.im_func, filename=filename) w_instance = self.parent.w_instance > self.execute_appex(space, func, space, w_instance) tool\pytest\apptest.py:89: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_verify_exact_field_offset'>, space = StdObjSpace target = <function test_verify_exact_field_offset at 0x000002792942e908> args = (StdObjSpace, <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>) def execute_appex(self, space, target, *args): self.space = space try: > target(*args) tool\pytest\apptest.py:30: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) w_func = <Function test_verify_exact_field_offset> args = <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8> def appcaller(space, *args_w): if not isinstance(space, ObjSpace): raise TypeError("first argument must be a space instance.") # the last argument can be an Arguments w_func = self.wget(space, name) if not args_w: return space.call_function(w_func) else: args = args_w[-1] assert args is not None if not isinstance(args, Arguments): > return space.call_function(w_func, *args_w) interpreter\gateway.py:1227: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <Function test_verify_exact_field_offset> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) nargs = 1, Function = <class 'pypy.interpreter.function.Function'> Method = <class 'pypy.interpreter.function.Method'> def call_function(self, w_func, *args_w): nargs = len(args_w) # used for pruning funccall versions if not self.config.objspace.disable_call_speedhacks and nargs < 5: # start of hack for performance from pypy.interpreter.function import Function, Method if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: if nargs < 4: func = w_func.w_function if isinstance(func, Function): return func.funccall(w_inst, *args_w) elif args_w and ( self.abstract_isinstance_w(args_w[0], w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): > return w_func.funccall(*args_w) interpreter\baseobjspace.py:1210: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <Function test_verify_exact_field_offset> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) gateway = <module 'pypy.interpreter.gateway' from 'd:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\interpreter\\gateway.pyc'> PyCode = <class 'pypy.interpreter.pycode.PyCode'> code = <code object test_verify_exact_field_offset, file '[d:\pypy_stuff\buildbot64\s...n-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:361]', line 1> def funccall(self, *args_w): # speed hack from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit nargs = len(args_w) fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, args_w[0]) elif nargs == 2: assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, args_w[0], args_w[1]) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) return code.fastcall_3(self.space, self, args_w[0], args_w[1], args_w[2]) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) return code.fastcall_4(self.space, self, args_w[0], args_w[1], args_w[2], args_w[3]) elif (nargs | PyCode.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) if nargs < 5: new_frame = self.space.createframe(code, self.w_func_globals, self) for i in funccallunrolling: if i < nargs: new_frame.locals_cells_stack_w[i] = args_w[i] > return new_frame.run() interpreter\function.py:118: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_verify_e...uild\pypy\module\_cffi_backend\test\test_recompiler.py:361]', line 1> at line 5 def run(self): """Start this frame's execution.""" if self.getcode().co_flags & pycode.CO_GENERATOR: from pypy.interpreter.generator import GeneratorIterator return GeneratorIterator(self) else: > return self.execute_frame() interpreter\pyframe.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_verify_e...uild\pypy\module\_cffi_backend\test\test_recompiler.py:361]', line 1> at line 5 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, executioncontext) except OperationError: raise except Exception as e: # general fall-back > raise self._convert_unexpected_exception(e) interpreter\pyframe.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_verify_e...uild\pypy\module\_cffi_backend\test\test_recompiler.py:361]', line 1> at line 5 e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def _convert_unexpected_exception(self, e): from pypy.interpreter import error > operr = error.get_converted_unexpected_exception(self.space, e) interpreter\pyframe.py:943: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_verify_e...uild\pypy\module\_cffi_backend\test\test_recompiler.py:361]', line 1> at line 5 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, > executioncontext) interpreter\pyframe.py:286: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_verify_e...uild\pypy\module\_cffi_backend\test\test_recompiler.py:361]', line 1> at line 5 pycode = <code object test_verify_exact_field_offset, file '[d:\pypy_stuff\buildbot64\s...n-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:361]', line 1> next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def dispatch(self, pycode, next_instr, ec): # For the sequel, force 'next_instr' to be unsigned for performance next_instr = r_uint(next_instr) co_code = pycode.co_code try: while True: > next_instr = self.handle_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:64: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_verify_e...uild\pypy\module\_cffi_backend\test\test_recompiler.py:361]', line 1> at line 5 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00t\x01\x00|\x01\x00j\x02\x00|\...7\x00\x82\x01\x00d\x00\x00Sj\x05\x00\x83\x01\x00\xc9\x06\x00d\x05\x00\xca\x01\x00sW\x00t\x07\x00\x82\x01\x00d\x00\x00S' next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def handle_bytecode(self, co_code, next_instr, ec): try: > next_instr = self.dispatch_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:71: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_verify_e...uild\pypy\module\_cffi_backend\test\test_recompiler.py:361]', line 1> at line 5 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00t\x01\x00|\x01\x00j\x02\x00|\...7\x00\x82\x01\x00d\x00\x00Sj\x05\x00\x83\x01\x00\xc9\x06\x00d\x05\x00\xca\x01\x00sW\x00t\x07\x00\x82\x01\x00d\x00\x00S' next_instr = 18L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> @jit.unroll_safe def dispatch_bytecode(self, co_code, next_instr, ec): while True: self.last_instr = intmask(next_instr) if jit.we_are_jitted(): if self.debugdata: ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) else: # Only reload next_instr from last_instr when something that # can modify it actually ran (trace function or action # dispatcher). In the common case (no trace, positive ticker) # next_instr is unchanged and the round-trip is skipped. _d = self.debugdata if ec.space.reverse_debugging or ( _d is not None and _d.w_f_trace is not None) or ( not we_are_translated() and 'bytecode_only_trace' in ec.__dict__): ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) actionflag = ec.space.actionflag if actionflag.decrement_ticker(TICK_COUNTER_STEP) < 0: actionflag.action_dispatcher(ec, self) next_instr = r_uint(self.last_instr) opcode = ord(co_code[next_instr]) next_instr += 1 if opcode >= HAVE_ARGUMENT: lo = ord(co_code[next_instr]) hi = ord(co_code[next_instr+1]) next_instr += 2 oparg = (hi * 256) | lo else: oparg = 0 # note: the structure of the code here is such that it makes # (after translation) a big "if/elif" chain, which is then # turned into a switch(). while opcode == opcodedesc.EXTENDED_ARG.index: opcode = ord(co_code[next_instr]) if opcode < HAVE_ARGUMENT: raise BytecodeCorruption lo = ord(co_code[next_instr+1]) hi = ord(co_code[next_instr+2]) next_instr += 3 oparg = (oparg * 65536) | (hi * 256) | lo if opcode == opcodedesc.RETURN_VALUE.index: if not self.blockstack_non_empty(): self.frame_finished_execution = True # for generators raise Return w_returnvalue = self.popvalue() block = self.unrollstack(SReturnValue.kind) if block is None: self.pushvalue(w_returnvalue) raise Return else: unroller = SReturnValue(w_returnvalue) next_instr = block.handle(self, unroller) return next_instr # now inside a 'finally' block elif opcode == opcodedesc.END_FINALLY.index: unroller = self.end_finally() if isinstance(unroller, SuspendedUnroller): # go on unrolling the stack block = self.unrollstack(unroller.kind) if block is None: w_result = unroller.nomoreblocks() self.pushvalue(w_result) raise Return else: next_instr = block.handle(self, unroller) return next_instr elif opcode == opcodedesc.JUMP_ABSOLUTE.index: return self.jump_absolute(oparg, ec) elif opcode == opcodedesc.BREAK_LOOP.index: next_instr = self.BREAK_LOOP(oparg, next_instr) elif opcode == opcodedesc.CONTINUE_LOOP.index: return self.CONTINUE_LOOP(oparg, next_instr) elif opcode == opcodedesc.FOR_ITER.index: next_instr = self.FOR_ITER(oparg, next_instr) elif opcode == opcodedesc.JUMP_FORWARD.index: next_instr = self.JUMP_FORWARD(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_FALSE_OR_POP.index: next_instr = self.JUMP_IF_FALSE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_NOT_DEBUG.index: next_instr = self.JUMP_IF_NOT_DEBUG(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_TRUE_OR_POP.index: next_instr = self.JUMP_IF_TRUE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_FALSE.index: next_instr = self.POP_JUMP_IF_FALSE(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_TRUE.index: next_instr = self.POP_JUMP_IF_TRUE(oparg, next_instr) elif opcode == opcodedesc.BINARY_ADD.index: self.BINARY_ADD(oparg, next_instr) elif opcode == opcodedesc.BINARY_AND.index: self.BINARY_AND(oparg, next_instr) elif opcode == opcodedesc.BINARY_DIVIDE.index: self.BINARY_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_FLOOR_DIVIDE.index: self.BINARY_FLOOR_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_LSHIFT.index: self.BINARY_LSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_MODULO.index: self.BINARY_MODULO(oparg, next_instr) elif opcode == opcodedesc.BINARY_MULTIPLY.index: self.BINARY_MULTIPLY(oparg, next_instr) elif opcode == opcodedesc.BINARY_OR.index: self.BINARY_OR(oparg, next_instr) elif opcode == opcodedesc.BINARY_POWER.index: self.BINARY_POWER(oparg, next_instr) elif opcode == opcodedesc.BINARY_RSHIFT.index: self.BINARY_RSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBSCR.index: self.BINARY_SUBSCR(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBTRACT.index: self.BINARY_SUBTRACT(oparg, next_instr) elif opcode == opcodedesc.BINARY_TRUE_DIVIDE.index: self.BINARY_TRUE_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_XOR.index: self.BINARY_XOR(oparg, next_instr) elif opcode == opcodedesc.BUILD_CLASS.index: self.BUILD_CLASS(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST.index: self.BUILD_LIST(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST_FROM_ARG.index: self.BUILD_LIST_FROM_ARG(oparg, next_instr) elif opcode == opcodedesc.BUILD_MAP.index: self.BUILD_MAP(oparg, next_instr) elif opcode == opcodedesc.BUILD_SET.index: self.BUILD_SET(oparg, next_instr) elif opcode == opcodedesc.BUILD_SLICE.index: self.BUILD_SLICE(oparg, next_instr) elif opcode == opcodedesc.BUILD_TUPLE.index: self.BUILD_TUPLE(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION.index: self.CALL_FUNCTION(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_KW.index: self.CALL_FUNCTION_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR.index: self.CALL_FUNCTION_VAR(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR_KW.index: self.CALL_FUNCTION_VAR_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_METHOD.index: > self.CALL_METHOD(oparg, next_instr) interpreter\pyopcode.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ f = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_verify_e...uild\pypy\module\_cffi_backend\test\test_recompiler.py:361]', line 1> at line 5 oparg = 3, ignored = (18L,), n_args = 3, n_kwargs = 0, w_self = None @jit.unroll_safe def CALL_METHOD(f, oparg, *ignored): # opargs contains the arg, and kwarg count, excluding the implicit 'self' n_args = oparg & 0xff n_kwargs = (oparg >> 8) & 0xff w_self = f.peekvalue_maybe_none(n_args + (2 * n_kwargs)) n = n_args + (w_self is not None) if not n_kwargs: w_callable = f.peekvalue(n_args + (2 * n_kwargs) + 1) w_result = f.space.call_valuestack( > w_callable, n, f, methodcall=w_self is not None, dropvalues=n_args + 2) objspace\std\callmethod.py:96: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_verify_e...uild\pypy\module\_cffi_backend\test\test_recompiler.py:361]', line 1> at line 5 dropvalues = 5, methodcall = False def call_valuestack(self, w_func, nargs, frame, dropvalues, methodcall=False): # methodcall is only used for better error messages in argument.py from pypy.interpreter.function import Function, Method, is_builtin_code if frame.get_is_being_profiled() and is_builtin_code(w_func): # XXX: this code is copied&pasted :-( from the slow path below # call_valuestack(). args = frame.make_arguments(nargs) frame.dropvalues(dropvalues) return self.call_args_and_c_profile(frame, w_func, args) if not self.config.objspace.disable_call_speedhacks: # start of hack for performance if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: w_func = w_func.w_function # reuse callable stack place for w_inst frame.settopvalue(w_inst, nargs) nargs += 1 methodcall = True elif nargs > 0 and ( self.abstract_isinstance_w(frame.peekvalue(nargs-1), # :-( w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): return w_func.funccall_valuestack( > nargs, frame, methodcall=methodcall, dropvalues=dropvalues) interpreter\baseobjspace.py:1243: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_verify_e...uild\pypy\module\_cffi_backend\test\test_recompiler.py:361]', line 1> at line 5 dropvalues = 5, methodcall = False def funccall_valuestack(self, nargs, frame, dropvalues, methodcall=False): # speed hack # methodcall is only for better error messages from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit # if (jit.we_are_jitted() and code is self.space._code_of_sys_exc_info and nargs == 0): frame.dropvalues(dropvalues) from pypy.module.sys.vm import exc_info_direct return exc_info_direct(self.space, frame) # fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: f_0 = frame.peekvalue(0) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, f_0) elif nargs == 2: f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, f_1, f_0) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) frame.dropvalues(dropvalues) return code.fastcall_3(self.space, self, f_2, f_1, f_0) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) f_3 = frame.peekvalue(3) frame.dropvalues(dropvalues) return code.fastcall_4(self.space, self, f_3, f_2, f_1, f_0) elif (nargs | Code.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) return self._flat_pycall(code, nargs, frame, dropvalues) elif fast_natural_arity & Code.FLATPYCALL: natural_arity = fast_natural_arity & 0xff if natural_arity > nargs >= natural_arity - len(self.defs_w): assert isinstance(code, PyCode) return self._flat_pycall_defaults(code, nargs, frame, natural_arity - nargs, dropvalues) elif fast_natural_arity == Code.PASSTHROUGHARGS1 and nargs >= 1: assert isinstance(code, gateway.BuiltinCodePassThroughArguments1) w_obj = frame.peekvalue(nargs-1) args = frame.make_arguments(nargs-1) frame.dropvalues(dropvalues) return code.funcrun_obj(self, w_obj, args) args = frame.make_arguments(nargs, methodcall=methodcall) frame.dropvalues(dropvalues) > return self.call_args(args) interpreter\function.py:190: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('struct foo_s { int b; short a; };'), W_BytesObject('...rify_exact_field_offset'), W_BytesObject('struct foo_s { short a; int b; };')]) def call_args(self, args): # delegate activation to code > w_res = self.getcode().funcrun(self, args) interpreter\function.py:68: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('struct foo_s { int b; short a; };'), W_BytesObject('...rify_exact_field_offset'), W_BytesObject('struct foo_s { short a; int b; };')]) def funcrun(self, func, args): > return BuiltinCode.funcrun_obj(self, func, None, args) interpreter\gateway.py:781: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('struct foo_s { int b; short a; };'), W_BytesObject('...rify_exact_field_offset'), W_BytesObject('struct foo_s { short a; int b; };')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: w_result = activation._run(space, scope_w) except DescrMismatch: if w_obj is not None: args = args.prepend(w_obj) return self._type_unwrap_mismatch(space, args) except Exception as e: > self.handle_exception(space, e) interpreter\gateway.py:795: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> space = StdObjSpace e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def handle_exception(self, space, e): try: if not we_are_translated(): raise raise e except OperationError: raise except Exception as e: # general fall-back from pypy.interpreter import error > raise error.get_converted_unexpected_exception(space, e) interpreter\gateway.py:819: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('struct foo_s { int b; short a; };'), W_BytesObject('...rify_exact_field_offset'), W_BytesObject('struct foo_s { short a; int b; };')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: > w_result = activation._run(space, scope_w) interpreter\gateway.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinActivation_UwS_ObjSpace_text_text_text_W_Root_W_Root_W_Root_int_W_Root object at 0x000002791c13af38> space = StdObjSpace scope_w = [W_BytesObject('struct foo_s { int b; short a; };'), W_BytesObject('test_verify_exact_field_offset'), W_BytesObject('struct foo_s { short a; int b; };'), None, None, None, ...] def _run(self, space, scope_w): > return self.behavior(space, space.text_w(scope_w[0]), space.text_w(scope_w[1]), space.text_w(scope_w[2]), scope_w[3], scope_w[4], scope_w[5], space.gateway_int_w(scope_w[6]), scope_w[7]) <3152-codegen d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\rpython\tool\sourcetools.py:200>:3: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace, cdef = 'struct foo_s { int b; short a; };' module_name = '_CFFI_test_verify_exact_field_offset' source = 'struct foo_s { short a; int b; };', w_includes = None w_extra_source = None, w_min_version = None, packed = 0 w_extra_compile_args = None @unwrap_spec(cdef='text', module_name='text', source='text', packed=int) def prepare(space, cdef, module_name, source, w_includes=None, w_extra_source=None, w_min_version=None, packed=False, w_extra_compile_args=None): try: import cffi from cffi import FFI # <== the system one, which from cffi import recompiler # needs to be at least cffi 1.0.4 from cffi import ffiplatform except ImportError: pytest.skip("system cffi module not found or older than 1.0.0") if w_min_version is None: min_version = (1, 4, 0) else: min_version = tuple(space.unwrap(w_min_version)) if cffi.__version_info__ < min_version: pytest.skip("system cffi module needs to be at least %s, got %s" % ( min_version, cffi.__version_info__)) space.appexec([], """(): import _cffi_backend # force it to be initialized """) includes = [] if w_includes: includes += space.unpackiterable(w_includes) assert module_name.startswith('test_') module_name = '_CFFI_' + module_name rdir = udir.ensure('recompiler', dir=1) rdir.join('Python.h').write( '#include <stdio.h>\n' '#define PYPY_VERSION XX\n' '#define PyMODINIT_FUNC /*exported*/ void\n' ) path = module_name.replace('.', os.sep) if '.' in module_name: subrdir = rdir.join(module_name[:module_name.index('.')]) os.mkdir(str(subrdir)) else: subrdir = rdir c_file = str(rdir.join('%s.c' % path)) ffi = FFI() for include_ffi_object in includes: ffi.include(include_ffi_object._test_recompiler_source_ffi) ffi.cdef(cdef, packed=packed) ffi.set_source(module_name, source) ffi.emit_c_code(c_file) base_module_name = module_name.split('.')[-1] sources = [] if w_extra_source is not None: sources.append(space.str_w(w_extra_source)) kwargs = {} # GCC 14 promotes -Wincompatible-pointer-types from a warning to an error # by default, which breaks cffi's intentionally-mismatched field-check # probes (e.g. test_misdeclared_field_1). Keep it a warning so the module # compiles and cffi's runtime checks can run. extra = ['-Wno-error=incompatible-pointer-types'] if w_extra_compile_args is not None: extra = extra + space.unwrap(w_extra_compile_args) kwargs['extra_compile_args'] = extra ext = ffiplatform.get_extension(c_file, module_name, include_dirs=[str(rdir)], export_symbols=['_cffi_pypyinit_' + base_module_name], sources=sources, **kwargs) > ffiplatform.compile(str(rdir), ext) module\_cffi_backend\test\test_recompiler.py:86: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x000002792a7133a0> compiler_verbose = 0, debug = None def compile(tmpdir, ext, compiler_verbose=0, debug=None): """Compile a C extension module using distutils.""" saved_environ = os.environ.copy() try: > outputfilename = _build(tmpdir, ext, compiler_verbose, debug) d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x000002792a7133a0> compiler_verbose = 0, debug = 0 def _build(tmpdir, ext, compiler_verbose=0, debug=None): # XXX compact but horrible :-( from cffi._shimmed_dist_utils import Distribution, CompileError, LinkError, set_threshold, set_verbosity dist = Distribution({'ext_modules': [ext]}) dist.parse_config_files() options = dist.get_option_dict('build_ext') if debug is None: debug = sys.flags.debug options['debug'] = ('ffiplatform', debug) options['force'] = ('ffiplatform', True) options['build_lib'] = ('ffiplatform', tmpdir) options['build_temp'] = ('ffiplatform', tmpdir) # try: old_level = set_threshold(0) or 0 try: set_verbosity(compiler_verbose) dist.run_command('build_ext') cmd_obj = dist.get_command_obj('build_ext') [soname] = cmd_obj.get_outputs() finally: set_threshold(old_level) except (CompileError, LinkError) as e: > raise VerificationError('%s: %s' % (e.__class__.__name__, e)) E VerificationError: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2 d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:54: VerificationError ---------------------------- Captured stdout call ----------------------------- generating d:\systemtemp\pytest\usession-main-595\recompiler\_CFFI_test_verify_exact_field_offset.c ---------------------------- Captured stderr call ----------------------------- cl : Command line error D8021 : invalid numeric argument '/Wno-error=incompatible-pointer-types' _____________________ AppTestRecompiler.test_type_caching _____________________ self = <CallInfo when='call' exception: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2> func = <function <lambda> at 0x000002792a7d3970>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ..\_pytest\runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ..\_pytest\runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_type_caching'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_type_caching'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ..\_pytest\vendored_packages\pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00000279153616a8> hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_type_caching'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_type_caching'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ..\_pytest\vendored_packages\pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_type_caching'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_type_caching'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ..\_pytest\vendored_packages\pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_type_caching'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791e087c90> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...pe_caching'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00000279287cc820> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00000279287cc820> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...pe_caching'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_type_caching'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791e087bc8> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...pe_caching'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00000279287cc7e0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00000279287cc7e0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...pe_caching'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_type_caching'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ..\_pytest\vendored_packages\pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_type_caching'> def pytest_runtest_call(item): try: > item.runtest() ..\_pytest\runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_type_caching'> def runtest(self): target = self.obj if self.config.option.runappdirect: return target() space = target.im_self.space filename = self._getdynfilename(target) func = app2interp_temp(target.im_func, filename=filename) w_instance = self.parent.w_instance > self.execute_appex(space, func, space, w_instance) tool\pytest\apptest.py:89: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_type_caching'>, space = StdObjSpace target = <function test_type_caching at 0x000002792a7d39e8> args = (StdObjSpace, <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>) def execute_appex(self, space, target, *args): self.space = space try: > target(*args) tool\pytest\apptest.py:30: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) w_func = <Function test_type_caching> args = <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8> def appcaller(space, *args_w): if not isinstance(space, ObjSpace): raise TypeError("first argument must be a space instance.") # the last argument can be an Arguments w_func = self.wget(space, name) if not args_w: return space.call_function(w_func) else: args = args_w[-1] assert args is not None if not isinstance(args, Arguments): > return space.call_function(w_func, *args_w) interpreter\gateway.py:1227: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <Function test_type_caching> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) nargs = 1, Function = <class 'pypy.interpreter.function.Function'> Method = <class 'pypy.interpreter.function.Method'> def call_function(self, w_func, *args_w): nargs = len(args_w) # used for pruning funccall versions if not self.config.objspace.disable_call_speedhacks and nargs < 5: # start of hack for performance from pypy.interpreter.function import Function, Method if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: if nargs < 4: func = w_func.w_function if isinstance(func, Function): return func.funccall(w_inst, *args_w) elif args_w and ( self.abstract_isinstance_w(args_w[0], w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): > return w_func.funccall(*args_w) interpreter\baseobjspace.py:1210: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <Function test_type_caching> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) gateway = <module 'pypy.interpreter.gateway' from 'd:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\interpreter\\gateway.pyc'> PyCode = <class 'pypy.interpreter.pycode.PyCode'> code = <code object test_type_caching, file '[d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:371]', line 1> def funccall(self, *args_w): # speed hack from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit nargs = len(args_w) fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, args_w[0]) elif nargs == 2: assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, args_w[0], args_w[1]) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) return code.fastcall_3(self.space, self, args_w[0], args_w[1], args_w[2]) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) return code.fastcall_4(self.space, self, args_w[0], args_w[1], args_w[2], args_w[3]) elif (nargs | PyCode.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) if nargs < 5: new_frame = self.space.createframe(code, self.w_func_globals, self) for i in funccallunrolling: if i < nargs: new_frame.locals_cells_stack_w[i] = args_w[i] > return new_frame.run() interpreter\function.py:118: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_type_cac...uild\pypy\module\_cffi_backend\test\test_recompiler.py:371]', line 1> at line 5 def run(self): """Start this frame's execution.""" if self.getcode().co_flags & pycode.CO_GENERATOR: from pypy.interpreter.generator import GeneratorIterator return GeneratorIterator(self) else: > return self.execute_frame() interpreter\pyframe.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_type_cac...uild\pypy\module\_cffi_backend\test\test_recompiler.py:371]', line 1> at line 5 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, executioncontext) except OperationError: raise except Exception as e: # general fall-back > raise self._convert_unexpected_exception(e) interpreter\pyframe.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_type_cac...uild\pypy\module\_cffi_backend\test\test_recompiler.py:371]', line 1> at line 5 e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def _convert_unexpected_exception(self, e): from pypy.interpreter import error > operr = error.get_converted_unexpected_exception(self.space, e) interpreter\pyframe.py:943: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_type_cac...uild\pypy\module\_cffi_backend\test\test_recompiler.py:371]', line 1> at line 5 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, > executioncontext) interpreter\pyframe.py:286: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_type_cac...uild\pypy\module\_cffi_backend\test\test_recompiler.py:371]', line 1> at line 5 pycode = <code object test_type_caching, file '[d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:371]', line 1> next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def dispatch(self, pycode, next_instr, ec): # For the sequel, force 'next_instr' to be unsigned for performance next_instr = r_uint(next_instr) co_code = pycode.co_code try: while True: > next_instr = self.handle_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:64: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_type_cac...uild\pypy\module\_cffi_backend\test\test_recompiler.py:371]', line 1> at line 5 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x01\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00|\x00\x00\xc9\x00\x00d\x01\x0...xc9\x01\x00d\x0b\x00\xca\x01\x00|\x03\x00\xc9\x01\x00d\x0b\x00\xca\x01\x00k\t\x00sG\x01t\x02\x00\x82\x01\x00d\x00\x00S' next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def handle_bytecode(self, co_code, next_instr, ec): try: > next_instr = self.dispatch_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:71: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_type_cac...uild\pypy\module\_cffi_backend\test\test_recompiler.py:371]', line 1> at line 5 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x01\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00|\x00\x00\xc9\x00\x00d\x01\x0...xc9\x01\x00d\x0b\x00\xca\x01\x00|\x03\x00\xc9\x01\x00d\x0b\x00\xca\x01\x00k\t\x00sG\x01t\x02\x00\x82\x01\x00d\x00\x00S' next_instr = 18L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> @jit.unroll_safe def dispatch_bytecode(self, co_code, next_instr, ec): while True: self.last_instr = intmask(next_instr) if jit.we_are_jitted(): if self.debugdata: ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) else: # Only reload next_instr from last_instr when something that # can modify it actually ran (trace function or action # dispatcher). In the common case (no trace, positive ticker) # next_instr is unchanged and the round-trip is skipped. _d = self.debugdata if ec.space.reverse_debugging or ( _d is not None and _d.w_f_trace is not None) or ( not we_are_translated() and 'bytecode_only_trace' in ec.__dict__): ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) actionflag = ec.space.actionflag if actionflag.decrement_ticker(TICK_COUNTER_STEP) < 0: actionflag.action_dispatcher(ec, self) next_instr = r_uint(self.last_instr) opcode = ord(co_code[next_instr]) next_instr += 1 if opcode >= HAVE_ARGUMENT: lo = ord(co_code[next_instr]) hi = ord(co_code[next_instr+1]) next_instr += 2 oparg = (hi * 256) | lo else: oparg = 0 # note: the structure of the code here is such that it makes # (after translation) a big "if/elif" chain, which is then # turned into a switch(). while opcode == opcodedesc.EXTENDED_ARG.index: opcode = ord(co_code[next_instr]) if opcode < HAVE_ARGUMENT: raise BytecodeCorruption lo = ord(co_code[next_instr+1]) hi = ord(co_code[next_instr+2]) next_instr += 3 oparg = (oparg * 65536) | (hi * 256) | lo if opcode == opcodedesc.RETURN_VALUE.index: if not self.blockstack_non_empty(): self.frame_finished_execution = True # for generators raise Return w_returnvalue = self.popvalue() block = self.unrollstack(SReturnValue.kind) if block is None: self.pushvalue(w_returnvalue) raise Return else: unroller = SReturnValue(w_returnvalue) next_instr = block.handle(self, unroller) return next_instr # now inside a 'finally' block elif opcode == opcodedesc.END_FINALLY.index: unroller = self.end_finally() if isinstance(unroller, SuspendedUnroller): # go on unrolling the stack block = self.unrollstack(unroller.kind) if block is None: w_result = unroller.nomoreblocks() self.pushvalue(w_result) raise Return else: next_instr = block.handle(self, unroller) return next_instr elif opcode == opcodedesc.JUMP_ABSOLUTE.index: return self.jump_absolute(oparg, ec) elif opcode == opcodedesc.BREAK_LOOP.index: next_instr = self.BREAK_LOOP(oparg, next_instr) elif opcode == opcodedesc.CONTINUE_LOOP.index: return self.CONTINUE_LOOP(oparg, next_instr) elif opcode == opcodedesc.FOR_ITER.index: next_instr = self.FOR_ITER(oparg, next_instr) elif opcode == opcodedesc.JUMP_FORWARD.index: next_instr = self.JUMP_FORWARD(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_FALSE_OR_POP.index: next_instr = self.JUMP_IF_FALSE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_NOT_DEBUG.index: next_instr = self.JUMP_IF_NOT_DEBUG(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_TRUE_OR_POP.index: next_instr = self.JUMP_IF_TRUE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_FALSE.index: next_instr = self.POP_JUMP_IF_FALSE(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_TRUE.index: next_instr = self.POP_JUMP_IF_TRUE(oparg, next_instr) elif opcode == opcodedesc.BINARY_ADD.index: self.BINARY_ADD(oparg, next_instr) elif opcode == opcodedesc.BINARY_AND.index: self.BINARY_AND(oparg, next_instr) elif opcode == opcodedesc.BINARY_DIVIDE.index: self.BINARY_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_FLOOR_DIVIDE.index: self.BINARY_FLOOR_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_LSHIFT.index: self.BINARY_LSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_MODULO.index: self.BINARY_MODULO(oparg, next_instr) elif opcode == opcodedesc.BINARY_MULTIPLY.index: self.BINARY_MULTIPLY(oparg, next_instr) elif opcode == opcodedesc.BINARY_OR.index: self.BINARY_OR(oparg, next_instr) elif opcode == opcodedesc.BINARY_POWER.index: self.BINARY_POWER(oparg, next_instr) elif opcode == opcodedesc.BINARY_RSHIFT.index: self.BINARY_RSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBSCR.index: self.BINARY_SUBSCR(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBTRACT.index: self.BINARY_SUBTRACT(oparg, next_instr) elif opcode == opcodedesc.BINARY_TRUE_DIVIDE.index: self.BINARY_TRUE_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_XOR.index: self.BINARY_XOR(oparg, next_instr) elif opcode == opcodedesc.BUILD_CLASS.index: self.BUILD_CLASS(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST.index: self.BUILD_LIST(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST_FROM_ARG.index: self.BUILD_LIST_FROM_ARG(oparg, next_instr) elif opcode == opcodedesc.BUILD_MAP.index: self.BUILD_MAP(oparg, next_instr) elif opcode == opcodedesc.BUILD_SET.index: self.BUILD_SET(oparg, next_instr) elif opcode == opcodedesc.BUILD_SLICE.index: self.BUILD_SLICE(oparg, next_instr) elif opcode == opcodedesc.BUILD_TUPLE.index: self.BUILD_TUPLE(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION.index: self.CALL_FUNCTION(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_KW.index: self.CALL_FUNCTION_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR.index: self.CALL_FUNCTION_VAR(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR_KW.index: self.CALL_FUNCTION_VAR_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_METHOD.index: > self.CALL_METHOD(oparg, next_instr) interpreter\pyopcode.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ f = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_type_cac...uild\pypy\module\_cffi_backend\test\test_recompiler.py:371]', line 1> at line 5 oparg = 3, ignored = (18L,), n_args = 3, n_kwargs = 0, w_self = None @jit.unroll_safe def CALL_METHOD(f, oparg, *ignored): # opargs contains the arg, and kwarg count, excluding the implicit 'self' n_args = oparg & 0xff n_kwargs = (oparg >> 8) & 0xff w_self = f.peekvalue_maybe_none(n_args + (2 * n_kwargs)) n = n_args + (w_self is not None) if not n_kwargs: w_callable = f.peekvalue(n_args + (2 * n_kwargs) + 1) w_result = f.space.call_valuestack( > w_callable, n, f, methodcall=w_self is not None, dropvalues=n_args + 2) objspace\std\callmethod.py:96: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_type_cac...uild\pypy\module\_cffi_backend\test\test_recompiler.py:371]', line 1> at line 5 dropvalues = 5, methodcall = False def call_valuestack(self, w_func, nargs, frame, dropvalues, methodcall=False): # methodcall is only used for better error messages in argument.py from pypy.interpreter.function import Function, Method, is_builtin_code if frame.get_is_being_profiled() and is_builtin_code(w_func): # XXX: this code is copied&pasted :-( from the slow path below # call_valuestack(). args = frame.make_arguments(nargs) frame.dropvalues(dropvalues) return self.call_args_and_c_profile(frame, w_func, args) if not self.config.objspace.disable_call_speedhacks: # start of hack for performance if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: w_func = w_func.w_function # reuse callable stack place for w_inst frame.settopvalue(w_inst, nargs) nargs += 1 methodcall = True elif nargs > 0 and ( self.abstract_isinstance_w(frame.peekvalue(nargs-1), # :-( w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): return w_func.funccall_valuestack( > nargs, frame, methodcall=methodcall, dropvalues=dropvalues) interpreter\baseobjspace.py:1243: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_type_cac...uild\pypy\module\_cffi_backend\test\test_recompiler.py:371]', line 1> at line 5 dropvalues = 5, methodcall = False def funccall_valuestack(self, nargs, frame, dropvalues, methodcall=False): # speed hack # methodcall is only for better error messages from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit # if (jit.we_are_jitted() and code is self.space._code_of_sys_exc_info and nargs == 0): frame.dropvalues(dropvalues) from pypy.module.sys.vm import exc_info_direct return exc_info_direct(self.space, frame) # fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: f_0 = frame.peekvalue(0) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, f_0) elif nargs == 2: f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, f_1, f_0) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) frame.dropvalues(dropvalues) return code.fastcall_3(self.space, self, f_2, f_1, f_0) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) f_3 = frame.peekvalue(3) frame.dropvalues(dropvalues) return code.fastcall_4(self.space, self, f_3, f_2, f_1, f_0) elif (nargs | Code.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) return self._flat_pycall(code, nargs, frame, dropvalues) elif fast_natural_arity & Code.FLATPYCALL: natural_arity = fast_natural_arity & 0xff if natural_arity > nargs >= natural_arity - len(self.defs_w): assert isinstance(code, PyCode) return self._flat_pycall_defaults(code, nargs, frame, natural_arity - nargs, dropvalues) elif fast_natural_arity == Code.PASSTHROUGHARGS1 and nargs >= 1: assert isinstance(code, gateway.BuiltinCodePassThroughArguments1) w_obj = frame.peekvalue(nargs-1) args = frame.make_arguments(nargs-1) frame.dropvalues(dropvalues) return code.funcrun_obj(self, w_obj, args) args = frame.make_arguments(nargs, methodcall=methodcall) frame.dropvalues(dropvalues) > return self.call_args(args) interpreter\function.py:190: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('struct foo_s;'), W_BytesObject('test_type_caching_1'), W_BytesObject('struct foo_s;')]) def call_args(self, args): # delegate activation to code > w_res = self.getcode().funcrun(self, args) interpreter\function.py:68: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('struct foo_s;'), W_BytesObject('test_type_caching_1'), W_BytesObject('struct foo_s;')]) def funcrun(self, func, args): > return BuiltinCode.funcrun_obj(self, func, None, args) interpreter\gateway.py:781: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('struct foo_s;'), W_BytesObject('test_type_caching_1'), W_BytesObject('struct foo_s;')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: w_result = activation._run(space, scope_w) except DescrMismatch: if w_obj is not None: args = args.prepend(w_obj) return self._type_unwrap_mismatch(space, args) except Exception as e: > self.handle_exception(space, e) interpreter\gateway.py:795: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> space = StdObjSpace e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def handle_exception(self, space, e): try: if not we_are_translated(): raise raise e except OperationError: raise except Exception as e: # general fall-back from pypy.interpreter import error > raise error.get_converted_unexpected_exception(space, e) interpreter\gateway.py:819: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('struct foo_s;'), W_BytesObject('test_type_caching_1'), W_BytesObject('struct foo_s;')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: > w_result = activation._run(space, scope_w) interpreter\gateway.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinActivation_UwS_ObjSpace_text_text_text_W_Root_W_Root_W_Root_int_W_Root object at 0x000002791c13af38> space = StdObjSpace scope_w = [W_BytesObject('struct foo_s;'), W_BytesObject('test_type_caching_1'), W_BytesObject('struct foo_s;'), None, None, None, ...] def _run(self, space, scope_w): > return self.behavior(space, space.text_w(scope_w[0]), space.text_w(scope_w[1]), space.text_w(scope_w[2]), scope_w[3], scope_w[4], scope_w[5], space.gateway_int_w(scope_w[6]), scope_w[7]) <3152-codegen d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\rpython\tool\sourcetools.py:200>:3: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace, cdef = 'struct foo_s;' module_name = '_CFFI_test_type_caching_1', source = 'struct foo_s;' w_includes = None, w_extra_source = None, w_min_version = None, packed = 0 w_extra_compile_args = None @unwrap_spec(cdef='text', module_name='text', source='text', packed=int) def prepare(space, cdef, module_name, source, w_includes=None, w_extra_source=None, w_min_version=None, packed=False, w_extra_compile_args=None): try: import cffi from cffi import FFI # <== the system one, which from cffi import recompiler # needs to be at least cffi 1.0.4 from cffi import ffiplatform except ImportError: pytest.skip("system cffi module not found or older than 1.0.0") if w_min_version is None: min_version = (1, 4, 0) else: min_version = tuple(space.unwrap(w_min_version)) if cffi.__version_info__ < min_version: pytest.skip("system cffi module needs to be at least %s, got %s" % ( min_version, cffi.__version_info__)) space.appexec([], """(): import _cffi_backend # force it to be initialized """) includes = [] if w_includes: includes += space.unpackiterable(w_includes) assert module_name.startswith('test_') module_name = '_CFFI_' + module_name rdir = udir.ensure('recompiler', dir=1) rdir.join('Python.h').write( '#include <stdio.h>\n' '#define PYPY_VERSION XX\n' '#define PyMODINIT_FUNC /*exported*/ void\n' ) path = module_name.replace('.', os.sep) if '.' in module_name: subrdir = rdir.join(module_name[:module_name.index('.')]) os.mkdir(str(subrdir)) else: subrdir = rdir c_file = str(rdir.join('%s.c' % path)) ffi = FFI() for include_ffi_object in includes: ffi.include(include_ffi_object._test_recompiler_source_ffi) ffi.cdef(cdef, packed=packed) ffi.set_source(module_name, source) ffi.emit_c_code(c_file) base_module_name = module_name.split('.')[-1] sources = [] if w_extra_source is not None: sources.append(space.str_w(w_extra_source)) kwargs = {} # GCC 14 promotes -Wincompatible-pointer-types from a warning to an error # by default, which breaks cffi's intentionally-mismatched field-check # probes (e.g. test_misdeclared_field_1). Keep it a warning so the module # compiles and cffi's runtime checks can run. extra = ['-Wno-error=incompatible-pointer-types'] if w_extra_compile_args is not None: extra = extra + space.unwrap(w_extra_compile_args) kwargs['extra_compile_args'] = extra ext = ffiplatform.get_extension(c_file, module_name, include_dirs=[str(rdir)], export_symbols=['_cffi_pypyinit_' + base_module_name], sources=sources, **kwargs) > ffiplatform.compile(str(rdir), ext) module\_cffi_backend\test\test_recompiler.py:86: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x00000279287cd260> compiler_verbose = 0, debug = None def compile(tmpdir, ext, compiler_verbose=0, debug=None): """Compile a C extension module using distutils.""" saved_environ = os.environ.copy() try: > outputfilename = _build(tmpdir, ext, compiler_verbose, debug) d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x00000279287cd260> compiler_verbose = 0, debug = 0 def _build(tmpdir, ext, compiler_verbose=0, debug=None): # XXX compact but horrible :-( from cffi._shimmed_dist_utils import Distribution, CompileError, LinkError, set_threshold, set_verbosity dist = Distribution({'ext_modules': [ext]}) dist.parse_config_files() options = dist.get_option_dict('build_ext') if debug is None: debug = sys.flags.debug options['debug'] = ('ffiplatform', debug) options['force'] = ('ffiplatform', True) options['build_lib'] = ('ffiplatform', tmpdir) options['build_temp'] = ('ffiplatform', tmpdir) # try: old_level = set_threshold(0) or 0 try: set_verbosity(compiler_verbose) dist.run_command('build_ext') cmd_obj = dist.get_command_obj('build_ext') [soname] = cmd_obj.get_outputs() finally: set_threshold(old_level) except (CompileError, LinkError) as e: > raise VerificationError('%s: %s' % (e.__class__.__name__, e)) E VerificationError: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2 d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:54: VerificationError ---------------------------- Captured stdout call ----------------------------- generating d:\systemtemp\pytest\usession-main-595\recompiler\_CFFI_test_type_caching_1.c ---------------------------- Captured stderr call ----------------------------- cl : Command line error D8021 : invalid numeric argument '/Wno-error=incompatible-pointer-types' _____________________ AppTestRecompiler.test_verify_enum ______________________ self = <CallInfo when='call' exception: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2> func = <function <lambda> at 0x0000027925c403e0>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ..\_pytest\runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ..\_pytest\runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_verify_enum'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_verify_enum'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ..\_pytest\vendored_packages\pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00000279153616a8> hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_verify_enum'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_verify_enum'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ..\_pytest\vendored_packages\pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_verify_enum'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_verify_enum'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ..\_pytest\vendored_packages\pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_verify_enum'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x0000027928790f48> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...erify_enum'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002791cacbae0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002791cacbae0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...erify_enum'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_verify_enum'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x0000027928790ef8> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...erify_enum'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002791cacb9a0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002791cacb9a0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...erify_enum'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_verify_enum'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ..\_pytest\vendored_packages\pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_verify_enum'> def pytest_runtest_call(item): try: > item.runtest() ..\_pytest\runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_verify_enum'> def runtest(self): target = self.obj if self.config.option.runappdirect: return target() space = target.im_self.space filename = self._getdynfilename(target) func = app2interp_temp(target.im_func, filename=filename) w_instance = self.parent.w_instance > self.execute_appex(space, func, space, w_instance) tool\pytest\apptest.py:89: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_verify_enum'>, space = StdObjSpace target = <function test_verify_enum at 0x0000027925c40458> args = (StdObjSpace, <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>) def execute_appex(self, space, target, *args): self.space = space try: > target(*args) tool\pytest\apptest.py:30: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) w_func = <Function test_verify_enum> args = <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8> def appcaller(space, *args_w): if not isinstance(space, ObjSpace): raise TypeError("first argument must be a space instance.") # the last argument can be an Arguments w_func = self.wget(space, name) if not args_w: return space.call_function(w_func) else: args = args_w[-1] assert args is not None if not isinstance(args, Arguments): > return space.call_function(w_func, *args_w) interpreter\gateway.py:1227: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <Function test_verify_enum> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) nargs = 1, Function = <class 'pypy.interpreter.function.Function'> Method = <class 'pypy.interpreter.function.Method'> def call_function(self, w_func, *args_w): nargs = len(args_w) # used for pruning funccall versions if not self.config.objspace.disable_call_speedhacks and nargs < 5: # start of hack for performance from pypy.interpreter.function import Function, Method if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: if nargs < 4: func = w_func.w_function if isinstance(func, Function): return func.funccall(w_inst, *args_w) elif args_w and ( self.abstract_isinstance_w(args_w[0], w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): > return w_func.funccall(*args_w) interpreter\baseobjspace.py:1210: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <Function test_verify_enum> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) gateway = <module 'pypy.interpreter.gateway' from 'd:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\interpreter\\gateway.pyc'> PyCode = <class 'pypy.interpreter.pycode.PyCode'> code = <code object test_verify_enum, file '[d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:392]', line 1> def funccall(self, *args_w): # speed hack from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit nargs = len(args_w) fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, args_w[0]) elif nargs == 2: assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, args_w[0], args_w[1]) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) return code.fastcall_3(self.space, self, args_w[0], args_w[1], args_w[2]) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) return code.fastcall_4(self.space, self, args_w[0], args_w[1], args_w[2], args_w[3]) elif (nargs | PyCode.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) if nargs < 5: new_frame = self.space.createframe(code, self.w_func_globals, self) for i in funccallunrolling: if i < nargs: new_frame.locals_cells_stack_w[i] = args_w[i] > return new_frame.run() interpreter\function.py:118: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_verify_e...uild\pypy\module\_cffi_backend\test\test_recompiler.py:392]', line 1> at line 7 def run(self): """Start this frame's execution.""" if self.getcode().co_flags & pycode.CO_GENERATOR: from pypy.interpreter.generator import GeneratorIterator return GeneratorIterator(self) else: > return self.execute_frame() interpreter\pyframe.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_verify_e...uild\pypy\module\_cffi_backend\test\test_recompiler.py:392]', line 1> at line 7 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, executioncontext) except OperationError: raise except Exception as e: # general fall-back > raise self._convert_unexpected_exception(e) interpreter\pyframe.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_verify_e...uild\pypy\module\_cffi_backend\test\test_recompiler.py:392]', line 1> at line 7 e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def _convert_unexpected_exception(self, e): from pypy.interpreter import error > operr = error.get_converted_unexpected_exception(self.space, e) interpreter\pyframe.py:943: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_verify_e...uild\pypy\module\_cffi_backend\test\test_recompiler.py:392]', line 1> at line 7 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, > executioncontext) interpreter\pyframe.py:286: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_verify_e...uild\pypy\module\_cffi_backend\test\test_recompiler.py:392]', line 1> at line 7 pycode = <code object test_verify_enum, file '[d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:392]', line 1> next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def dispatch(self, pycode, next_instr, ec): # For the sequel, force 'next_instr' to be unsigned for performance next_instr = r_uint(next_instr) co_code = pycode.co_code try: while True: > next_instr = self.handle_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:64: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_verify_e...uild\pypy\module\_cffi_backend\test\test_recompiler.py:392]', line 1> at line 7 co_code = 'd\x01\x00d\x00\x00l\x00\x00}\x01\x00|\x00\x00\xc9\x01\x00d\x02\x00d\x03\x00d\x04\x00|\x01\x00j\x02\x00\x16d\x05\x00\x...|\x02\x00\xc9\x0b\x00d\x06\x00d\x08\x00\xca\x02\x00\x83\x01\x00d\x0c\x00k\x02\x00s!\x01t\x05\x00\x82\x01\x00d\x00\x00S' next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def handle_bytecode(self, co_code, next_instr, ec): try: > next_instr = self.dispatch_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:71: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_verify_e...uild\pypy\module\_cffi_backend\test\test_recompiler.py:392]', line 1> at line 7 co_code = 'd\x01\x00d\x00\x00l\x00\x00}\x01\x00|\x00\x00\xc9\x01\x00d\x02\x00d\x03\x00d\x04\x00|\x01\x00j\x02\x00\x16d\x05\x00\x...|\x02\x00\xc9\x0b\x00d\x06\x00d\x08\x00\xca\x02\x00\x83\x01\x00d\x0c\x00k\x02\x00s!\x01t\x05\x00\x82\x01\x00d\x00\x00S' next_instr = 41L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> @jit.unroll_safe def dispatch_bytecode(self, co_code, next_instr, ec): while True: self.last_instr = intmask(next_instr) if jit.we_are_jitted(): if self.debugdata: ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) else: # Only reload next_instr from last_instr when something that # can modify it actually ran (trace function or action # dispatcher). In the common case (no trace, positive ticker) # next_instr is unchanged and the round-trip is skipped. _d = self.debugdata if ec.space.reverse_debugging or ( _d is not None and _d.w_f_trace is not None) or ( not we_are_translated() and 'bytecode_only_trace' in ec.__dict__): ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) actionflag = ec.space.actionflag if actionflag.decrement_ticker(TICK_COUNTER_STEP) < 0: actionflag.action_dispatcher(ec, self) next_instr = r_uint(self.last_instr) opcode = ord(co_code[next_instr]) next_instr += 1 if opcode >= HAVE_ARGUMENT: lo = ord(co_code[next_instr]) hi = ord(co_code[next_instr+1]) next_instr += 2 oparg = (hi * 256) | lo else: oparg = 0 # note: the structure of the code here is such that it makes # (after translation) a big "if/elif" chain, which is then # turned into a switch(). while opcode == opcodedesc.EXTENDED_ARG.index: opcode = ord(co_code[next_instr]) if opcode < HAVE_ARGUMENT: raise BytecodeCorruption lo = ord(co_code[next_instr+1]) hi = ord(co_code[next_instr+2]) next_instr += 3 oparg = (oparg * 65536) | (hi * 256) | lo if opcode == opcodedesc.RETURN_VALUE.index: if not self.blockstack_non_empty(): self.frame_finished_execution = True # for generators raise Return w_returnvalue = self.popvalue() block = self.unrollstack(SReturnValue.kind) if block is None: self.pushvalue(w_returnvalue) raise Return else: unroller = SReturnValue(w_returnvalue) next_instr = block.handle(self, unroller) return next_instr # now inside a 'finally' block elif opcode == opcodedesc.END_FINALLY.index: unroller = self.end_finally() if isinstance(unroller, SuspendedUnroller): # go on unrolling the stack block = self.unrollstack(unroller.kind) if block is None: w_result = unroller.nomoreblocks() self.pushvalue(w_result) raise Return else: next_instr = block.handle(self, unroller) return next_instr elif opcode == opcodedesc.JUMP_ABSOLUTE.index: return self.jump_absolute(oparg, ec) elif opcode == opcodedesc.BREAK_LOOP.index: next_instr = self.BREAK_LOOP(oparg, next_instr) elif opcode == opcodedesc.CONTINUE_LOOP.index: return self.CONTINUE_LOOP(oparg, next_instr) elif opcode == opcodedesc.FOR_ITER.index: next_instr = self.FOR_ITER(oparg, next_instr) elif opcode == opcodedesc.JUMP_FORWARD.index: next_instr = self.JUMP_FORWARD(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_FALSE_OR_POP.index: next_instr = self.JUMP_IF_FALSE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_NOT_DEBUG.index: next_instr = self.JUMP_IF_NOT_DEBUG(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_TRUE_OR_POP.index: next_instr = self.JUMP_IF_TRUE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_FALSE.index: next_instr = self.POP_JUMP_IF_FALSE(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_TRUE.index: next_instr = self.POP_JUMP_IF_TRUE(oparg, next_instr) elif opcode == opcodedesc.BINARY_ADD.index: self.BINARY_ADD(oparg, next_instr) elif opcode == opcodedesc.BINARY_AND.index: self.BINARY_AND(oparg, next_instr) elif opcode == opcodedesc.BINARY_DIVIDE.index: self.BINARY_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_FLOOR_DIVIDE.index: self.BINARY_FLOOR_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_LSHIFT.index: self.BINARY_LSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_MODULO.index: self.BINARY_MODULO(oparg, next_instr) elif opcode == opcodedesc.BINARY_MULTIPLY.index: self.BINARY_MULTIPLY(oparg, next_instr) elif opcode == opcodedesc.BINARY_OR.index: self.BINARY_OR(oparg, next_instr) elif opcode == opcodedesc.BINARY_POWER.index: self.BINARY_POWER(oparg, next_instr) elif opcode == opcodedesc.BINARY_RSHIFT.index: self.BINARY_RSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBSCR.index: self.BINARY_SUBSCR(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBTRACT.index: self.BINARY_SUBTRACT(oparg, next_instr) elif opcode == opcodedesc.BINARY_TRUE_DIVIDE.index: self.BINARY_TRUE_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_XOR.index: self.BINARY_XOR(oparg, next_instr) elif opcode == opcodedesc.BUILD_CLASS.index: self.BUILD_CLASS(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST.index: self.BUILD_LIST(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST_FROM_ARG.index: self.BUILD_LIST_FROM_ARG(oparg, next_instr) elif opcode == opcodedesc.BUILD_MAP.index: self.BUILD_MAP(oparg, next_instr) elif opcode == opcodedesc.BUILD_SET.index: self.BUILD_SET(oparg, next_instr) elif opcode == opcodedesc.BUILD_SLICE.index: self.BUILD_SLICE(oparg, next_instr) elif opcode == opcodedesc.BUILD_TUPLE.index: self.BUILD_TUPLE(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION.index: self.CALL_FUNCTION(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_KW.index: self.CALL_FUNCTION_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR.index: self.CALL_FUNCTION_VAR(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR_KW.index: self.CALL_FUNCTION_VAR_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_METHOD.index: > self.CALL_METHOD(oparg, next_instr) interpreter\pyopcode.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ f = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_verify_e...uild\pypy\module\_cffi_backend\test\test_recompiler.py:392]', line 1> at line 7 oparg = 3, ignored = (41L,), n_args = 3, n_kwargs = 0, w_self = None @jit.unroll_safe def CALL_METHOD(f, oparg, *ignored): # opargs contains the arg, and kwarg count, excluding the implicit 'self' n_args = oparg & 0xff n_kwargs = (oparg >> 8) & 0xff w_self = f.peekvalue_maybe_none(n_args + (2 * n_kwargs)) n = n_args + (w_self is not None) if not n_kwargs: w_callable = f.peekvalue(n_args + (2 * n_kwargs) + 1) w_result = f.space.call_valuestack( > w_callable, n, f, methodcall=w_self is not None, dropvalues=n_args + 2) objspace\std\callmethod.py:96: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_verify_e...uild\pypy\module\_cffi_backend\test\test_recompiler.py:392]', line 1> at line 7 dropvalues = 5, methodcall = False def call_valuestack(self, w_func, nargs, frame, dropvalues, methodcall=False): # methodcall is only used for better error messages in argument.py from pypy.interpreter.function import Function, Method, is_builtin_code if frame.get_is_being_profiled() and is_builtin_code(w_func): # XXX: this code is copied&pasted :-( from the slow path below # call_valuestack(). args = frame.make_arguments(nargs) frame.dropvalues(dropvalues) return self.call_args_and_c_profile(frame, w_func, args) if not self.config.objspace.disable_call_speedhacks: # start of hack for performance if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: w_func = w_func.w_function # reuse callable stack place for w_inst frame.settopvalue(w_inst, nargs) nargs += 1 methodcall = True elif nargs > 0 and ( self.abstract_isinstance_w(frame.peekvalue(nargs-1), # :-( w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): return w_func.funccall_valuestack( > nargs, frame, methodcall=methodcall, dropvalues=dropvalues) interpreter\baseobjspace.py:1243: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_verify_e...uild\pypy\module\_cffi_backend\test\test_recompiler.py:392]', line 1> at line 7 dropvalues = 5, methodcall = False def funccall_valuestack(self, nargs, frame, dropvalues, methodcall=False): # speed hack # methodcall is only for better error messages from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit # if (jit.we_are_jitted() and code is self.space._code_of_sys_exc_info and nargs == 0): frame.dropvalues(dropvalues) from pypy.module.sys.vm import exc_info_direct return exc_info_direct(self.space, frame) # fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: f_0 = frame.peekvalue(0) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, f_0) elif nargs == 2: f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, f_1, f_0) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) frame.dropvalues(dropvalues) return code.fastcall_3(self.space, self, f_2, f_1, f_0) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) f_3 = frame.peekvalue(3) frame.dropvalues(dropvalues) return code.fastcall_4(self.space, self, f_3, f_2, f_1, f_0) elif (nargs | Code.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) return self._flat_pycall(code, nargs, frame, dropvalues) elif fast_natural_arity & Code.FLATPYCALL: natural_arity = fast_natural_arity & 0xff if natural_arity > nargs >= natural_arity - len(self.defs_w): assert isinstance(code, PyCode) return self._flat_pycall_defaults(code, nargs, frame, natural_arity - nargs, dropvalues) elif fast_natural_arity == Code.PASSTHROUGHARGS1 and nargs >= 1: assert isinstance(code, gateway.BuiltinCodePassThroughArguments1) w_obj = frame.peekvalue(nargs-1) args = frame.make_arguments(nargs-1) frame.dropvalues(dropvalues) return code.funcrun_obj(self, w_obj, args) args = frame.make_arguments(nargs, methodcall=methodcall) frame.dropvalues(dropvalues) > return self.call_args(args) interpreter\function.py:190: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('enum e1 { B1, A1, ... }; enum e2 { B2, A2, ... };'),...sObject('enum e1 { A1, B1, C1=9223372036854775807 };enum e2 { A2, B2, C2 };')]) def call_args(self, args): # delegate activation to code > w_res = self.getcode().funcrun(self, args) interpreter\function.py:68: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('enum e1 { B1, A1, ... }; enum e2 { B2, A2, ... };'),...sObject('enum e1 { A1, B1, C1=9223372036854775807 };enum e2 { A2, B2, C2 };')]) def funcrun(self, func, args): > return BuiltinCode.funcrun_obj(self, func, None, args) interpreter\gateway.py:781: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('enum e1 { B1, A1, ... }; enum e2 { B2, A2, ... };'),...sObject('enum e1 { A1, B1, C1=9223372036854775807 };enum e2 { A2, B2, C2 };')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: w_result = activation._run(space, scope_w) except DescrMismatch: if w_obj is not None: args = args.prepend(w_obj) return self._type_unwrap_mismatch(space, args) except Exception as e: > self.handle_exception(space, e) interpreter\gateway.py:795: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> space = StdObjSpace e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def handle_exception(self, space, e): try: if not we_are_translated(): raise raise e except OperationError: raise except Exception as e: # general fall-back from pypy.interpreter import error > raise error.get_converted_unexpected_exception(space, e) interpreter\gateway.py:819: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('enum e1 { B1, A1, ... }; enum e2 { B2, A2, ... };'),...sObject('enum e1 { A1, B1, C1=9223372036854775807 };enum e2 { A2, B2, C2 };')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: > w_result = activation._run(space, scope_w) interpreter\gateway.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinActivation_UwS_ObjSpace_text_text_text_W_Root_W_Root_W_Root_int_W_Root object at 0x000002791c13af38> space = StdObjSpace scope_w = [W_BytesObject('enum e1 { B1, A1, ... }; enum e2 { B2, A2, ... };'), W_BytesObject('test_verify_enum'), W_BytesObject('enum e1 { A1, B1, C1=9223372036854775807 };enum e2 { A2, B2, C2 };'), None, None, None, ...] def _run(self, space, scope_w): > return self.behavior(space, space.text_w(scope_w[0]), space.text_w(scope_w[1]), space.text_w(scope_w[2]), scope_w[3], scope_w[4], scope_w[5], space.gateway_int_w(scope_w[6]), scope_w[7]) <3152-codegen d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\rpython\tool\sourcetools.py:200>:3: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace, cdef = 'enum e1 { B1, A1, ... }; enum e2 { B2, A2, ... };' module_name = '_CFFI_test_verify_enum' source = 'enum e1 { A1, B1, C1=9223372036854775807 };enum e2 { A2, B2, C2 };' w_includes = None, w_extra_source = None, w_min_version = None, packed = 0 w_extra_compile_args = None @unwrap_spec(cdef='text', module_name='text', source='text', packed=int) def prepare(space, cdef, module_name, source, w_includes=None, w_extra_source=None, w_min_version=None, packed=False, w_extra_compile_args=None): try: import cffi from cffi import FFI # <== the system one, which from cffi import recompiler # needs to be at least cffi 1.0.4 from cffi import ffiplatform except ImportError: pytest.skip("system cffi module not found or older than 1.0.0") if w_min_version is None: min_version = (1, 4, 0) else: min_version = tuple(space.unwrap(w_min_version)) if cffi.__version_info__ < min_version: pytest.skip("system cffi module needs to be at least %s, got %s" % ( min_version, cffi.__version_info__)) space.appexec([], """(): import _cffi_backend # force it to be initialized """) includes = [] if w_includes: includes += space.unpackiterable(w_includes) assert module_name.startswith('test_') module_name = '_CFFI_' + module_name rdir = udir.ensure('recompiler', dir=1) rdir.join('Python.h').write( '#include <stdio.h>\n' '#define PYPY_VERSION XX\n' '#define PyMODINIT_FUNC /*exported*/ void\n' ) path = module_name.replace('.', os.sep) if '.' in module_name: subrdir = rdir.join(module_name[:module_name.index('.')]) os.mkdir(str(subrdir)) else: subrdir = rdir c_file = str(rdir.join('%s.c' % path)) ffi = FFI() for include_ffi_object in includes: ffi.include(include_ffi_object._test_recompiler_source_ffi) ffi.cdef(cdef, packed=packed) ffi.set_source(module_name, source) ffi.emit_c_code(c_file) base_module_name = module_name.split('.')[-1] sources = [] if w_extra_source is not None: sources.append(space.str_w(w_extra_source)) kwargs = {} # GCC 14 promotes -Wincompatible-pointer-types from a warning to an error # by default, which breaks cffi's intentionally-mismatched field-check # probes (e.g. test_misdeclared_field_1). Keep it a warning so the module # compiles and cffi's runtime checks can run. extra = ['-Wno-error=incompatible-pointer-types'] if w_extra_compile_args is not None: extra = extra + space.unwrap(w_extra_compile_args) kwargs['extra_compile_args'] = extra ext = ffiplatform.get_extension(c_file, module_name, include_dirs=[str(rdir)], export_symbols=['_cffi_pypyinit_' + base_module_name], sources=sources, **kwargs) > ffiplatform.compile(str(rdir), ext) module\_cffi_backend\test\test_recompiler.py:86: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x000002791abf1ca0> compiler_verbose = 0, debug = None def compile(tmpdir, ext, compiler_verbose=0, debug=None): """Compile a C extension module using distutils.""" saved_environ = os.environ.copy() try: > outputfilename = _build(tmpdir, ext, compiler_verbose, debug) d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x000002791abf1ca0> compiler_verbose = 0, debug = 0 def _build(tmpdir, ext, compiler_verbose=0, debug=None): # XXX compact but horrible :-( from cffi._shimmed_dist_utils import Distribution, CompileError, LinkError, set_threshold, set_verbosity dist = Distribution({'ext_modules': [ext]}) dist.parse_config_files() options = dist.get_option_dict('build_ext') if debug is None: debug = sys.flags.debug options['debug'] = ('ffiplatform', debug) options['force'] = ('ffiplatform', True) options['build_lib'] = ('ffiplatform', tmpdir) options['build_temp'] = ('ffiplatform', tmpdir) # try: old_level = set_threshold(0) or 0 try: set_verbosity(compiler_verbose) dist.run_command('build_ext') cmd_obj = dist.get_command_obj('build_ext') [soname] = cmd_obj.get_outputs() finally: set_threshold(old_level) except (CompileError, LinkError) as e: > raise VerificationError('%s: %s' % (e.__class__.__name__, e)) E VerificationError: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2 d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:54: VerificationError ---------------------------- Captured stdout call ----------------------------- generating d:\systemtemp\pytest\usession-main-595\recompiler\_CFFI_test_verify_enum.c ---------------------------- Captured stderr call ----------------------------- cl : Command line error D8021 : invalid numeric argument '/Wno-error=incompatible-pointer-types' ___________ AppTestRecompiler.test_dotdotdot_length_of_array_field ____________ self = <CallInfo when='call' exception: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2> func = <function <lambda> at 0x000002792b268278>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ..\_pytest\runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ..\_pytest\runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_dotdotdot_length_of_array_field...ll__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_dotdotdot_length_of_array_field'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ..\_pytest\vendored_packages\pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00000279153616a8> hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_dotdotdot_length_of_array_field...ll__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_dotdotdot_length_of_array_field'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ..\_pytest\vendored_packages\pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_dotdotdot_length_of_array_field...ll__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_dotdotdot_length_of_array_field'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ..\_pytest\vendored_packages\pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_dotdotdot_length_of_array_field'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791fd818d0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...rray_field'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027928a43920> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027928a43920> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...rray_field'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_dotdotdot_length_of_array_field'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791fd811a0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...rray_field'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027928a438e0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027928a438e0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...rray_field'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_dotdotdot_length_of_array_field'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ..\_pytest\vendored_packages\pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_dotdotdot_length_of_array_field'> def pytest_runtest_call(item): try: > item.runtest() ..\_pytest\runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_dotdotdot_length_of_array_field'> def runtest(self): target = self.obj if self.config.option.runappdirect: return target() space = target.im_self.space filename = self._getdynfilename(target) func = app2interp_temp(target.im_func, filename=filename) w_instance = self.parent.w_instance > self.execute_appex(space, func, space, w_instance) tool\pytest\apptest.py:89: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_dotdotdot_length_of_array_field'> space = StdObjSpace target = <function test_dotdotdot_length_of_array_field at 0x000002792b2682f0> args = (StdObjSpace, <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>) def execute_appex(self, space, target, *args): self.space = space try: > target(*args) tool\pytest\apptest.py:30: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) w_func = <Function test_dotdotdot_length_of_array_field> args = <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8> def appcaller(space, *args_w): if not isinstance(space, ObjSpace): raise TypeError("first argument must be a space instance.") # the last argument can be an Arguments w_func = self.wget(space, name) if not args_w: return space.call_function(w_func) else: args = args_w[-1] assert args is not None if not isinstance(args, Arguments): > return space.call_function(w_func, *args_w) interpreter\gateway.py:1227: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <Function test_dotdotdot_length_of_array_field> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) nargs = 1, Function = <class 'pypy.interpreter.function.Function'> Method = <class 'pypy.interpreter.function.Method'> def call_function(self, w_func, *args_w): nargs = len(args_w) # used for pruning funccall versions if not self.config.objspace.disable_call_speedhacks and nargs < 5: # start of hack for performance from pypy.interpreter.function import Function, Method if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: if nargs < 4: func = w_func.w_function if isinstance(func, Function): return func.funccall(w_inst, *args_w) elif args_w and ( self.abstract_isinstance_w(args_w[0], w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): > return w_func.funccall(*args_w) interpreter\baseobjspace.py:1210: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <Function test_dotdotdot_length_of_array_field> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) gateway = <module 'pypy.interpreter.gateway' from 'd:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\interpreter\\gateway.pyc'> PyCode = <class 'pypy.interpreter.pycode.PyCode'> code = <code object test_dotdotdot_length_of_array_field, file '[d:\pypy_stuff\buildb...n-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:409]', line 1> def funccall(self, *args_w): # speed hack from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit nargs = len(args_w) fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, args_w[0]) elif nargs == 2: assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, args_w[0], args_w[1]) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) return code.fastcall_3(self.space, self, args_w[0], args_w[1], args_w[2]) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) return code.fastcall_4(self.space, self, args_w[0], args_w[1], args_w[2], args_w[3]) elif (nargs | PyCode.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) if nargs < 5: new_frame = self.space.createframe(code, self.w_func_globals, self) for i in funccallunrolling: if i < nargs: new_frame.locals_cells_stack_w[i] = args_w[i] > return new_frame.run() interpreter\function.py:118: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_dotdotdo...uild\pypy\module\_cffi_backend\test\test_recompiler.py:409]', line 1> at line 5 def run(self): """Start this frame's execution.""" if self.getcode().co_flags & pycode.CO_GENERATOR: from pypy.interpreter.generator import GeneratorIterator return GeneratorIterator(self) else: > return self.execute_frame() interpreter\pyframe.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_dotdotdo...uild\pypy\module\_cffi_backend\test\test_recompiler.py:409]', line 1> at line 5 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, executioncontext) except OperationError: raise except Exception as e: # general fall-back > raise self._convert_unexpected_exception(e) interpreter\pyframe.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_dotdotdo...uild\pypy\module\_cffi_backend\test\test_recompiler.py:409]', line 1> at line 5 e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def _convert_unexpected_exception(self, e): from pypy.interpreter import error > operr = error.get_converted_unexpected_exception(self.space, e) interpreter\pyframe.py:943: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_dotdotdo...uild\pypy\module\_cffi_backend\test\test_recompiler.py:409]', line 1> at line 5 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, > executioncontext) interpreter\pyframe.py:286: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_dotdotdo...uild\pypy\module\_cffi_backend\test\test_recompiler.py:409]', line 1> at line 5 pycode = <code object test_dotdotdot_length_of_array_field, file '[d:\pypy_stuff\buildb...n-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:409]', line 1> next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def dispatch(self, pycode, next_instr, ec): # For the sequel, force 'next_instr' to be unsigned for performance next_instr = r_uint(next_instr) co_code = pycode.co_code try: while True: > next_instr = self.handle_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:64: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_dotdotdo...uild\pypy\module\_cffi_backend\test\test_recompiler.py:409]', line 1> at line 5 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00\xcc\x1b\x00|\x01\x00\xc9\x01...x00t\x02\x00\x82\x01\x00t\x06\x00t\x07\x00d\n\x00\x83\x02\x00\x01t\x06\x00t\x07\x00d\x0b\x00\x83\x02\x00\x01d\x00\x00S' next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def handle_bytecode(self, co_code, next_instr, ec): try: > next_instr = self.dispatch_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:71: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_dotdotdo...uild\pypy\module\_cffi_backend\test\test_recompiler.py:409]', line 1> at line 5 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00\xcc\x1b\x00|\x01\x00\xc9\x01...x00t\x02\x00\x82\x01\x00t\x06\x00t\x07\x00d\n\x00\x83\x02\x00\x01t\x06\x00t\x07\x00d\x0b\x00\x83\x02\x00\x01d\x00\x00S' next_instr = 18L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> @jit.unroll_safe def dispatch_bytecode(self, co_code, next_instr, ec): while True: self.last_instr = intmask(next_instr) if jit.we_are_jitted(): if self.debugdata: ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) else: # Only reload next_instr from last_instr when something that # can modify it actually ran (trace function or action # dispatcher). In the common case (no trace, positive ticker) # next_instr is unchanged and the round-trip is skipped. _d = self.debugdata if ec.space.reverse_debugging or ( _d is not None and _d.w_f_trace is not None) or ( not we_are_translated() and 'bytecode_only_trace' in ec.__dict__): ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) actionflag = ec.space.actionflag if actionflag.decrement_ticker(TICK_COUNTER_STEP) < 0: actionflag.action_dispatcher(ec, self) next_instr = r_uint(self.last_instr) opcode = ord(co_code[next_instr]) next_instr += 1 if opcode >= HAVE_ARGUMENT: lo = ord(co_code[next_instr]) hi = ord(co_code[next_instr+1]) next_instr += 2 oparg = (hi * 256) | lo else: oparg = 0 # note: the structure of the code here is such that it makes # (after translation) a big "if/elif" chain, which is then # turned into a switch(). while opcode == opcodedesc.EXTENDED_ARG.index: opcode = ord(co_code[next_instr]) if opcode < HAVE_ARGUMENT: raise BytecodeCorruption lo = ord(co_code[next_instr+1]) hi = ord(co_code[next_instr+2]) next_instr += 3 oparg = (oparg * 65536) | (hi * 256) | lo if opcode == opcodedesc.RETURN_VALUE.index: if not self.blockstack_non_empty(): self.frame_finished_execution = True # for generators raise Return w_returnvalue = self.popvalue() block = self.unrollstack(SReturnValue.kind) if block is None: self.pushvalue(w_returnvalue) raise Return else: unroller = SReturnValue(w_returnvalue) next_instr = block.handle(self, unroller) return next_instr # now inside a 'finally' block elif opcode == opcodedesc.END_FINALLY.index: unroller = self.end_finally() if isinstance(unroller, SuspendedUnroller): # go on unrolling the stack block = self.unrollstack(unroller.kind) if block is None: w_result = unroller.nomoreblocks() self.pushvalue(w_result) raise Return else: next_instr = block.handle(self, unroller) return next_instr elif opcode == opcodedesc.JUMP_ABSOLUTE.index: return self.jump_absolute(oparg, ec) elif opcode == opcodedesc.BREAK_LOOP.index: next_instr = self.BREAK_LOOP(oparg, next_instr) elif opcode == opcodedesc.CONTINUE_LOOP.index: return self.CONTINUE_LOOP(oparg, next_instr) elif opcode == opcodedesc.FOR_ITER.index: next_instr = self.FOR_ITER(oparg, next_instr) elif opcode == opcodedesc.JUMP_FORWARD.index: next_instr = self.JUMP_FORWARD(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_FALSE_OR_POP.index: next_instr = self.JUMP_IF_FALSE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_NOT_DEBUG.index: next_instr = self.JUMP_IF_NOT_DEBUG(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_TRUE_OR_POP.index: next_instr = self.JUMP_IF_TRUE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_FALSE.index: next_instr = self.POP_JUMP_IF_FALSE(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_TRUE.index: next_instr = self.POP_JUMP_IF_TRUE(oparg, next_instr) elif opcode == opcodedesc.BINARY_ADD.index: self.BINARY_ADD(oparg, next_instr) elif opcode == opcodedesc.BINARY_AND.index: self.BINARY_AND(oparg, next_instr) elif opcode == opcodedesc.BINARY_DIVIDE.index: self.BINARY_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_FLOOR_DIVIDE.index: self.BINARY_FLOOR_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_LSHIFT.index: self.BINARY_LSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_MODULO.index: self.BINARY_MODULO(oparg, next_instr) elif opcode == opcodedesc.BINARY_MULTIPLY.index: self.BINARY_MULTIPLY(oparg, next_instr) elif opcode == opcodedesc.BINARY_OR.index: self.BINARY_OR(oparg, next_instr) elif opcode == opcodedesc.BINARY_POWER.index: self.BINARY_POWER(oparg, next_instr) elif opcode == opcodedesc.BINARY_RSHIFT.index: self.BINARY_RSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBSCR.index: self.BINARY_SUBSCR(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBTRACT.index: self.BINARY_SUBTRACT(oparg, next_instr) elif opcode == opcodedesc.BINARY_TRUE_DIVIDE.index: self.BINARY_TRUE_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_XOR.index: self.BINARY_XOR(oparg, next_instr) elif opcode == opcodedesc.BUILD_CLASS.index: self.BUILD_CLASS(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST.index: self.BUILD_LIST(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST_FROM_ARG.index: self.BUILD_LIST_FROM_ARG(oparg, next_instr) elif opcode == opcodedesc.BUILD_MAP.index: self.BUILD_MAP(oparg, next_instr) elif opcode == opcodedesc.BUILD_SET.index: self.BUILD_SET(oparg, next_instr) elif opcode == opcodedesc.BUILD_SLICE.index: self.BUILD_SLICE(oparg, next_instr) elif opcode == opcodedesc.BUILD_TUPLE.index: self.BUILD_TUPLE(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION.index: self.CALL_FUNCTION(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_KW.index: self.CALL_FUNCTION_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR.index: self.CALL_FUNCTION_VAR(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR_KW.index: self.CALL_FUNCTION_VAR_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_METHOD.index: > self.CALL_METHOD(oparg, next_instr) interpreter\pyopcode.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ f = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_dotdotdo...uild\pypy\module\_cffi_backend\test\test_recompiler.py:409]', line 1> at line 5 oparg = 3, ignored = (18L,), n_args = 3, n_kwargs = 0, w_self = None @jit.unroll_safe def CALL_METHOD(f, oparg, *ignored): # opargs contains the arg, and kwarg count, excluding the implicit 'self' n_args = oparg & 0xff n_kwargs = (oparg >> 8) & 0xff w_self = f.peekvalue_maybe_none(n_args + (2 * n_kwargs)) n = n_args + (w_self is not None) if not n_kwargs: w_callable = f.peekvalue(n_args + (2 * n_kwargs) + 1) w_result = f.space.call_valuestack( > w_callable, n, f, methodcall=w_self is not None, dropvalues=n_args + 2) objspace\std\callmethod.py:96: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_dotdotdo...uild\pypy\module\_cffi_backend\test\test_recompiler.py:409]', line 1> at line 5 dropvalues = 5, methodcall = False def call_valuestack(self, w_func, nargs, frame, dropvalues, methodcall=False): # methodcall is only used for better error messages in argument.py from pypy.interpreter.function import Function, Method, is_builtin_code if frame.get_is_being_profiled() and is_builtin_code(w_func): # XXX: this code is copied&pasted :-( from the slow path below # call_valuestack(). args = frame.make_arguments(nargs) frame.dropvalues(dropvalues) return self.call_args_and_c_profile(frame, w_func, args) if not self.config.objspace.disable_call_speedhacks: # start of hack for performance if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: w_func = w_func.w_function # reuse callable stack place for w_inst frame.settopvalue(w_inst, nargs) nargs += 1 methodcall = True elif nargs > 0 and ( self.abstract_isinstance_w(frame.peekvalue(nargs-1), # :-( w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): return w_func.funccall_valuestack( > nargs, frame, methodcall=methodcall, dropvalues=dropvalues) interpreter\baseobjspace.py:1243: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_dotdotdo...uild\pypy\module\_cffi_backend\test\test_recompiler.py:409]', line 1> at line 5 dropvalues = 5, methodcall = False def funccall_valuestack(self, nargs, frame, dropvalues, methodcall=False): # speed hack # methodcall is only for better error messages from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit # if (jit.we_are_jitted() and code is self.space._code_of_sys_exc_info and nargs == 0): frame.dropvalues(dropvalues) from pypy.module.sys.vm import exc_info_direct return exc_info_direct(self.space, frame) # fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: f_0 = frame.peekvalue(0) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, f_0) elif nargs == 2: f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, f_1, f_0) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) frame.dropvalues(dropvalues) return code.fastcall_3(self.space, self, f_2, f_1, f_0) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) f_3 = frame.peekvalue(3) frame.dropvalues(dropvalues) return code.fastcall_4(self.space, self, f_3, f_2, f_1, f_0) elif (nargs | Code.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) return self._flat_pycall(code, nargs, frame, dropvalues) elif fast_natural_arity & Code.FLATPYCALL: natural_arity = fast_natural_arity & 0xff if natural_arity > nargs >= natural_arity - len(self.defs_w): assert isinstance(code, PyCode) return self._flat_pycall_defaults(code, nargs, frame, natural_arity - nargs, dropvalues) elif fast_natural_arity == Code.PASSTHROUGHARGS1 and nargs >= 1: assert isinstance(code, gateway.BuiltinCodePassThroughArguments1) w_obj = frame.peekvalue(nargs-1) args = frame.make_arguments(nargs-1) frame.dropvalues(dropvalues) return code.funcrun_obj(self, w_obj, args) args = frame.make_arguments(nargs, methodcall=methodcall) frame.dropvalues(dropvalues) > return self.call_args(args) interpreter\function.py:190: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('struct foo_s { int a[...]; int b[...]; };'), W_Bytes...th_of_array_field'), W_BytesObject('struct foo_s { int a[42]; int b[11]; };')]) def call_args(self, args): # delegate activation to code > w_res = self.getcode().funcrun(self, args) interpreter\function.py:68: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('struct foo_s { int a[...]; int b[...]; };'), W_Bytes...th_of_array_field'), W_BytesObject('struct foo_s { int a[42]; int b[11]; };')]) def funcrun(self, func, args): > return BuiltinCode.funcrun_obj(self, func, None, args) interpreter\gateway.py:781: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('struct foo_s { int a[...]; int b[...]; };'), W_Bytes...th_of_array_field'), W_BytesObject('struct foo_s { int a[42]; int b[11]; };')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: w_result = activation._run(space, scope_w) except DescrMismatch: if w_obj is not None: args = args.prepend(w_obj) return self._type_unwrap_mismatch(space, args) except Exception as e: > self.handle_exception(space, e) interpreter\gateway.py:795: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> space = StdObjSpace e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def handle_exception(self, space, e): try: if not we_are_translated(): raise raise e except OperationError: raise except Exception as e: # general fall-back from pypy.interpreter import error > raise error.get_converted_unexpected_exception(space, e) interpreter\gateway.py:819: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('struct foo_s { int a[...]; int b[...]; };'), W_Bytes...th_of_array_field'), W_BytesObject('struct foo_s { int a[42]; int b[11]; };')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: > w_result = activation._run(space, scope_w) interpreter\gateway.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinActivation_UwS_ObjSpace_text_text_text_W_Root_W_Root_W_Root_int_W_Root object at 0x000002791c13af38> space = StdObjSpace scope_w = [W_BytesObject('struct foo_s { int a[...]; int b[...]; };'), W_BytesObject('test_dotdotdot_length_of_array_field'), W_BytesObject('struct foo_s { int a[42]; int b[11]; };'), None, None, None, ...] def _run(self, space, scope_w): > return self.behavior(space, space.text_w(scope_w[0]), space.text_w(scope_w[1]), space.text_w(scope_w[2]), scope_w[3], scope_w[4], scope_w[5], space.gateway_int_w(scope_w[6]), scope_w[7]) <3152-codegen d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\rpython\tool\sourcetools.py:200>:3: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace, cdef = 'struct foo_s { int a[...]; int b[...]; };' module_name = '_CFFI_test_dotdotdot_length_of_array_field' source = 'struct foo_s { int a[42]; int b[11]; };', w_includes = None w_extra_source = None, w_min_version = None, packed = 0 w_extra_compile_args = None @unwrap_spec(cdef='text', module_name='text', source='text', packed=int) def prepare(space, cdef, module_name, source, w_includes=None, w_extra_source=None, w_min_version=None, packed=False, w_extra_compile_args=None): try: import cffi from cffi import FFI # <== the system one, which from cffi import recompiler # needs to be at least cffi 1.0.4 from cffi import ffiplatform except ImportError: pytest.skip("system cffi module not found or older than 1.0.0") if w_min_version is None: min_version = (1, 4, 0) else: min_version = tuple(space.unwrap(w_min_version)) if cffi.__version_info__ < min_version: pytest.skip("system cffi module needs to be at least %s, got %s" % ( min_version, cffi.__version_info__)) space.appexec([], """(): import _cffi_backend # force it to be initialized """) includes = [] if w_includes: includes += space.unpackiterable(w_includes) assert module_name.startswith('test_') module_name = '_CFFI_' + module_name rdir = udir.ensure('recompiler', dir=1) rdir.join('Python.h').write( '#include <stdio.h>\n' '#define PYPY_VERSION XX\n' '#define PyMODINIT_FUNC /*exported*/ void\n' ) path = module_name.replace('.', os.sep) if '.' in module_name: subrdir = rdir.join(module_name[:module_name.index('.')]) os.mkdir(str(subrdir)) else: subrdir = rdir c_file = str(rdir.join('%s.c' % path)) ffi = FFI() for include_ffi_object in includes: ffi.include(include_ffi_object._test_recompiler_source_ffi) ffi.cdef(cdef, packed=packed) ffi.set_source(module_name, source) ffi.emit_c_code(c_file) base_module_name = module_name.split('.')[-1] sources = [] if w_extra_source is not None: sources.append(space.str_w(w_extra_source)) kwargs = {} # GCC 14 promotes -Wincompatible-pointer-types from a warning to an error # by default, which breaks cffi's intentionally-mismatched field-check # probes (e.g. test_misdeclared_field_1). Keep it a warning so the module # compiles and cffi's runtime checks can run. extra = ['-Wno-error=incompatible-pointer-types'] if w_extra_compile_args is not None: extra = extra + space.unwrap(w_extra_compile_args) kwargs['extra_compile_args'] = extra ext = ffiplatform.get_extension(c_file, module_name, include_dirs=[str(rdir)], export_symbols=['_cffi_pypyinit_' + base_module_name], sources=sources, **kwargs) > ffiplatform.compile(str(rdir), ext) module\_cffi_backend\test\test_recompiler.py:86: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x0000027928cc0220> compiler_verbose = 0, debug = None def compile(tmpdir, ext, compiler_verbose=0, debug=None): """Compile a C extension module using distutils.""" saved_environ = os.environ.copy() try: > outputfilename = _build(tmpdir, ext, compiler_verbose, debug) d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x0000027928cc0220> compiler_verbose = 0, debug = 0 def _build(tmpdir, ext, compiler_verbose=0, debug=None): # XXX compact but horrible :-( from cffi._shimmed_dist_utils import Distribution, CompileError, LinkError, set_threshold, set_verbosity dist = Distribution({'ext_modules': [ext]}) dist.parse_config_files() options = dist.get_option_dict('build_ext') if debug is None: debug = sys.flags.debug options['debug'] = ('ffiplatform', debug) options['force'] = ('ffiplatform', True) options['build_lib'] = ('ffiplatform', tmpdir) options['build_temp'] = ('ffiplatform', tmpdir) # try: old_level = set_threshold(0) or 0 try: set_verbosity(compiler_verbose) dist.run_command('build_ext') cmd_obj = dist.get_command_obj('build_ext') [soname] = cmd_obj.get_outputs() finally: set_threshold(old_level) except (CompileError, LinkError) as e: > raise VerificationError('%s: %s' % (e.__class__.__name__, e)) E VerificationError: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2 d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:54: VerificationError ---------------------------- Captured stdout call ----------------------------- generating d:\systemtemp\pytest\usession-main-595\recompiler\_CFFI_test_dotdotdot_length_of_array_field.c ---------------------------- Captured stderr call ----------------------------- cl : Command line error D8021 : invalid numeric argument '/Wno-error=incompatible-pointer-types' ________________ AppTestRecompiler.test_dotdotdot_global_array ________________ self = <CallInfo when='call' exception: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2> func = <function <lambda> at 0x000002791c7013d0>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ..\_pytest\runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ..\_pytest\runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_dotdotdot_global_array'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_dotdotdot_global_array'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ..\_pytest\vendored_packages\pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00000279153616a8> hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_dotdotdot_global_array'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_dotdotdot_global_array'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ..\_pytest\vendored_packages\pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_dotdotdot_global_array'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_dotdotdot_global_array'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ..\_pytest\vendored_packages\pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_dotdotdot_global_array'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791edfa368> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...obal_array'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792b5e28e0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792b5e28e0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...obal_array'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_dotdotdot_global_array'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791edfa318> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...obal_array'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792b5e28a0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792b5e28a0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...obal_array'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_dotdotdot_global_array'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ..\_pytest\vendored_packages\pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_dotdotdot_global_array'> def pytest_runtest_call(item): try: > item.runtest() ..\_pytest\runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_dotdotdot_global_array'> def runtest(self): target = self.obj if self.config.option.runappdirect: return target() space = target.im_self.space filename = self._getdynfilename(target) func = app2interp_temp(target.im_func, filename=filename) w_instance = self.parent.w_instance > self.execute_appex(space, func, space, w_instance) tool\pytest\apptest.py:89: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_dotdotdot_global_array'>, space = StdObjSpace target = <function test_dotdotdot_global_array at 0x000002791c701448> args = (StdObjSpace, <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>) def execute_appex(self, space, target, *args): self.space = space try: > target(*args) tool\pytest\apptest.py:30: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) w_func = <Function test_dotdotdot_global_array> args = <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8> def appcaller(space, *args_w): if not isinstance(space, ObjSpace): raise TypeError("first argument must be a space instance.") # the last argument can be an Arguments w_func = self.wget(space, name) if not args_w: return space.call_function(w_func) else: args = args_w[-1] assert args is not None if not isinstance(args, Arguments): > return space.call_function(w_func, *args_w) interpreter\gateway.py:1227: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <Function test_dotdotdot_global_array> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) nargs = 1, Function = <class 'pypy.interpreter.function.Function'> Method = <class 'pypy.interpreter.function.Method'> def call_function(self, w_func, *args_w): nargs = len(args_w) # used for pruning funccall versions if not self.config.objspace.disable_call_speedhacks and nargs < 5: # start of hack for performance from pypy.interpreter.function import Function, Method if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: if nargs < 4: func = w_func.w_function if isinstance(func, Function): return func.funccall(w_inst, *args_w) elif args_w and ( self.abstract_isinstance_w(args_w[0], w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): > return w_func.funccall(*args_w) interpreter\baseobjspace.py:1210: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <Function test_dotdotdot_global_array> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) gateway = <module 'pypy.interpreter.gateway' from 'd:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\interpreter\\gateway.pyc'> PyCode = <class 'pypy.interpreter.pycode.PyCode'> code = <code object test_dotdotdot_global_array, file '[d:\pypy_stuff\buildbot64\slav...n-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:420]', line 1> def funccall(self, *args_w): # speed hack from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit nargs = len(args_w) fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, args_w[0]) elif nargs == 2: assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, args_w[0], args_w[1]) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) return code.fastcall_3(self.space, self, args_w[0], args_w[1], args_w[2]) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) return code.fastcall_4(self.space, self, args_w[0], args_w[1], args_w[2], args_w[3]) elif (nargs | PyCode.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) if nargs < 5: new_frame = self.space.createframe(code, self.w_func_globals, self) for i in funccallunrolling: if i < nargs: new_frame.locals_cells_stack_w[i] = args_w[i] > return new_frame.run() interpreter\function.py:118: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_dotdotdo...uild\pypy\module\_cffi_backend\test\test_recompiler.py:420]', line 1> at line 5 def run(self): """Start this frame's execution.""" if self.getcode().co_flags & pycode.CO_GENERATOR: from pypy.interpreter.generator import GeneratorIterator return GeneratorIterator(self) else: > return self.execute_frame() interpreter\pyframe.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_dotdotdo...uild\pypy\module\_cffi_backend\test\test_recompiler.py:420]', line 1> at line 5 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, executioncontext) except OperationError: raise except Exception as e: # general fall-back > raise self._convert_unexpected_exception(e) interpreter\pyframe.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_dotdotdo...uild\pypy\module\_cffi_backend\test\test_recompiler.py:420]', line 1> at line 5 e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def _convert_unexpected_exception(self, e): from pypy.interpreter import error > operr = error.get_converted_unexpected_exception(self.space, e) interpreter\pyframe.py:943: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_dotdotdo...uild\pypy\module\_cffi_backend\test\test_recompiler.py:420]', line 1> at line 5 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, > executioncontext) interpreter\pyframe.py:286: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_dotdotdo...uild\pypy\module\_cffi_backend\test\test_recompiler.py:420]', line 1> at line 5 pycode = <code object test_dotdotdot_global_array, file '[d:\pypy_stuff\buildbot64\slav...n-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:420]', line 1> next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def dispatch(self, pycode, next_instr, ec): # For the sequel, force 'next_instr' to be unsigned for performance next_instr = r_uint(next_instr) co_code = pycode.co_code try: while True: > next_instr = self.handle_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:64: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_dotdotdo...uild\pypy\module\_cffi_backend\test\test_recompiler.py:420]', line 1> at line 5 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00\xcc\x1e\x00|\x01\x00\xc9\x01...0\x00t\x03\x00\x82\x01\x00t\x05\x00t\x06\x00d\t\x00\x83\x02\x00\x01t\x05\x00t\x06\x00d\n\x00\x83\x02\x00\x01d\x00\x00S' next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def handle_bytecode(self, co_code, next_instr, ec): try: > next_instr = self.dispatch_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:71: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_dotdotdo...uild\pypy\module\_cffi_backend\test\test_recompiler.py:420]', line 1> at line 5 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00\xcc\x1e\x00|\x01\x00\xc9\x01...0\x00t\x03\x00\x82\x01\x00t\x05\x00t\x06\x00d\t\x00\x83\x02\x00\x01t\x05\x00t\x06\x00d\n\x00\x83\x02\x00\x01d\x00\x00S' next_instr = 18L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> @jit.unroll_safe def dispatch_bytecode(self, co_code, next_instr, ec): while True: self.last_instr = intmask(next_instr) if jit.we_are_jitted(): if self.debugdata: ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) else: # Only reload next_instr from last_instr when something that # can modify it actually ran (trace function or action # dispatcher). In the common case (no trace, positive ticker) # next_instr is unchanged and the round-trip is skipped. _d = self.debugdata if ec.space.reverse_debugging or ( _d is not None and _d.w_f_trace is not None) or ( not we_are_translated() and 'bytecode_only_trace' in ec.__dict__): ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) actionflag = ec.space.actionflag if actionflag.decrement_ticker(TICK_COUNTER_STEP) < 0: actionflag.action_dispatcher(ec, self) next_instr = r_uint(self.last_instr) opcode = ord(co_code[next_instr]) next_instr += 1 if opcode >= HAVE_ARGUMENT: lo = ord(co_code[next_instr]) hi = ord(co_code[next_instr+1]) next_instr += 2 oparg = (hi * 256) | lo else: oparg = 0 # note: the structure of the code here is such that it makes # (after translation) a big "if/elif" chain, which is then # turned into a switch(). while opcode == opcodedesc.EXTENDED_ARG.index: opcode = ord(co_code[next_instr]) if opcode < HAVE_ARGUMENT: raise BytecodeCorruption lo = ord(co_code[next_instr+1]) hi = ord(co_code[next_instr+2]) next_instr += 3 oparg = (oparg * 65536) | (hi * 256) | lo if opcode == opcodedesc.RETURN_VALUE.index: if not self.blockstack_non_empty(): self.frame_finished_execution = True # for generators raise Return w_returnvalue = self.popvalue() block = self.unrollstack(SReturnValue.kind) if block is None: self.pushvalue(w_returnvalue) raise Return else: unroller = SReturnValue(w_returnvalue) next_instr = block.handle(self, unroller) return next_instr # now inside a 'finally' block elif opcode == opcodedesc.END_FINALLY.index: unroller = self.end_finally() if isinstance(unroller, SuspendedUnroller): # go on unrolling the stack block = self.unrollstack(unroller.kind) if block is None: w_result = unroller.nomoreblocks() self.pushvalue(w_result) raise Return else: next_instr = block.handle(self, unroller) return next_instr elif opcode == opcodedesc.JUMP_ABSOLUTE.index: return self.jump_absolute(oparg, ec) elif opcode == opcodedesc.BREAK_LOOP.index: next_instr = self.BREAK_LOOP(oparg, next_instr) elif opcode == opcodedesc.CONTINUE_LOOP.index: return self.CONTINUE_LOOP(oparg, next_instr) elif opcode == opcodedesc.FOR_ITER.index: next_instr = self.FOR_ITER(oparg, next_instr) elif opcode == opcodedesc.JUMP_FORWARD.index: next_instr = self.JUMP_FORWARD(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_FALSE_OR_POP.index: next_instr = self.JUMP_IF_FALSE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_NOT_DEBUG.index: next_instr = self.JUMP_IF_NOT_DEBUG(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_TRUE_OR_POP.index: next_instr = self.JUMP_IF_TRUE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_FALSE.index: next_instr = self.POP_JUMP_IF_FALSE(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_TRUE.index: next_instr = self.POP_JUMP_IF_TRUE(oparg, next_instr) elif opcode == opcodedesc.BINARY_ADD.index: self.BINARY_ADD(oparg, next_instr) elif opcode == opcodedesc.BINARY_AND.index: self.BINARY_AND(oparg, next_instr) elif opcode == opcodedesc.BINARY_DIVIDE.index: self.BINARY_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_FLOOR_DIVIDE.index: self.BINARY_FLOOR_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_LSHIFT.index: self.BINARY_LSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_MODULO.index: self.BINARY_MODULO(oparg, next_instr) elif opcode == opcodedesc.BINARY_MULTIPLY.index: self.BINARY_MULTIPLY(oparg, next_instr) elif opcode == opcodedesc.BINARY_OR.index: self.BINARY_OR(oparg, next_instr) elif opcode == opcodedesc.BINARY_POWER.index: self.BINARY_POWER(oparg, next_instr) elif opcode == opcodedesc.BINARY_RSHIFT.index: self.BINARY_RSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBSCR.index: self.BINARY_SUBSCR(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBTRACT.index: self.BINARY_SUBTRACT(oparg, next_instr) elif opcode == opcodedesc.BINARY_TRUE_DIVIDE.index: self.BINARY_TRUE_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_XOR.index: self.BINARY_XOR(oparg, next_instr) elif opcode == opcodedesc.BUILD_CLASS.index: self.BUILD_CLASS(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST.index: self.BUILD_LIST(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST_FROM_ARG.index: self.BUILD_LIST_FROM_ARG(oparg, next_instr) elif opcode == opcodedesc.BUILD_MAP.index: self.BUILD_MAP(oparg, next_instr) elif opcode == opcodedesc.BUILD_SET.index: self.BUILD_SET(oparg, next_instr) elif opcode == opcodedesc.BUILD_SLICE.index: self.BUILD_SLICE(oparg, next_instr) elif opcode == opcodedesc.BUILD_TUPLE.index: self.BUILD_TUPLE(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION.index: self.CALL_FUNCTION(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_KW.index: self.CALL_FUNCTION_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR.index: self.CALL_FUNCTION_VAR(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR_KW.index: self.CALL_FUNCTION_VAR_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_METHOD.index: > self.CALL_METHOD(oparg, next_instr) interpreter\pyopcode.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ f = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_dotdotdo...uild\pypy\module\_cffi_backend\test\test_recompiler.py:420]', line 1> at line 5 oparg = 3, ignored = (18L,), n_args = 3, n_kwargs = 0, w_self = None @jit.unroll_safe def CALL_METHOD(f, oparg, *ignored): # opargs contains the arg, and kwarg count, excluding the implicit 'self' n_args = oparg & 0xff n_kwargs = (oparg >> 8) & 0xff w_self = f.peekvalue_maybe_none(n_args + (2 * n_kwargs)) n = n_args + (w_self is not None) if not n_kwargs: w_callable = f.peekvalue(n_args + (2 * n_kwargs) + 1) w_result = f.space.call_valuestack( > w_callable, n, f, methodcall=w_self is not None, dropvalues=n_args + 2) objspace\std\callmethod.py:96: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_dotdotdo...uild\pypy\module\_cffi_backend\test\test_recompiler.py:420]', line 1> at line 5 dropvalues = 5, methodcall = False def call_valuestack(self, w_func, nargs, frame, dropvalues, methodcall=False): # methodcall is only used for better error messages in argument.py from pypy.interpreter.function import Function, Method, is_builtin_code if frame.get_is_being_profiled() and is_builtin_code(w_func): # XXX: this code is copied&pasted :-( from the slow path below # call_valuestack(). args = frame.make_arguments(nargs) frame.dropvalues(dropvalues) return self.call_args_and_c_profile(frame, w_func, args) if not self.config.objspace.disable_call_speedhacks: # start of hack for performance if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: w_func = w_func.w_function # reuse callable stack place for w_inst frame.settopvalue(w_inst, nargs) nargs += 1 methodcall = True elif nargs > 0 and ( self.abstract_isinstance_w(frame.peekvalue(nargs-1), # :-( w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): return w_func.funccall_valuestack( > nargs, frame, methodcall=methodcall, dropvalues=dropvalues) interpreter\baseobjspace.py:1243: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_dotdotdo...uild\pypy\module\_cffi_backend\test\test_recompiler.py:420]', line 1> at line 5 dropvalues = 5, methodcall = False def funccall_valuestack(self, nargs, frame, dropvalues, methodcall=False): # speed hack # methodcall is only for better error messages from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit # if (jit.we_are_jitted() and code is self.space._code_of_sys_exc_info and nargs == 0): frame.dropvalues(dropvalues) from pypy.module.sys.vm import exc_info_direct return exc_info_direct(self.space, frame) # fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: f_0 = frame.peekvalue(0) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, f_0) elif nargs == 2: f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, f_1, f_0) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) frame.dropvalues(dropvalues) return code.fastcall_3(self.space, self, f_2, f_1, f_0) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) f_3 = frame.peekvalue(3) frame.dropvalues(dropvalues) return code.fastcall_4(self.space, self, f_3, f_2, f_1, f_0) elif (nargs | Code.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) return self._flat_pycall(code, nargs, frame, dropvalues) elif fast_natural_arity & Code.FLATPYCALL: natural_arity = fast_natural_arity & 0xff if natural_arity > nargs >= natural_arity - len(self.defs_w): assert isinstance(code, PyCode) return self._flat_pycall_defaults(code, nargs, frame, natural_arity - nargs, dropvalues) elif fast_natural_arity == Code.PASSTHROUGHARGS1 and nargs >= 1: assert isinstance(code, gateway.BuiltinCodePassThroughArguments1) w_obj = frame.peekvalue(nargs-1) args = frame.make_arguments(nargs-1) frame.dropvalues(dropvalues) return code.funcrun_obj(self, w_obj, args) args = frame.make_arguments(nargs, methodcall=methodcall) frame.dropvalues(dropvalues) > return self.call_args(args) interpreter\function.py:190: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('int aa[...]; int bb[...];'), W_BytesObject('test_dotdotdot_global_array'), W_BytesObject('int aa[41]; int bb[12];')]) def call_args(self, args): # delegate activation to code > w_res = self.getcode().funcrun(self, args) interpreter\function.py:68: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('int aa[...]; int bb[...];'), W_BytesObject('test_dotdotdot_global_array'), W_BytesObject('int aa[41]; int bb[12];')]) def funcrun(self, func, args): > return BuiltinCode.funcrun_obj(self, func, None, args) interpreter\gateway.py:781: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('int aa[...]; int bb[...];'), W_BytesObject('test_dotdotdot_global_array'), W_BytesObject('int aa[41]; int bb[12];')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: w_result = activation._run(space, scope_w) except DescrMismatch: if w_obj is not None: args = args.prepend(w_obj) return self._type_unwrap_mismatch(space, args) except Exception as e: > self.handle_exception(space, e) interpreter\gateway.py:795: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> space = StdObjSpace e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def handle_exception(self, space, e): try: if not we_are_translated(): raise raise e except OperationError: raise except Exception as e: # general fall-back from pypy.interpreter import error > raise error.get_converted_unexpected_exception(space, e) interpreter\gateway.py:819: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('int aa[...]; int bb[...];'), W_BytesObject('test_dotdotdot_global_array'), W_BytesObject('int aa[41]; int bb[12];')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: > w_result = activation._run(space, scope_w) interpreter\gateway.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinActivation_UwS_ObjSpace_text_text_text_W_Root_W_Root_W_Root_int_W_Root object at 0x000002791c13af38> space = StdObjSpace scope_w = [W_BytesObject('int aa[...]; int bb[...];'), W_BytesObject('test_dotdotdot_global_array'), W_BytesObject('int aa[41]; int bb[12];'), None, None, None, ...] def _run(self, space, scope_w): > return self.behavior(space, space.text_w(scope_w[0]), space.text_w(scope_w[1]), space.text_w(scope_w[2]), scope_w[3], scope_w[4], scope_w[5], space.gateway_int_w(scope_w[6]), scope_w[7]) <3152-codegen d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\rpython\tool\sourcetools.py:200>:3: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace, cdef = 'int aa[...]; int bb[...];' module_name = '_CFFI_test_dotdotdot_global_array' source = 'int aa[41]; int bb[12];', w_includes = None, w_extra_source = None w_min_version = None, packed = 0, w_extra_compile_args = None @unwrap_spec(cdef='text', module_name='text', source='text', packed=int) def prepare(space, cdef, module_name, source, w_includes=None, w_extra_source=None, w_min_version=None, packed=False, w_extra_compile_args=None): try: import cffi from cffi import FFI # <== the system one, which from cffi import recompiler # needs to be at least cffi 1.0.4 from cffi import ffiplatform except ImportError: pytest.skip("system cffi module not found or older than 1.0.0") if w_min_version is None: min_version = (1, 4, 0) else: min_version = tuple(space.unwrap(w_min_version)) if cffi.__version_info__ < min_version: pytest.skip("system cffi module needs to be at least %s, got %s" % ( min_version, cffi.__version_info__)) space.appexec([], """(): import _cffi_backend # force it to be initialized """) includes = [] if w_includes: includes += space.unpackiterable(w_includes) assert module_name.startswith('test_') module_name = '_CFFI_' + module_name rdir = udir.ensure('recompiler', dir=1) rdir.join('Python.h').write( '#include <stdio.h>\n' '#define PYPY_VERSION XX\n' '#define PyMODINIT_FUNC /*exported*/ void\n' ) path = module_name.replace('.', os.sep) if '.' in module_name: subrdir = rdir.join(module_name[:module_name.index('.')]) os.mkdir(str(subrdir)) else: subrdir = rdir c_file = str(rdir.join('%s.c' % path)) ffi = FFI() for include_ffi_object in includes: ffi.include(include_ffi_object._test_recompiler_source_ffi) ffi.cdef(cdef, packed=packed) ffi.set_source(module_name, source) ffi.emit_c_code(c_file) base_module_name = module_name.split('.')[-1] sources = [] if w_extra_source is not None: sources.append(space.str_w(w_extra_source)) kwargs = {} # GCC 14 promotes -Wincompatible-pointer-types from a warning to an error # by default, which breaks cffi's intentionally-mismatched field-check # probes (e.g. test_misdeclared_field_1). Keep it a warning so the module # compiles and cffi's runtime checks can run. extra = ['-Wno-error=incompatible-pointer-types'] if w_extra_compile_args is not None: extra = extra + space.unwrap(w_extra_compile_args) kwargs['extra_compile_args'] = extra ext = ffiplatform.get_extension(c_file, module_name, include_dirs=[str(rdir)], export_symbols=['_cffi_pypyinit_' + base_module_name], sources=sources, **kwargs) > ffiplatform.compile(str(rdir), ext) module\_cffi_backend\test\test_recompiler.py:86: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x000002792b5e3aa0> compiler_verbose = 0, debug = None def compile(tmpdir, ext, compiler_verbose=0, debug=None): """Compile a C extension module using distutils.""" saved_environ = os.environ.copy() try: > outputfilename = _build(tmpdir, ext, compiler_verbose, debug) d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x000002792b5e3aa0> compiler_verbose = 0, debug = 0 def _build(tmpdir, ext, compiler_verbose=0, debug=None): # XXX compact but horrible :-( from cffi._shimmed_dist_utils import Distribution, CompileError, LinkError, set_threshold, set_verbosity dist = Distribution({'ext_modules': [ext]}) dist.parse_config_files() options = dist.get_option_dict('build_ext') if debug is None: debug = sys.flags.debug options['debug'] = ('ffiplatform', debug) options['force'] = ('ffiplatform', True) options['build_lib'] = ('ffiplatform', tmpdir) options['build_temp'] = ('ffiplatform', tmpdir) # try: old_level = set_threshold(0) or 0 try: set_verbosity(compiler_verbose) dist.run_command('build_ext') cmd_obj = dist.get_command_obj('build_ext') [soname] = cmd_obj.get_outputs() finally: set_threshold(old_level) except (CompileError, LinkError) as e: > raise VerificationError('%s: %s' % (e.__class__.__name__, e)) E VerificationError: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2 d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:54: VerificationError ---------------------------- Captured stdout call ----------------------------- generating d:\systemtemp\pytest\usession-main-595\recompiler\_CFFI_test_dotdotdot_global_array.c ---------------------------- Captured stderr call ----------------------------- d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\cparser.py:165: UserWarning: Global variable 'bb' in cdef(): for consistency with C it should have a storage class specifier (usually 'extern') "(usually 'extern')" % (decl.name,)) cl : Command line error D8021 : invalid numeric argument '/Wno-error=incompatible-pointer-types' _________________ AppTestRecompiler.test_misdeclared_field_1 __________________ self = <CallInfo when='call' exception: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2> func = <function <lambda> at 0x000002792a7d2278>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ..\_pytest\runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ..\_pytest\runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_misdeclared_field_1'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_misdeclared_field_1'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ..\_pytest\vendored_packages\pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00000279153616a8> hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_misdeclared_field_1'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_misdeclared_field_1'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ..\_pytest\vendored_packages\pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_misdeclared_field_1'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_misdeclared_field_1'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ..\_pytest\vendored_packages\pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_misdeclared_field_1'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00000279251e4070> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...ed_field_1'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00000279251d6ea0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00000279251d6ea0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...ed_field_1'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_misdeclared_field_1'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x0000027924b21fd8> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...ed_field_1'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00000279251d6e60> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00000279251d6e60> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...ed_field_1'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_misdeclared_field_1'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ..\_pytest\vendored_packages\pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_misdeclared_field_1'> def pytest_runtest_call(item): try: > item.runtest() ..\_pytest\runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_misdeclared_field_1'> def runtest(self): target = self.obj if self.config.option.runappdirect: return target() space = target.im_self.space filename = self._getdynfilename(target) func = app2interp_temp(target.im_func, filename=filename) w_instance = self.parent.w_instance > self.execute_appex(space, func, space, w_instance) tool\pytest\apptest.py:89: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_misdeclared_field_1'>, space = StdObjSpace target = <function test_misdeclared_field_1 at 0x000002792a7d2368> args = (StdObjSpace, <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>) def execute_appex(self, space, target, *args): self.space = space try: > target(*args) tool\pytest\apptest.py:30: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) w_func = <Function test_misdeclared_field_1> args = <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8> def appcaller(space, *args_w): if not isinstance(space, ObjSpace): raise TypeError("first argument must be a space instance.") # the last argument can be an Arguments w_func = self.wget(space, name) if not args_w: return space.call_function(w_func) else: args = args_w[-1] assert args is not None if not isinstance(args, Arguments): > return space.call_function(w_func, *args_w) interpreter\gateway.py:1227: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <Function test_misdeclared_field_1> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) nargs = 1, Function = <class 'pypy.interpreter.function.Function'> Method = <class 'pypy.interpreter.function.Method'> def call_function(self, w_func, *args_w): nargs = len(args_w) # used for pruning funccall versions if not self.config.objspace.disable_call_speedhacks and nargs < 5: # start of hack for performance from pypy.interpreter.function import Function, Method if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: if nargs < 4: func = w_func.w_function if isinstance(func, Function): return func.funccall(w_inst, *args_w) elif args_w and ( self.abstract_isinstance_w(args_w[0], w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): > return w_func.funccall(*args_w) interpreter\baseobjspace.py:1210: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <Function test_misdeclared_field_1> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) gateway = <module 'pypy.interpreter.gateway' from 'd:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\interpreter\\gateway.pyc'> PyCode = <class 'pypy.interpreter.pycode.PyCode'> code = <code object test_misdeclared_field_1, file '[d:\pypy_stuff\buildbot64\slave\o...n-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:431]', line 1> def funccall(self, *args_w): # speed hack from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit nargs = len(args_w) fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, args_w[0]) elif nargs == 2: assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, args_w[0], args_w[1]) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) return code.fastcall_3(self.space, self, args_w[0], args_w[1], args_w[2]) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) return code.fastcall_4(self.space, self, args_w[0], args_w[1], args_w[2], args_w[3]) elif (nargs | PyCode.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) if nargs < 5: new_frame = self.space.createframe(code, self.w_func_globals, self) for i in funccallunrolling: if i < nargs: new_frame.locals_cells_stack_w[i] = args_w[i] > return new_frame.run() interpreter\function.py:118: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_misdecla...uild\pypy\module\_cffi_backend\test\test_recompiler.py:431]', line 1> at line 5 def run(self): """Start this frame's execution.""" if self.getcode().co_flags & pycode.CO_GENERATOR: from pypy.interpreter.generator import GeneratorIterator return GeneratorIterator(self) else: > return self.execute_frame() interpreter\pyframe.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_misdecla...uild\pypy\module\_cffi_backend\test\test_recompiler.py:431]', line 1> at line 5 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, executioncontext) except OperationError: raise except Exception as e: # general fall-back > raise self._convert_unexpected_exception(e) interpreter\pyframe.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_misdecla...uild\pypy\module\_cffi_backend\test\test_recompiler.py:431]', line 1> at line 5 e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def _convert_unexpected_exception(self, e): from pypy.interpreter import error > operr = error.get_converted_unexpected_exception(self.space, e) interpreter\pyframe.py:943: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_misdecla...uild\pypy\module\_cffi_backend\test\test_recompiler.py:431]', line 1> at line 5 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, > executioncontext) interpreter\pyframe.py:286: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_misdecla...uild\pypy\module\_cffi_backend\test\test_recompiler.py:431]', line 1> at line 5 pycode = <code object test_misdeclared_field_1, file '[d:\pypy_stuff\buildbot64\slave\o...n-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:431]', line 1> next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def dispatch(self, pycode, next_instr, ec): # For the sequel, force 'next_instr' to be unsigned for performance next_instr = r_uint(next_instr) co_code = pycode.co_code try: while True: > next_instr = self.handle_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:64: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_misdecla...uild\pypy\module\_cffi_backend\test\test_recompiler.py:431]', line 1> at line 5 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00\xcc\x1b\x00|\x01\x00\xc9\x01...b\x00t\x07\x00|\x04\x00\x83\x01\x00\xc9\x08\x00d\x08\x00\xca\x01\x00s\x9b\x00t\x02\x00\x82\x01\x00n\x01\x00Xd\x00\x00S' next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def handle_bytecode(self, co_code, next_instr, ec): try: > next_instr = self.dispatch_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:71: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_misdecla...uild\pypy\module\_cffi_backend\test\test_recompiler.py:431]', line 1> at line 5 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00\xcc\x1b\x00|\x01\x00\xc9\x01...b\x00t\x07\x00|\x04\x00\x83\x01\x00\xc9\x08\x00d\x08\x00\xca\x01\x00s\x9b\x00t\x02\x00\x82\x01\x00n\x01\x00Xd\x00\x00S' next_instr = 18L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> @jit.unroll_safe def dispatch_bytecode(self, co_code, next_instr, ec): while True: self.last_instr = intmask(next_instr) if jit.we_are_jitted(): if self.debugdata: ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) else: # Only reload next_instr from last_instr when something that # can modify it actually ran (trace function or action # dispatcher). In the common case (no trace, positive ticker) # next_instr is unchanged and the round-trip is skipped. _d = self.debugdata if ec.space.reverse_debugging or ( _d is not None and _d.w_f_trace is not None) or ( not we_are_translated() and 'bytecode_only_trace' in ec.__dict__): ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) actionflag = ec.space.actionflag if actionflag.decrement_ticker(TICK_COUNTER_STEP) < 0: actionflag.action_dispatcher(ec, self) next_instr = r_uint(self.last_instr) opcode = ord(co_code[next_instr]) next_instr += 1 if opcode >= HAVE_ARGUMENT: lo = ord(co_code[next_instr]) hi = ord(co_code[next_instr+1]) next_instr += 2 oparg = (hi * 256) | lo else: oparg = 0 # note: the structure of the code here is such that it makes # (after translation) a big "if/elif" chain, which is then # turned into a switch(). while opcode == opcodedesc.EXTENDED_ARG.index: opcode = ord(co_code[next_instr]) if opcode < HAVE_ARGUMENT: raise BytecodeCorruption lo = ord(co_code[next_instr+1]) hi = ord(co_code[next_instr+2]) next_instr += 3 oparg = (oparg * 65536) | (hi * 256) | lo if opcode == opcodedesc.RETURN_VALUE.index: if not self.blockstack_non_empty(): self.frame_finished_execution = True # for generators raise Return w_returnvalue = self.popvalue() block = self.unrollstack(SReturnValue.kind) if block is None: self.pushvalue(w_returnvalue) raise Return else: unroller = SReturnValue(w_returnvalue) next_instr = block.handle(self, unroller) return next_instr # now inside a 'finally' block elif opcode == opcodedesc.END_FINALLY.index: unroller = self.end_finally() if isinstance(unroller, SuspendedUnroller): # go on unrolling the stack block = self.unrollstack(unroller.kind) if block is None: w_result = unroller.nomoreblocks() self.pushvalue(w_result) raise Return else: next_instr = block.handle(self, unroller) return next_instr elif opcode == opcodedesc.JUMP_ABSOLUTE.index: return self.jump_absolute(oparg, ec) elif opcode == opcodedesc.BREAK_LOOP.index: next_instr = self.BREAK_LOOP(oparg, next_instr) elif opcode == opcodedesc.CONTINUE_LOOP.index: return self.CONTINUE_LOOP(oparg, next_instr) elif opcode == opcodedesc.FOR_ITER.index: next_instr = self.FOR_ITER(oparg, next_instr) elif opcode == opcodedesc.JUMP_FORWARD.index: next_instr = self.JUMP_FORWARD(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_FALSE_OR_POP.index: next_instr = self.JUMP_IF_FALSE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_NOT_DEBUG.index: next_instr = self.JUMP_IF_NOT_DEBUG(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_TRUE_OR_POP.index: next_instr = self.JUMP_IF_TRUE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_FALSE.index: next_instr = self.POP_JUMP_IF_FALSE(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_TRUE.index: next_instr = self.POP_JUMP_IF_TRUE(oparg, next_instr) elif opcode == opcodedesc.BINARY_ADD.index: self.BINARY_ADD(oparg, next_instr) elif opcode == opcodedesc.BINARY_AND.index: self.BINARY_AND(oparg, next_instr) elif opcode == opcodedesc.BINARY_DIVIDE.index: self.BINARY_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_FLOOR_DIVIDE.index: self.BINARY_FLOOR_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_LSHIFT.index: self.BINARY_LSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_MODULO.index: self.BINARY_MODULO(oparg, next_instr) elif opcode == opcodedesc.BINARY_MULTIPLY.index: self.BINARY_MULTIPLY(oparg, next_instr) elif opcode == opcodedesc.BINARY_OR.index: self.BINARY_OR(oparg, next_instr) elif opcode == opcodedesc.BINARY_POWER.index: self.BINARY_POWER(oparg, next_instr) elif opcode == opcodedesc.BINARY_RSHIFT.index: self.BINARY_RSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBSCR.index: self.BINARY_SUBSCR(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBTRACT.index: self.BINARY_SUBTRACT(oparg, next_instr) elif opcode == opcodedesc.BINARY_TRUE_DIVIDE.index: self.BINARY_TRUE_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_XOR.index: self.BINARY_XOR(oparg, next_instr) elif opcode == opcodedesc.BUILD_CLASS.index: self.BUILD_CLASS(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST.index: self.BUILD_LIST(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST_FROM_ARG.index: self.BUILD_LIST_FROM_ARG(oparg, next_instr) elif opcode == opcodedesc.BUILD_MAP.index: self.BUILD_MAP(oparg, next_instr) elif opcode == opcodedesc.BUILD_SET.index: self.BUILD_SET(oparg, next_instr) elif opcode == opcodedesc.BUILD_SLICE.index: self.BUILD_SLICE(oparg, next_instr) elif opcode == opcodedesc.BUILD_TUPLE.index: self.BUILD_TUPLE(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION.index: self.CALL_FUNCTION(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_KW.index: self.CALL_FUNCTION_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR.index: self.CALL_FUNCTION_VAR(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR_KW.index: self.CALL_FUNCTION_VAR_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_METHOD.index: > self.CALL_METHOD(oparg, next_instr) interpreter\pyopcode.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ f = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_misdecla...uild\pypy\module\_cffi_backend\test\test_recompiler.py:431]', line 1> at line 5 oparg = 3, ignored = (18L,), n_args = 3, n_kwargs = 0, w_self = None @jit.unroll_safe def CALL_METHOD(f, oparg, *ignored): # opargs contains the arg, and kwarg count, excluding the implicit 'self' n_args = oparg & 0xff n_kwargs = (oparg >> 8) & 0xff w_self = f.peekvalue_maybe_none(n_args + (2 * n_kwargs)) n = n_args + (w_self is not None) if not n_kwargs: w_callable = f.peekvalue(n_args + (2 * n_kwargs) + 1) w_result = f.space.call_valuestack( > w_callable, n, f, methodcall=w_self is not None, dropvalues=n_args + 2) objspace\std\callmethod.py:96: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_misdecla...uild\pypy\module\_cffi_backend\test\test_recompiler.py:431]', line 1> at line 5 dropvalues = 5, methodcall = False def call_valuestack(self, w_func, nargs, frame, dropvalues, methodcall=False): # methodcall is only used for better error messages in argument.py from pypy.interpreter.function import Function, Method, is_builtin_code if frame.get_is_being_profiled() and is_builtin_code(w_func): # XXX: this code is copied&pasted :-( from the slow path below # call_valuestack(). args = frame.make_arguments(nargs) frame.dropvalues(dropvalues) return self.call_args_and_c_profile(frame, w_func, args) if not self.config.objspace.disable_call_speedhacks: # start of hack for performance if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: w_func = w_func.w_function # reuse callable stack place for w_inst frame.settopvalue(w_inst, nargs) nargs += 1 methodcall = True elif nargs > 0 and ( self.abstract_isinstance_w(frame.peekvalue(nargs-1), # :-( w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): return w_func.funccall_valuestack( > nargs, frame, methodcall=methodcall, dropvalues=dropvalues) interpreter\baseobjspace.py:1243: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_misdecla...uild\pypy\module\_cffi_backend\test\test_recompiler.py:431]', line 1> at line 5 dropvalues = 5, methodcall = False def funccall_valuestack(self, nargs, frame, dropvalues, methodcall=False): # speed hack # methodcall is only for better error messages from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit # if (jit.we_are_jitted() and code is self.space._code_of_sys_exc_info and nargs == 0): frame.dropvalues(dropvalues) from pypy.module.sys.vm import exc_info_direct return exc_info_direct(self.space, frame) # fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: f_0 = frame.peekvalue(0) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, f_0) elif nargs == 2: f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, f_1, f_0) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) frame.dropvalues(dropvalues) return code.fastcall_3(self.space, self, f_2, f_1, f_0) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) f_3 = frame.peekvalue(3) frame.dropvalues(dropvalues) return code.fastcall_4(self.space, self, f_3, f_2, f_1, f_0) elif (nargs | Code.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) return self._flat_pycall(code, nargs, frame, dropvalues) elif fast_natural_arity & Code.FLATPYCALL: natural_arity = fast_natural_arity & 0xff if natural_arity > nargs >= natural_arity - len(self.defs_w): assert isinstance(code, PyCode) return self._flat_pycall_defaults(code, nargs, frame, natural_arity - nargs, dropvalues) elif fast_natural_arity == Code.PASSTHROUGHARGS1 and nargs >= 1: assert isinstance(code, gateway.BuiltinCodePassThroughArguments1) w_obj = frame.peekvalue(nargs-1) args = frame.make_arguments(nargs-1) frame.dropvalues(dropvalues) return code.funcrun_obj(self, w_obj, args) args = frame.make_arguments(nargs, methodcall=methodcall) frame.dropvalues(dropvalues) > return self.call_args(args) interpreter\function.py:190: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('struct foo_s { int a[5]; };'), W_BytesObject('test_misdeclared_field_1'), W_BytesObject('struct foo_s { int a[6]; };')]) def call_args(self, args): # delegate activation to code > w_res = self.getcode().funcrun(self, args) interpreter\function.py:68: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('struct foo_s { int a[5]; };'), W_BytesObject('test_misdeclared_field_1'), W_BytesObject('struct foo_s { int a[6]; };')]) def funcrun(self, func, args): > return BuiltinCode.funcrun_obj(self, func, None, args) interpreter\gateway.py:781: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('struct foo_s { int a[5]; };'), W_BytesObject('test_misdeclared_field_1'), W_BytesObject('struct foo_s { int a[6]; };')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: w_result = activation._run(space, scope_w) except DescrMismatch: if w_obj is not None: args = args.prepend(w_obj) return self._type_unwrap_mismatch(space, args) except Exception as e: > self.handle_exception(space, e) interpreter\gateway.py:795: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> space = StdObjSpace e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def handle_exception(self, space, e): try: if not we_are_translated(): raise raise e except OperationError: raise except Exception as e: # general fall-back from pypy.interpreter import error > raise error.get_converted_unexpected_exception(space, e) interpreter\gateway.py:819: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('struct foo_s { int a[5]; };'), W_BytesObject('test_misdeclared_field_1'), W_BytesObject('struct foo_s { int a[6]; };')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: > w_result = activation._run(space, scope_w) interpreter\gateway.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinActivation_UwS_ObjSpace_text_text_text_W_Root_W_Root_W_Root_int_W_Root object at 0x000002791c13af38> space = StdObjSpace scope_w = [W_BytesObject('struct foo_s { int a[5]; };'), W_BytesObject('test_misdeclared_field_1'), W_BytesObject('struct foo_s { int a[6]; };'), None, None, None, ...] def _run(self, space, scope_w): > return self.behavior(space, space.text_w(scope_w[0]), space.text_w(scope_w[1]), space.text_w(scope_w[2]), scope_w[3], scope_w[4], scope_w[5], space.gateway_int_w(scope_w[6]), scope_w[7]) <3152-codegen d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\rpython\tool\sourcetools.py:200>:3: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace, cdef = 'struct foo_s { int a[5]; };' module_name = '_CFFI_test_misdeclared_field_1' source = 'struct foo_s { int a[6]; };', w_includes = None, w_extra_source = None w_min_version = None, packed = 0, w_extra_compile_args = None @unwrap_spec(cdef='text', module_name='text', source='text', packed=int) def prepare(space, cdef, module_name, source, w_includes=None, w_extra_source=None, w_min_version=None, packed=False, w_extra_compile_args=None): try: import cffi from cffi import FFI # <== the system one, which from cffi import recompiler # needs to be at least cffi 1.0.4 from cffi import ffiplatform except ImportError: pytest.skip("system cffi module not found or older than 1.0.0") if w_min_version is None: min_version = (1, 4, 0) else: min_version = tuple(space.unwrap(w_min_version)) if cffi.__version_info__ < min_version: pytest.skip("system cffi module needs to be at least %s, got %s" % ( min_version, cffi.__version_info__)) space.appexec([], """(): import _cffi_backend # force it to be initialized """) includes = [] if w_includes: includes += space.unpackiterable(w_includes) assert module_name.startswith('test_') module_name = '_CFFI_' + module_name rdir = udir.ensure('recompiler', dir=1) rdir.join('Python.h').write( '#include <stdio.h>\n' '#define PYPY_VERSION XX\n' '#define PyMODINIT_FUNC /*exported*/ void\n' ) path = module_name.replace('.', os.sep) if '.' in module_name: subrdir = rdir.join(module_name[:module_name.index('.')]) os.mkdir(str(subrdir)) else: subrdir = rdir c_file = str(rdir.join('%s.c' % path)) ffi = FFI() for include_ffi_object in includes: ffi.include(include_ffi_object._test_recompiler_source_ffi) ffi.cdef(cdef, packed=packed) ffi.set_source(module_name, source) ffi.emit_c_code(c_file) base_module_name = module_name.split('.')[-1] sources = [] if w_extra_source is not None: sources.append(space.str_w(w_extra_source)) kwargs = {} # GCC 14 promotes -Wincompatible-pointer-types from a warning to an error # by default, which breaks cffi's intentionally-mismatched field-check # probes (e.g. test_misdeclared_field_1). Keep it a warning so the module # compiles and cffi's runtime checks can run. extra = ['-Wno-error=incompatible-pointer-types'] if w_extra_compile_args is not None: extra = extra + space.unwrap(w_extra_compile_args) kwargs['extra_compile_args'] = extra ext = ffiplatform.get_extension(c_file, module_name, include_dirs=[str(rdir)], export_symbols=['_cffi_pypyinit_' + base_module_name], sources=sources, **kwargs) > ffiplatform.compile(str(rdir), ext) module\_cffi_backend\test\test_recompiler.py:86: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x00000279251d7720> compiler_verbose = 0, debug = None def compile(tmpdir, ext, compiler_verbose=0, debug=None): """Compile a C extension module using distutils.""" saved_environ = os.environ.copy() try: > outputfilename = _build(tmpdir, ext, compiler_verbose, debug) d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x00000279251d7720> compiler_verbose = 0, debug = 0 def _build(tmpdir, ext, compiler_verbose=0, debug=None): # XXX compact but horrible :-( from cffi._shimmed_dist_utils import Distribution, CompileError, LinkError, set_threshold, set_verbosity dist = Distribution({'ext_modules': [ext]}) dist.parse_config_files() options = dist.get_option_dict('build_ext') if debug is None: debug = sys.flags.debug options['debug'] = ('ffiplatform', debug) options['force'] = ('ffiplatform', True) options['build_lib'] = ('ffiplatform', tmpdir) options['build_temp'] = ('ffiplatform', tmpdir) # try: old_level = set_threshold(0) or 0 try: set_verbosity(compiler_verbose) dist.run_command('build_ext') cmd_obj = dist.get_command_obj('build_ext') [soname] = cmd_obj.get_outputs() finally: set_threshold(old_level) except (CompileError, LinkError) as e: > raise VerificationError('%s: %s' % (e.__class__.__name__, e)) E VerificationError: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2 d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:54: VerificationError ---------------------------- Captured stdout call ----------------------------- generating d:\systemtemp\pytest\usession-main-595\recompiler\_CFFI_test_misdeclared_field_1.c ---------------------------- Captured stderr call ----------------------------- cl : Command line error D8021 : invalid numeric argument '/Wno-error=incompatible-pointer-types' _________________ AppTestRecompiler.test_open_array_in_struct _________________ self = <CallInfo when='call' exception: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2> func = <function <lambda> at 0x00000279250299e8>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ..\_pytest\runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ..\_pytest\runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_open_array_in_struct'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_open_array_in_struct'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ..\_pytest\vendored_packages\pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00000279153616a8> hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_open_array_in_struct'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_open_array_in_struct'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ..\_pytest\vendored_packages\pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_open_array_in_struct'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_open_array_in_struct'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ..\_pytest\vendored_packages\pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_open_array_in_struct'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791ad24e80> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i..._in_struct'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00000279218fc1a0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00000279218fc1a0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i..._in_struct'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_open_array_in_struct'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791ad24e30> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i..._in_struct'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00000279218fc160> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00000279218fc160> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i..._in_struct'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_open_array_in_struct'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ..\_pytest\vendored_packages\pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_open_array_in_struct'> def pytest_runtest_call(item): try: > item.runtest() ..\_pytest\runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_open_array_in_struct'> def runtest(self): target = self.obj if self.config.option.runappdirect: return target() space = target.im_self.space filename = self._getdynfilename(target) func = app2interp_temp(target.im_func, filename=filename) w_instance = self.parent.w_instance > self.execute_appex(space, func, space, w_instance) tool\pytest\apptest.py:89: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_open_array_in_struct'>, space = StdObjSpace target = <function test_open_array_in_struct at 0x0000027925029ad8> args = (StdObjSpace, <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>) def execute_appex(self, space, target, *args): self.space = space try: > target(*args) tool\pytest\apptest.py:30: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) w_func = <Function test_open_array_in_struct> args = <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8> def appcaller(space, *args_w): if not isinstance(space, ObjSpace): raise TypeError("first argument must be a space instance.") # the last argument can be an Arguments w_func = self.wget(space, name) if not args_w: return space.call_function(w_func) else: args = args_w[-1] assert args is not None if not isinstance(args, Arguments): > return space.call_function(w_func, *args_w) interpreter\gateway.py:1227: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <Function test_open_array_in_struct> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) nargs = 1, Function = <class 'pypy.interpreter.function.Function'> Method = <class 'pypy.interpreter.function.Method'> def call_function(self, w_func, *args_w): nargs = len(args_w) # used for pruning funccall versions if not self.config.objspace.disable_call_speedhacks and nargs < 5: # start of hack for performance from pypy.interpreter.function import Function, Method if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: if nargs < 4: func = w_func.w_function if isinstance(func, Function): return func.funccall(w_inst, *args_w) elif args_w and ( self.abstract_isinstance_w(args_w[0], w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): > return w_func.funccall(*args_w) interpreter\baseobjspace.py:1210: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <Function test_open_array_in_struct> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) gateway = <module 'pypy.interpreter.gateway' from 'd:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\interpreter\\gateway.pyc'> PyCode = <class 'pypy.interpreter.pycode.PyCode'> code = <code object test_open_array_in_struct, file '[d:\pypy_stuff\buildbot64\slave\...n-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:446]', line 1> def funccall(self, *args_w): # speed hack from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit nargs = len(args_w) fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, args_w[0]) elif nargs == 2: assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, args_w[0], args_w[1]) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) return code.fastcall_3(self.space, self, args_w[0], args_w[1], args_w[2]) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) return code.fastcall_4(self.space, self, args_w[0], args_w[1], args_w[2], args_w[3]) elif (nargs | PyCode.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) if nargs < 5: new_frame = self.space.createframe(code, self.w_func_globals, self) for i in funccallunrolling: if i < nargs: new_frame.locals_cells_stack_w[i] = args_w[i] > return new_frame.run() interpreter\function.py:118: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_open_arr...uild\pypy\module\_cffi_backend\test\test_recompiler.py:446]', line 1> at line 5 def run(self): """Start this frame's execution.""" if self.getcode().co_flags & pycode.CO_GENERATOR: from pypy.interpreter.generator import GeneratorIterator return GeneratorIterator(self) else: > return self.execute_frame() interpreter\pyframe.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_open_arr...uild\pypy\module\_cffi_backend\test\test_recompiler.py:446]', line 1> at line 5 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, executioncontext) except OperationError: raise except Exception as e: # general fall-back > raise self._convert_unexpected_exception(e) interpreter\pyframe.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_open_arr...uild\pypy\module\_cffi_backend\test\test_recompiler.py:446]', line 1> at line 5 e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def _convert_unexpected_exception(self, e): from pypy.interpreter import error > operr = error.get_converted_unexpected_exception(self.space, e) interpreter\pyframe.py:943: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_open_arr...uild\pypy\module\_cffi_backend\test\test_recompiler.py:446]', line 1> at line 5 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, > executioncontext) interpreter\pyframe.py:286: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_open_arr...uild\pypy\module\_cffi_backend\test\test_recompiler.py:446]', line 1> at line 5 pycode = <code object test_open_array_in_struct, file '[d:\pypy_stuff\buildbot64\slave\...n-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:446]', line 1> next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def dispatch(self, pycode, next_instr, ec): # For the sequel, force 'next_instr' to be unsigned for performance next_instr = r_uint(next_instr) co_code = pycode.co_code try: while True: > next_instr = self.handle_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:64: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_open_arr...uild\pypy\module\_cffi_backend\test\test_recompiler.py:446]', line 1> at line 5 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x01\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00\xcc\x1b\x00|\x01\x00\xc9\x01...19\xca\x01\x00d\x06\x00|\x01\x00\xc9\x01\x00d\x0e\x00\xca\x01\x00\x14k\x02\x00s\xcf\x00t\x02\x00\x82\x01\x00d\x00\x00S' next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def handle_bytecode(self, co_code, next_instr, ec): try: > next_instr = self.dispatch_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:71: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_open_arr...uild\pypy\module\_cffi_backend\test\test_recompiler.py:446]', line 1> at line 5 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x01\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00\xcc\x1b\x00|\x01\x00\xc9\x01...19\xca\x01\x00d\x06\x00|\x01\x00\xc9\x01\x00d\x0e\x00\xca\x01\x00\x14k\x02\x00s\xcf\x00t\x02\x00\x82\x01\x00d\x00\x00S' next_instr = 18L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> @jit.unroll_safe def dispatch_bytecode(self, co_code, next_instr, ec): while True: self.last_instr = intmask(next_instr) if jit.we_are_jitted(): if self.debugdata: ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) else: # Only reload next_instr from last_instr when something that # can modify it actually ran (trace function or action # dispatcher). In the common case (no trace, positive ticker) # next_instr is unchanged and the round-trip is skipped. _d = self.debugdata if ec.space.reverse_debugging or ( _d is not None and _d.w_f_trace is not None) or ( not we_are_translated() and 'bytecode_only_trace' in ec.__dict__): ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) actionflag = ec.space.actionflag if actionflag.decrement_ticker(TICK_COUNTER_STEP) < 0: actionflag.action_dispatcher(ec, self) next_instr = r_uint(self.last_instr) opcode = ord(co_code[next_instr]) next_instr += 1 if opcode >= HAVE_ARGUMENT: lo = ord(co_code[next_instr]) hi = ord(co_code[next_instr+1]) next_instr += 2 oparg = (hi * 256) | lo else: oparg = 0 # note: the structure of the code here is such that it makes # (after translation) a big "if/elif" chain, which is then # turned into a switch(). while opcode == opcodedesc.EXTENDED_ARG.index: opcode = ord(co_code[next_instr]) if opcode < HAVE_ARGUMENT: raise BytecodeCorruption lo = ord(co_code[next_instr+1]) hi = ord(co_code[next_instr+2]) next_instr += 3 oparg = (oparg * 65536) | (hi * 256) | lo if opcode == opcodedesc.RETURN_VALUE.index: if not self.blockstack_non_empty(): self.frame_finished_execution = True # for generators raise Return w_returnvalue = self.popvalue() block = self.unrollstack(SReturnValue.kind) if block is None: self.pushvalue(w_returnvalue) raise Return else: unroller = SReturnValue(w_returnvalue) next_instr = block.handle(self, unroller) return next_instr # now inside a 'finally' block elif opcode == opcodedesc.END_FINALLY.index: unroller = self.end_finally() if isinstance(unroller, SuspendedUnroller): # go on unrolling the stack block = self.unrollstack(unroller.kind) if block is None: w_result = unroller.nomoreblocks() self.pushvalue(w_result) raise Return else: next_instr = block.handle(self, unroller) return next_instr elif opcode == opcodedesc.JUMP_ABSOLUTE.index: return self.jump_absolute(oparg, ec) elif opcode == opcodedesc.BREAK_LOOP.index: next_instr = self.BREAK_LOOP(oparg, next_instr) elif opcode == opcodedesc.CONTINUE_LOOP.index: return self.CONTINUE_LOOP(oparg, next_instr) elif opcode == opcodedesc.FOR_ITER.index: next_instr = self.FOR_ITER(oparg, next_instr) elif opcode == opcodedesc.JUMP_FORWARD.index: next_instr = self.JUMP_FORWARD(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_FALSE_OR_POP.index: next_instr = self.JUMP_IF_FALSE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_NOT_DEBUG.index: next_instr = self.JUMP_IF_NOT_DEBUG(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_TRUE_OR_POP.index: next_instr = self.JUMP_IF_TRUE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_FALSE.index: next_instr = self.POP_JUMP_IF_FALSE(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_TRUE.index: next_instr = self.POP_JUMP_IF_TRUE(oparg, next_instr) elif opcode == opcodedesc.BINARY_ADD.index: self.BINARY_ADD(oparg, next_instr) elif opcode == opcodedesc.BINARY_AND.index: self.BINARY_AND(oparg, next_instr) elif opcode == opcodedesc.BINARY_DIVIDE.index: self.BINARY_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_FLOOR_DIVIDE.index: self.BINARY_FLOOR_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_LSHIFT.index: self.BINARY_LSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_MODULO.index: self.BINARY_MODULO(oparg, next_instr) elif opcode == opcodedesc.BINARY_MULTIPLY.index: self.BINARY_MULTIPLY(oparg, next_instr) elif opcode == opcodedesc.BINARY_OR.index: self.BINARY_OR(oparg, next_instr) elif opcode == opcodedesc.BINARY_POWER.index: self.BINARY_POWER(oparg, next_instr) elif opcode == opcodedesc.BINARY_RSHIFT.index: self.BINARY_RSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBSCR.index: self.BINARY_SUBSCR(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBTRACT.index: self.BINARY_SUBTRACT(oparg, next_instr) elif opcode == opcodedesc.BINARY_TRUE_DIVIDE.index: self.BINARY_TRUE_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_XOR.index: self.BINARY_XOR(oparg, next_instr) elif opcode == opcodedesc.BUILD_CLASS.index: self.BUILD_CLASS(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST.index: self.BUILD_LIST(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST_FROM_ARG.index: self.BUILD_LIST_FROM_ARG(oparg, next_instr) elif opcode == opcodedesc.BUILD_MAP.index: self.BUILD_MAP(oparg, next_instr) elif opcode == opcodedesc.BUILD_SET.index: self.BUILD_SET(oparg, next_instr) elif opcode == opcodedesc.BUILD_SLICE.index: self.BUILD_SLICE(oparg, next_instr) elif opcode == opcodedesc.BUILD_TUPLE.index: self.BUILD_TUPLE(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION.index: self.CALL_FUNCTION(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_KW.index: self.CALL_FUNCTION_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR.index: self.CALL_FUNCTION_VAR(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR_KW.index: self.CALL_FUNCTION_VAR_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_METHOD.index: > self.CALL_METHOD(oparg, next_instr) interpreter\pyopcode.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ f = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_open_arr...uild\pypy\module\_cffi_backend\test\test_recompiler.py:446]', line 1> at line 5 oparg = 3, ignored = (18L,), n_args = 3, n_kwargs = 0, w_self = None @jit.unroll_safe def CALL_METHOD(f, oparg, *ignored): # opargs contains the arg, and kwarg count, excluding the implicit 'self' n_args = oparg & 0xff n_kwargs = (oparg >> 8) & 0xff w_self = f.peekvalue_maybe_none(n_args + (2 * n_kwargs)) n = n_args + (w_self is not None) if not n_kwargs: w_callable = f.peekvalue(n_args + (2 * n_kwargs) + 1) w_result = f.space.call_valuestack( > w_callable, n, f, methodcall=w_self is not None, dropvalues=n_args + 2) objspace\std\callmethod.py:96: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_open_arr...uild\pypy\module\_cffi_backend\test\test_recompiler.py:446]', line 1> at line 5 dropvalues = 5, methodcall = False def call_valuestack(self, w_func, nargs, frame, dropvalues, methodcall=False): # methodcall is only used for better error messages in argument.py from pypy.interpreter.function import Function, Method, is_builtin_code if frame.get_is_being_profiled() and is_builtin_code(w_func): # XXX: this code is copied&pasted :-( from the slow path below # call_valuestack(). args = frame.make_arguments(nargs) frame.dropvalues(dropvalues) return self.call_args_and_c_profile(frame, w_func, args) if not self.config.objspace.disable_call_speedhacks: # start of hack for performance if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: w_func = w_func.w_function # reuse callable stack place for w_inst frame.settopvalue(w_inst, nargs) nargs += 1 methodcall = True elif nargs > 0 and ( self.abstract_isinstance_w(frame.peekvalue(nargs-1), # :-( w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): return w_func.funccall_valuestack( > nargs, frame, methodcall=methodcall, dropvalues=dropvalues) interpreter\baseobjspace.py:1243: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_open_arr...uild\pypy\module\_cffi_backend\test\test_recompiler.py:446]', line 1> at line 5 dropvalues = 5, methodcall = False def funccall_valuestack(self, nargs, frame, dropvalues, methodcall=False): # speed hack # methodcall is only for better error messages from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit # if (jit.we_are_jitted() and code is self.space._code_of_sys_exc_info and nargs == 0): frame.dropvalues(dropvalues) from pypy.module.sys.vm import exc_info_direct return exc_info_direct(self.space, frame) # fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: f_0 = frame.peekvalue(0) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, f_0) elif nargs == 2: f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, f_1, f_0) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) frame.dropvalues(dropvalues) return code.fastcall_3(self.space, self, f_2, f_1, f_0) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) f_3 = frame.peekvalue(3) frame.dropvalues(dropvalues) return code.fastcall_4(self.space, self, f_3, f_2, f_1, f_0) elif (nargs | Code.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) return self._flat_pycall(code, nargs, frame, dropvalues) elif fast_natural_arity & Code.FLATPYCALL: natural_arity = fast_natural_arity & 0xff if natural_arity > nargs >= natural_arity - len(self.defs_w): assert isinstance(code, PyCode) return self._flat_pycall_defaults(code, nargs, frame, natural_arity - nargs, dropvalues) elif fast_natural_arity == Code.PASSTHROUGHARGS1 and nargs >= 1: assert isinstance(code, gateway.BuiltinCodePassThroughArguments1) w_obj = frame.peekvalue(nargs-1) args = frame.make_arguments(nargs-1) frame.dropvalues(dropvalues) return code.funcrun_obj(self, w_obj, args) args = frame.make_arguments(nargs, methodcall=methodcall) frame.dropvalues(dropvalues) > return self.call_args(args) interpreter\function.py:190: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('struct foo_s { int b; int a[]; };'), W_BytesObject('test_open_array_in_struct'), W_BytesObject('struct foo_s { int b; int a[]; };')]) def call_args(self, args): # delegate activation to code > w_res = self.getcode().funcrun(self, args) interpreter\function.py:68: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('struct foo_s { int b; int a[]; };'), W_BytesObject('test_open_array_in_struct'), W_BytesObject('struct foo_s { int b; int a[]; };')]) def funcrun(self, func, args): > return BuiltinCode.funcrun_obj(self, func, None, args) interpreter\gateway.py:781: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('struct foo_s { int b; int a[]; };'), W_BytesObject('test_open_array_in_struct'), W_BytesObject('struct foo_s { int b; int a[]; };')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: w_result = activation._run(space, scope_w) except DescrMismatch: if w_obj is not None: args = args.prepend(w_obj) return self._type_unwrap_mismatch(space, args) except Exception as e: > self.handle_exception(space, e) interpreter\gateway.py:795: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> space = StdObjSpace e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def handle_exception(self, space, e): try: if not we_are_translated(): raise raise e except OperationError: raise except Exception as e: # general fall-back from pypy.interpreter import error > raise error.get_converted_unexpected_exception(space, e) interpreter\gateway.py:819: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('struct foo_s { int b; int a[]; };'), W_BytesObject('test_open_array_in_struct'), W_BytesObject('struct foo_s { int b; int a[]; };')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: > w_result = activation._run(space, scope_w) interpreter\gateway.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinActivation_UwS_ObjSpace_text_text_text_W_Root_W_Root_W_Root_int_W_Root object at 0x000002791c13af38> space = StdObjSpace scope_w = [W_BytesObject('struct foo_s { int b; int a[]; };'), W_BytesObject('test_open_array_in_struct'), W_BytesObject('struct foo_s { int b; int a[]; };'), None, None, None, ...] def _run(self, space, scope_w): > return self.behavior(space, space.text_w(scope_w[0]), space.text_w(scope_w[1]), space.text_w(scope_w[2]), scope_w[3], scope_w[4], scope_w[5], space.gateway_int_w(scope_w[6]), scope_w[7]) <3152-codegen d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\rpython\tool\sourcetools.py:200>:3: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace, cdef = 'struct foo_s { int b; int a[]; };' module_name = '_CFFI_test_open_array_in_struct' source = 'struct foo_s { int b; int a[]; };', w_includes = None w_extra_source = None, w_min_version = None, packed = 0 w_extra_compile_args = None @unwrap_spec(cdef='text', module_name='text', source='text', packed=int) def prepare(space, cdef, module_name, source, w_includes=None, w_extra_source=None, w_min_version=None, packed=False, w_extra_compile_args=None): try: import cffi from cffi import FFI # <== the system one, which from cffi import recompiler # needs to be at least cffi 1.0.4 from cffi import ffiplatform except ImportError: pytest.skip("system cffi module not found or older than 1.0.0") if w_min_version is None: min_version = (1, 4, 0) else: min_version = tuple(space.unwrap(w_min_version)) if cffi.__version_info__ < min_version: pytest.skip("system cffi module needs to be at least %s, got %s" % ( min_version, cffi.__version_info__)) space.appexec([], """(): import _cffi_backend # force it to be initialized """) includes = [] if w_includes: includes += space.unpackiterable(w_includes) assert module_name.startswith('test_') module_name = '_CFFI_' + module_name rdir = udir.ensure('recompiler', dir=1) rdir.join('Python.h').write( '#include <stdio.h>\n' '#define PYPY_VERSION XX\n' '#define PyMODINIT_FUNC /*exported*/ void\n' ) path = module_name.replace('.', os.sep) if '.' in module_name: subrdir = rdir.join(module_name[:module_name.index('.')]) os.mkdir(str(subrdir)) else: subrdir = rdir c_file = str(rdir.join('%s.c' % path)) ffi = FFI() for include_ffi_object in includes: ffi.include(include_ffi_object._test_recompiler_source_ffi) ffi.cdef(cdef, packed=packed) ffi.set_source(module_name, source) ffi.emit_c_code(c_file) base_module_name = module_name.split('.')[-1] sources = [] if w_extra_source is not None: sources.append(space.str_w(w_extra_source)) kwargs = {} # GCC 14 promotes -Wincompatible-pointer-types from a warning to an error # by default, which breaks cffi's intentionally-mismatched field-check # probes (e.g. test_misdeclared_field_1). Keep it a warning so the module # compiles and cffi's runtime checks can run. extra = ['-Wno-error=incompatible-pointer-types'] if w_extra_compile_args is not None: extra = extra + space.unwrap(w_extra_compile_args) kwargs['extra_compile_args'] = extra ext = ffiplatform.get_extension(c_file, module_name, include_dirs=[str(rdir)], export_symbols=['_cffi_pypyinit_' + base_module_name], sources=sources, **kwargs) > ffiplatform.compile(str(rdir), ext) module\_cffi_backend\test\test_recompiler.py:86: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x0000027921a7e260> compiler_verbose = 0, debug = None def compile(tmpdir, ext, compiler_verbose=0, debug=None): """Compile a C extension module using distutils.""" saved_environ = os.environ.copy() try: > outputfilename = _build(tmpdir, ext, compiler_verbose, debug) d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x0000027921a7e260> compiler_verbose = 0, debug = 0 def _build(tmpdir, ext, compiler_verbose=0, debug=None): # XXX compact but horrible :-( from cffi._shimmed_dist_utils import Distribution, CompileError, LinkError, set_threshold, set_verbosity dist = Distribution({'ext_modules': [ext]}) dist.parse_config_files() options = dist.get_option_dict('build_ext') if debug is None: debug = sys.flags.debug options['debug'] = ('ffiplatform', debug) options['force'] = ('ffiplatform', True) options['build_lib'] = ('ffiplatform', tmpdir) options['build_temp'] = ('ffiplatform', tmpdir) # try: old_level = set_threshold(0) or 0 try: set_verbosity(compiler_verbose) dist.run_command('build_ext') cmd_obj = dist.get_command_obj('build_ext') [soname] = cmd_obj.get_outputs() finally: set_threshold(old_level) except (CompileError, LinkError) as e: > raise VerificationError('%s: %s' % (e.__class__.__name__, e)) E VerificationError: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2 d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:54: VerificationError ---------------------------- Captured stdout call ----------------------------- generating d:\systemtemp\pytest\usession-main-595\recompiler\_CFFI_test_open_array_in_struct.c ---------------------------- Captured stderr call ----------------------------- cl : Command line error D8021 : invalid numeric argument '/Wno-error=incompatible-pointer-types' ____________________ AppTestRecompiler.test_math_sin_type _____________________ self = <CallInfo when='call' exception: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2> func = <function <lambda> at 0x000002791bb52548>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ..\_pytest\runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ..\_pytest\runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_math_sin_type'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_math_sin_type'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ..\_pytest\vendored_packages\pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00000279153616a8> hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_math_sin_type'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_math_sin_type'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ..\_pytest\vendored_packages\pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_math_sin_type'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_math_sin_type'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ..\_pytest\vendored_packages\pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_math_sin_type'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791fb21718> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...h_sin_type'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027926932960> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027926932960> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...h_sin_type'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_math_sin_type'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791fb216c8> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...h_sin_type'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027926932920> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027926932920> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...h_sin_type'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_math_sin_type'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ..\_pytest\vendored_packages\pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_math_sin_type'> def pytest_runtest_call(item): try: > item.runtest() ..\_pytest\runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_math_sin_type'> def runtest(self): target = self.obj if self.config.option.runappdirect: return target() space = target.im_self.space filename = self._getdynfilename(target) func = app2interp_temp(target.im_func, filename=filename) w_instance = self.parent.w_instance > self.execute_appex(space, func, space, w_instance) tool\pytest\apptest.py:89: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_math_sin_type'>, space = StdObjSpace target = <function test_math_sin_type at 0x000002791bb35538> args = (StdObjSpace, <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>) def execute_appex(self, space, target, *args): self.space = space try: > target(*args) tool\pytest\apptest.py:30: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) w_func = <Function test_math_sin_type> args = <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8> def appcaller(space, *args_w): if not isinstance(space, ObjSpace): raise TypeError("first argument must be a space instance.") # the last argument can be an Arguments w_func = self.wget(space, name) if not args_w: return space.call_function(w_func) else: args = args_w[-1] assert args is not None if not isinstance(args, Arguments): > return space.call_function(w_func, *args_w) interpreter\gateway.py:1227: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <Function test_math_sin_type> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) nargs = 1, Function = <class 'pypy.interpreter.function.Function'> Method = <class 'pypy.interpreter.function.Method'> def call_function(self, w_func, *args_w): nargs = len(args_w) # used for pruning funccall versions if not self.config.objspace.disable_call_speedhacks and nargs < 5: # start of hack for performance from pypy.interpreter.function import Function, Method if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: if nargs < 4: func = w_func.w_function if isinstance(func, Function): return func.funccall(w_inst, *args_w) elif args_w and ( self.abstract_isinstance_w(args_w[0], w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): > return w_func.funccall(*args_w) interpreter\baseobjspace.py:1210: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <Function test_math_sin_type> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) gateway = <module 'pypy.interpreter.gateway' from 'd:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\interpreter\\gateway.pyc'> PyCode = <class 'pypy.interpreter.pycode.PyCode'> code = <code object test_math_sin_type, file '[d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:457]', line 1> def funccall(self, *args_w): # speed hack from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit nargs = len(args_w) fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, args_w[0]) elif nargs == 2: assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, args_w[0], args_w[1]) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) return code.fastcall_3(self.space, self, args_w[0], args_w[1], args_w[2]) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) return code.fastcall_4(self.space, self, args_w[0], args_w[1], args_w[2], args_w[3]) elif (nargs | PyCode.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) if nargs < 5: new_frame = self.space.createframe(code, self.w_func_globals, self) for i in funccallunrolling: if i < nargs: new_frame.locals_cells_stack_w[i] = args_w[i] > return new_frame.run() interpreter\function.py:118: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_math_sin...uild\pypy\module\_cffi_backend\test\test_recompiler.py:457]', line 1> at line 5 def run(self): """Start this frame's execution.""" if self.getcode().co_flags & pycode.CO_GENERATOR: from pypy.interpreter.generator import GeneratorIterator return GeneratorIterator(self) else: > return self.execute_frame() interpreter\pyframe.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_math_sin...uild\pypy\module\_cffi_backend\test\test_recompiler.py:457]', line 1> at line 5 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, executioncontext) except OperationError: raise except Exception as e: # general fall-back > raise self._convert_unexpected_exception(e) interpreter\pyframe.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_math_sin...uild\pypy\module\_cffi_backend\test\test_recompiler.py:457]', line 1> at line 5 e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def _convert_unexpected_exception(self, e): from pypy.interpreter import error > operr = error.get_converted_unexpected_exception(self.space, e) interpreter\pyframe.py:943: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_math_sin...uild\pypy\module\_cffi_backend\test\test_recompiler.py:457]', line 1> at line 5 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, > executioncontext) interpreter\pyframe.py:286: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_math_sin...uild\pypy\module\_cffi_backend\test\test_recompiler.py:457]', line 1> at line 5 pycode = <code object test_math_sin_type, file '[d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:457]', line 1> next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def dispatch(self, pycode, next_instr, ec): # For the sequel, force 'next_instr' to be unsigned for performance next_instr = r_uint(next_instr) co_code = pycode.co_code try: while True: > next_instr = self.handle_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:64: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_math_sin...uild\pypy\module\_cffi_backend\test\test_recompiler.py:457]', line 1> at line 5 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00\xcc!\x00|\x01\x00\xc9\x01\x0...\x00t\x04\x00\x82\x01\x00\xcc\x18\x00|\x02\x00j\r\x00j\x0c\x00d\t\x00k\x02\x00s\xfa\x00t\x04\x00\x82\x01\x00d\x00\x00S' next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def handle_bytecode(self, co_code, next_instr, ec): try: > next_instr = self.dispatch_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:71: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_math_sin...uild\pypy\module\_cffi_backend\test\test_recompiler.py:457]', line 1> at line 5 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00\xcc!\x00|\x01\x00\xc9\x01\x0...\x00t\x04\x00\x82\x01\x00\xcc\x18\x00|\x02\x00j\r\x00j\x0c\x00d\t\x00k\x02\x00s\xfa\x00t\x04\x00\x82\x01\x00d\x00\x00S' next_instr = 18L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> @jit.unroll_safe def dispatch_bytecode(self, co_code, next_instr, ec): while True: self.last_instr = intmask(next_instr) if jit.we_are_jitted(): if self.debugdata: ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) else: # Only reload next_instr from last_instr when something that # can modify it actually ran (trace function or action # dispatcher). In the common case (no trace, positive ticker) # next_instr is unchanged and the round-trip is skipped. _d = self.debugdata if ec.space.reverse_debugging or ( _d is not None and _d.w_f_trace is not None) or ( not we_are_translated() and 'bytecode_only_trace' in ec.__dict__): ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) actionflag = ec.space.actionflag if actionflag.decrement_ticker(TICK_COUNTER_STEP) < 0: actionflag.action_dispatcher(ec, self) next_instr = r_uint(self.last_instr) opcode = ord(co_code[next_instr]) next_instr += 1 if opcode >= HAVE_ARGUMENT: lo = ord(co_code[next_instr]) hi = ord(co_code[next_instr+1]) next_instr += 2 oparg = (hi * 256) | lo else: oparg = 0 # note: the structure of the code here is such that it makes # (after translation) a big "if/elif" chain, which is then # turned into a switch(). while opcode == opcodedesc.EXTENDED_ARG.index: opcode = ord(co_code[next_instr]) if opcode < HAVE_ARGUMENT: raise BytecodeCorruption lo = ord(co_code[next_instr+1]) hi = ord(co_code[next_instr+2]) next_instr += 3 oparg = (oparg * 65536) | (hi * 256) | lo if opcode == opcodedesc.RETURN_VALUE.index: if not self.blockstack_non_empty(): self.frame_finished_execution = True # for generators raise Return w_returnvalue = self.popvalue() block = self.unrollstack(SReturnValue.kind) if block is None: self.pushvalue(w_returnvalue) raise Return else: unroller = SReturnValue(w_returnvalue) next_instr = block.handle(self, unroller) return next_instr # now inside a 'finally' block elif opcode == opcodedesc.END_FINALLY.index: unroller = self.end_finally() if isinstance(unroller, SuspendedUnroller): # go on unrolling the stack block = self.unrollstack(unroller.kind) if block is None: w_result = unroller.nomoreblocks() self.pushvalue(w_result) raise Return else: next_instr = block.handle(self, unroller) return next_instr elif opcode == opcodedesc.JUMP_ABSOLUTE.index: return self.jump_absolute(oparg, ec) elif opcode == opcodedesc.BREAK_LOOP.index: next_instr = self.BREAK_LOOP(oparg, next_instr) elif opcode == opcodedesc.CONTINUE_LOOP.index: return self.CONTINUE_LOOP(oparg, next_instr) elif opcode == opcodedesc.FOR_ITER.index: next_instr = self.FOR_ITER(oparg, next_instr) elif opcode == opcodedesc.JUMP_FORWARD.index: next_instr = self.JUMP_FORWARD(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_FALSE_OR_POP.index: next_instr = self.JUMP_IF_FALSE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_NOT_DEBUG.index: next_instr = self.JUMP_IF_NOT_DEBUG(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_TRUE_OR_POP.index: next_instr = self.JUMP_IF_TRUE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_FALSE.index: next_instr = self.POP_JUMP_IF_FALSE(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_TRUE.index: next_instr = self.POP_JUMP_IF_TRUE(oparg, next_instr) elif opcode == opcodedesc.BINARY_ADD.index: self.BINARY_ADD(oparg, next_instr) elif opcode == opcodedesc.BINARY_AND.index: self.BINARY_AND(oparg, next_instr) elif opcode == opcodedesc.BINARY_DIVIDE.index: self.BINARY_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_FLOOR_DIVIDE.index: self.BINARY_FLOOR_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_LSHIFT.index: self.BINARY_LSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_MODULO.index: self.BINARY_MODULO(oparg, next_instr) elif opcode == opcodedesc.BINARY_MULTIPLY.index: self.BINARY_MULTIPLY(oparg, next_instr) elif opcode == opcodedesc.BINARY_OR.index: self.BINARY_OR(oparg, next_instr) elif opcode == opcodedesc.BINARY_POWER.index: self.BINARY_POWER(oparg, next_instr) elif opcode == opcodedesc.BINARY_RSHIFT.index: self.BINARY_RSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBSCR.index: self.BINARY_SUBSCR(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBTRACT.index: self.BINARY_SUBTRACT(oparg, next_instr) elif opcode == opcodedesc.BINARY_TRUE_DIVIDE.index: self.BINARY_TRUE_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_XOR.index: self.BINARY_XOR(oparg, next_instr) elif opcode == opcodedesc.BUILD_CLASS.index: self.BUILD_CLASS(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST.index: self.BUILD_LIST(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST_FROM_ARG.index: self.BUILD_LIST_FROM_ARG(oparg, next_instr) elif opcode == opcodedesc.BUILD_MAP.index: self.BUILD_MAP(oparg, next_instr) elif opcode == opcodedesc.BUILD_SET.index: self.BUILD_SET(oparg, next_instr) elif opcode == opcodedesc.BUILD_SLICE.index: self.BUILD_SLICE(oparg, next_instr) elif opcode == opcodedesc.BUILD_TUPLE.index: self.BUILD_TUPLE(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION.index: self.CALL_FUNCTION(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_KW.index: self.CALL_FUNCTION_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR.index: self.CALL_FUNCTION_VAR(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR_KW.index: self.CALL_FUNCTION_VAR_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_METHOD.index: > self.CALL_METHOD(oparg, next_instr) interpreter\pyopcode.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ f = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_math_sin...uild\pypy\module\_cffi_backend\test\test_recompiler.py:457]', line 1> at line 5 oparg = 3, ignored = (18L,), n_args = 3, n_kwargs = 0, w_self = None @jit.unroll_safe def CALL_METHOD(f, oparg, *ignored): # opargs contains the arg, and kwarg count, excluding the implicit 'self' n_args = oparg & 0xff n_kwargs = (oparg >> 8) & 0xff w_self = f.peekvalue_maybe_none(n_args + (2 * n_kwargs)) n = n_args + (w_self is not None) if not n_kwargs: w_callable = f.peekvalue(n_args + (2 * n_kwargs) + 1) w_result = f.space.call_valuestack( > w_callable, n, f, methodcall=w_self is not None, dropvalues=n_args + 2) objspace\std\callmethod.py:96: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_math_sin...uild\pypy\module\_cffi_backend\test\test_recompiler.py:457]', line 1> at line 5 dropvalues = 5, methodcall = False def call_valuestack(self, w_func, nargs, frame, dropvalues, methodcall=False): # methodcall is only used for better error messages in argument.py from pypy.interpreter.function import Function, Method, is_builtin_code if frame.get_is_being_profiled() and is_builtin_code(w_func): # XXX: this code is copied&pasted :-( from the slow path below # call_valuestack(). args = frame.make_arguments(nargs) frame.dropvalues(dropvalues) return self.call_args_and_c_profile(frame, w_func, args) if not self.config.objspace.disable_call_speedhacks: # start of hack for performance if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: w_func = w_func.w_function # reuse callable stack place for w_inst frame.settopvalue(w_inst, nargs) nargs += 1 methodcall = True elif nargs > 0 and ( self.abstract_isinstance_w(frame.peekvalue(nargs-1), # :-( w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): return w_func.funccall_valuestack( > nargs, frame, methodcall=methodcall, dropvalues=dropvalues) interpreter\baseobjspace.py:1243: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_math_sin...uild\pypy\module\_cffi_backend\test\test_recompiler.py:457]', line 1> at line 5 dropvalues = 5, methodcall = False def funccall_valuestack(self, nargs, frame, dropvalues, methodcall=False): # speed hack # methodcall is only for better error messages from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit # if (jit.we_are_jitted() and code is self.space._code_of_sys_exc_info and nargs == 0): frame.dropvalues(dropvalues) from pypy.module.sys.vm import exc_info_direct return exc_info_direct(self.space, frame) # fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: f_0 = frame.peekvalue(0) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, f_0) elif nargs == 2: f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, f_1, f_0) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) frame.dropvalues(dropvalues) return code.fastcall_3(self.space, self, f_2, f_1, f_0) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) f_3 = frame.peekvalue(3) frame.dropvalues(dropvalues) return code.fastcall_4(self.space, self, f_3, f_2, f_1, f_0) elif (nargs | Code.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) return self._flat_pycall(code, nargs, frame, dropvalues) elif fast_natural_arity & Code.FLATPYCALL: natural_arity = fast_natural_arity & 0xff if natural_arity > nargs >= natural_arity - len(self.defs_w): assert isinstance(code, PyCode) return self._flat_pycall_defaults(code, nargs, frame, natural_arity - nargs, dropvalues) elif fast_natural_arity == Code.PASSTHROUGHARGS1 and nargs >= 1: assert isinstance(code, gateway.BuiltinCodePassThroughArguments1) w_obj = frame.peekvalue(nargs-1) args = frame.make_arguments(nargs-1) frame.dropvalues(dropvalues) return code.funcrun_obj(self, w_obj, args) args = frame.make_arguments(nargs, methodcall=methodcall) frame.dropvalues(dropvalues) > return self.call_args(args) interpreter\function.py:190: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('double sin(double); void *xxtestfunc();'), W_BytesOb...<math.h>\n void *xxtestfunc(void) { return 0; }\n ')]) def call_args(self, args): # delegate activation to code > w_res = self.getcode().funcrun(self, args) interpreter\function.py:68: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('double sin(double); void *xxtestfunc();'), W_BytesOb...<math.h>\n void *xxtestfunc(void) { return 0; }\n ')]) def funcrun(self, func, args): > return BuiltinCode.funcrun_obj(self, func, None, args) interpreter\gateway.py:781: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('double sin(double); void *xxtestfunc();'), W_BytesOb...<math.h>\n void *xxtestfunc(void) { return 0; }\n ')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: w_result = activation._run(space, scope_w) except DescrMismatch: if w_obj is not None: args = args.prepend(w_obj) return self._type_unwrap_mismatch(space, args) except Exception as e: > self.handle_exception(space, e) interpreter\gateway.py:795: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> space = StdObjSpace e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def handle_exception(self, space, e): try: if not we_are_translated(): raise raise e except OperationError: raise except Exception as e: # general fall-back from pypy.interpreter import error > raise error.get_converted_unexpected_exception(space, e) interpreter\gateway.py:819: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('double sin(double); void *xxtestfunc();'), W_BytesOb...<math.h>\n void *xxtestfunc(void) { return 0; }\n ')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: > w_result = activation._run(space, scope_w) interpreter\gateway.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinActivation_UwS_ObjSpace_text_text_text_W_Root_W_Root_W_Root_int_W_Root object at 0x000002791c13af38> space = StdObjSpace scope_w = [W_BytesObject('double sin(double); void *xxtestfunc();'), W_BytesObject('test_math_sin_type'), W_BytesObject('#include <math.h>\n void *xxtestfunc(void) { return 0; }\n '), None, None, None, ...] def _run(self, space, scope_w): > return self.behavior(space, space.text_w(scope_w[0]), space.text_w(scope_w[1]), space.text_w(scope_w[2]), scope_w[3], scope_w[4], scope_w[5], space.gateway_int_w(scope_w[6]), scope_w[7]) <3152-codegen d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\rpython\tool\sourcetools.py:200>:3: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace, cdef = 'double sin(double); void *xxtestfunc();' module_name = '_CFFI_test_math_sin_type' source = '#include <math.h>\n void *xxtestfunc(void) { return 0; }\n ' w_includes = None, w_extra_source = None, w_min_version = None, packed = 0 w_extra_compile_args = None @unwrap_spec(cdef='text', module_name='text', source='text', packed=int) def prepare(space, cdef, module_name, source, w_includes=None, w_extra_source=None, w_min_version=None, packed=False, w_extra_compile_args=None): try: import cffi from cffi import FFI # <== the system one, which from cffi import recompiler # needs to be at least cffi 1.0.4 from cffi import ffiplatform except ImportError: pytest.skip("system cffi module not found or older than 1.0.0") if w_min_version is None: min_version = (1, 4, 0) else: min_version = tuple(space.unwrap(w_min_version)) if cffi.__version_info__ < min_version: pytest.skip("system cffi module needs to be at least %s, got %s" % ( min_version, cffi.__version_info__)) space.appexec([], """(): import _cffi_backend # force it to be initialized """) includes = [] if w_includes: includes += space.unpackiterable(w_includes) assert module_name.startswith('test_') module_name = '_CFFI_' + module_name rdir = udir.ensure('recompiler', dir=1) rdir.join('Python.h').write( '#include <stdio.h>\n' '#define PYPY_VERSION XX\n' '#define PyMODINIT_FUNC /*exported*/ void\n' ) path = module_name.replace('.', os.sep) if '.' in module_name: subrdir = rdir.join(module_name[:module_name.index('.')]) os.mkdir(str(subrdir)) else: subrdir = rdir c_file = str(rdir.join('%s.c' % path)) ffi = FFI() for include_ffi_object in includes: ffi.include(include_ffi_object._test_recompiler_source_ffi) ffi.cdef(cdef, packed=packed) ffi.set_source(module_name, source) ffi.emit_c_code(c_file) base_module_name = module_name.split('.')[-1] sources = [] if w_extra_source is not None: sources.append(space.str_w(w_extra_source)) kwargs = {} # GCC 14 promotes -Wincompatible-pointer-types from a warning to an error # by default, which breaks cffi's intentionally-mismatched field-check # probes (e.g. test_misdeclared_field_1). Keep it a warning so the module # compiles and cffi's runtime checks can run. extra = ['-Wno-error=incompatible-pointer-types'] if w_extra_compile_args is not None: extra = extra + space.unwrap(w_extra_compile_args) kwargs['extra_compile_args'] = extra ext = ffiplatform.get_extension(c_file, module_name, include_dirs=[str(rdir)], export_symbols=['_cffi_pypyinit_' + base_module_name], sources=sources, **kwargs) > ffiplatform.compile(str(rdir), ext) module\_cffi_backend\test\test_recompiler.py:86: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x0000027926933360> compiler_verbose = 0, debug = None def compile(tmpdir, ext, compiler_verbose=0, debug=None): """Compile a C extension module using distutils.""" saved_environ = os.environ.copy() try: > outputfilename = _build(tmpdir, ext, compiler_verbose, debug) d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x0000027926933360> compiler_verbose = 0, debug = 0 def _build(tmpdir, ext, compiler_verbose=0, debug=None): # XXX compact but horrible :-( from cffi._shimmed_dist_utils import Distribution, CompileError, LinkError, set_threshold, set_verbosity dist = Distribution({'ext_modules': [ext]}) dist.parse_config_files() options = dist.get_option_dict('build_ext') if debug is None: debug = sys.flags.debug options['debug'] = ('ffiplatform', debug) options['force'] = ('ffiplatform', True) options['build_lib'] = ('ffiplatform', tmpdir) options['build_temp'] = ('ffiplatform', tmpdir) # try: old_level = set_threshold(0) or 0 try: set_verbosity(compiler_verbose) dist.run_command('build_ext') cmd_obj = dist.get_command_obj('build_ext') [soname] = cmd_obj.get_outputs() finally: set_threshold(old_level) except (CompileError, LinkError) as e: > raise VerificationError('%s: %s' % (e.__class__.__name__, e)) E VerificationError: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2 d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:54: VerificationError ---------------------------- Captured stdout call ----------------------------- generating d:\systemtemp\pytest\usession-main-595\recompiler\_CFFI_test_math_sin_type.c ---------------------------- Captured stderr call ----------------------------- cl : Command line error D8021 : invalid numeric argument '/Wno-error=incompatible-pointer-types' _________ AppTestRecompiler.test_verify_anonymous_struct_with_typedef _________ self = <CallInfo when='call' exception: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2> func = <function <lambda> at 0x000002791c6c69f8>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ..\_pytest\runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ..\_pytest\runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_verify_anonymous_struct_with_ty...: <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_verify_anonymous_struct_with_typedef'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ..\_pytest\vendored_packages\pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00000279153616a8> hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_verify_anonymous_struct_with_ty...: <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_verify_anonymous_struct_with_typedef'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ..\_pytest\vendored_packages\pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_verify_anonymous_struct_with_ty...: <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_verify_anonymous_struct_with_typedef'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ..\_pytest\vendored_packages\pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_verify_anonymous_struct_with_typedef'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791e731b00> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...th_typedef'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027927525660> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027927525660> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...th_typedef'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_verify_anonymous_struct_with_typedef'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791e731ab0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...th_typedef'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027927525620> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027927525620> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...th_typedef'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_verify_anonymous_struct_with_typedef'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ..\_pytest\vendored_packages\pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_verify_anonymous_struct_with_typedef'> def pytest_runtest_call(item): try: > item.runtest() ..\_pytest\runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_verify_anonymous_struct_with_typedef'> def runtest(self): target = self.obj if self.config.option.runappdirect: return target() space = target.im_self.space filename = self._getdynfilename(target) func = app2interp_temp(target.im_func, filename=filename) w_instance = self.parent.w_instance > self.execute_appex(space, func, space, w_instance) tool\pytest\apptest.py:89: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_verify_anonymous_struct_with_typedef'> space = StdObjSpace target = <function test_verify_anonymous_struct_with_typedef at 0x000002791c6c6f98> args = (StdObjSpace, <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>) def execute_appex(self, space, target, *args): self.space = space try: > target(*args) tool\pytest\apptest.py:30: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) w_func = <Function test_verify_anonymous_struct_with_typedef> args = <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8> def appcaller(space, *args_w): if not isinstance(space, ObjSpace): raise TypeError("first argument must be a space instance.") # the last argument can be an Arguments w_func = self.wget(space, name) if not args_w: return space.call_function(w_func) else: args = args_w[-1] assert args is not None if not isinstance(args, Arguments): > return space.call_function(w_func, *args_w) interpreter\gateway.py:1227: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace w_func = <Function test_verify_anonymous_struct_with_typedef> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) nargs = 1, Function = <class 'pypy.interpreter.function.Function'> Method = <class 'pypy.interpreter.function.Method'> def call_function(self, w_func, *args_w): nargs = len(args_w) # used for pruning funccall versions if not self.config.objspace.disable_call_speedhacks and nargs < 5: # start of hack for performance from pypy.interpreter.function import Function, Method if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: if nargs < 4: func = w_func.w_function if isinstance(func, Function): return func.funccall(w_inst, *args_w) elif args_w and ( self.abstract_isinstance_w(args_w[0], w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): > return w_func.funccall(*args_w) interpreter\baseobjspace.py:1210: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <Function test_verify_anonymous_struct_with_typedef> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) gateway = <module 'pypy.interpreter.gateway' from 'd:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\interpreter\\gateway.pyc'> PyCode = <class 'pypy.interpreter.pycode.PyCode'> code = <code object test_verify_anonymous_struct_with_typedef, file '[d:\pypy_stuff\b...n-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:484]', line 1> def funccall(self, *args_w): # speed hack from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit nargs = len(args_w) fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, args_w[0]) elif nargs == 2: assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, args_w[0], args_w[1]) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) return code.fastcall_3(self.space, self, args_w[0], args_w[1], args_w[2]) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) return code.fastcall_4(self.space, self, args_w[0], args_w[1], args_w[2], args_w[3]) elif (nargs | PyCode.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) if nargs < 5: new_frame = self.space.createframe(code, self.w_func_globals, self) for i in funccallunrolling: if i < nargs: new_frame.locals_cells_stack_w[i] = args_w[i] > return new_frame.run() interpreter\function.py:118: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_verify_a...uild\pypy\module\_cffi_backend\test\test_recompiler.py:484]', line 1> at line 5 def run(self): """Start this frame's execution.""" if self.getcode().co_flags & pycode.CO_GENERATOR: from pypy.interpreter.generator import GeneratorIterator return GeneratorIterator(self) else: > return self.execute_frame() interpreter\pyframe.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_verify_a...uild\pypy\module\_cffi_backend\test\test_recompiler.py:484]', line 1> at line 5 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, executioncontext) except OperationError: raise except Exception as e: # general fall-back > raise self._convert_unexpected_exception(e) interpreter\pyframe.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_verify_a...uild\pypy\module\_cffi_backend\test\test_recompiler.py:484]', line 1> at line 5 e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def _convert_unexpected_exception(self, e): from pypy.interpreter import error > operr = error.get_converted_unexpected_exception(self.space, e) interpreter\pyframe.py:943: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_verify_a...uild\pypy\module\_cffi_backend\test\test_recompiler.py:484]', line 1> at line 5 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, > executioncontext) interpreter\pyframe.py:286: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_verify_a...uild\pypy\module\_cffi_backend\test\test_recompiler.py:484]', line 1> at line 5 pycode = <code object test_verify_anonymous_struct_with_typedef, file '[d:\pypy_stuff\b...n-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:484]', line 1> next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def dispatch(self, pycode, next_instr, ec): # For the sequel, force 'next_instr' to be unsigned for performance next_instr = r_uint(next_instr) co_code = pycode.co_code try: while True: > next_instr = self.handle_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:64: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_verify_a...uild\pypy\module\_cffi_backend\test\test_recompiler.py:484]', line 1> at line 5 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00|\x01\x00\xc9\x01\x00d\x04\x0...03\x00\x83\x01\x00\xc9\x05\x00d\x07\x00\xca\x01\x00sj\x00t\x03\x00\x82\x01\x00d\x00\x00S\x03\x00\x82\x01\x00d\x00\x00S' next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def handle_bytecode(self, co_code, next_instr, ec): try: > next_instr = self.dispatch_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:71: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_verify_a...uild\pypy\module\_cffi_backend\test\test_recompiler.py:484]', line 1> at line 5 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00|\x01\x00\xc9\x01\x00d\x04\x0...03\x00\x83\x01\x00\xc9\x05\x00d\x07\x00\xca\x01\x00sj\x00t\x03\x00\x82\x01\x00d\x00\x00S\x03\x00\x82\x01\x00d\x00\x00S' next_instr = 18L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> @jit.unroll_safe def dispatch_bytecode(self, co_code, next_instr, ec): while True: self.last_instr = intmask(next_instr) if jit.we_are_jitted(): if self.debugdata: ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) else: # Only reload next_instr from last_instr when something that # can modify it actually ran (trace function or action # dispatcher). In the common case (no trace, positive ticker) # next_instr is unchanged and the round-trip is skipped. _d = self.debugdata if ec.space.reverse_debugging or ( _d is not None and _d.w_f_trace is not None) or ( not we_are_translated() and 'bytecode_only_trace' in ec.__dict__): ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) actionflag = ec.space.actionflag if actionflag.decrement_ticker(TICK_COUNTER_STEP) < 0: actionflag.action_dispatcher(ec, self) next_instr = r_uint(self.last_instr) opcode = ord(co_code[next_instr]) next_instr += 1 if opcode >= HAVE_ARGUMENT: lo = ord(co_code[next_instr]) hi = ord(co_code[next_instr+1]) next_instr += 2 oparg = (hi * 256) | lo else: oparg = 0 # note: the structure of the code here is such that it makes # (after translation) a big "if/elif" chain, which is then # turned into a switch(). while opcode == opcodedesc.EXTENDED_ARG.index: opcode = ord(co_code[next_instr]) if opcode < HAVE_ARGUMENT: raise BytecodeCorruption lo = ord(co_code[next_instr+1]) hi = ord(co_code[next_instr+2]) next_instr += 3 oparg = (oparg * 65536) | (hi * 256) | lo if opcode == opcodedesc.RETURN_VALUE.index: if not self.blockstack_non_empty(): self.frame_finished_execution = True # for generators raise Return w_returnvalue = self.popvalue() block = self.unrollstack(SReturnValue.kind) if block is None: self.pushvalue(w_returnvalue) raise Return else: unroller = SReturnValue(w_returnvalue) next_instr = block.handle(self, unroller) return next_instr # now inside a 'finally' block elif opcode == opcodedesc.END_FINALLY.index: unroller = self.end_finally() if isinstance(unroller, SuspendedUnroller): # go on unrolling the stack block = self.unrollstack(unroller.kind) if block is None: w_result = unroller.nomoreblocks() self.pushvalue(w_result) raise Return else: next_instr = block.handle(self, unroller) return next_instr elif opcode == opcodedesc.JUMP_ABSOLUTE.index: return self.jump_absolute(oparg, ec) elif opcode == opcodedesc.BREAK_LOOP.index: next_instr = self.BREAK_LOOP(oparg, next_instr) elif opcode == opcodedesc.CONTINUE_LOOP.index: return self.CONTINUE_LOOP(oparg, next_instr) elif opcode == opcodedesc.FOR_ITER.index: next_instr = self.FOR_ITER(oparg, next_instr) elif opcode == opcodedesc.JUMP_FORWARD.index: next_instr = self.JUMP_FORWARD(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_FALSE_OR_POP.index: next_instr = self.JUMP_IF_FALSE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_NOT_DEBUG.index: next_instr = self.JUMP_IF_NOT_DEBUG(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_TRUE_OR_POP.index: next_instr = self.JUMP_IF_TRUE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_FALSE.index: next_instr = self.POP_JUMP_IF_FALSE(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_TRUE.index: next_instr = self.POP_JUMP_IF_TRUE(oparg, next_instr) elif opcode == opcodedesc.BINARY_ADD.index: self.BINARY_ADD(oparg, next_instr) elif opcode == opcodedesc.BINARY_AND.index: self.BINARY_AND(oparg, next_instr) elif opcode == opcodedesc.BINARY_DIVIDE.index: self.BINARY_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_FLOOR_DIVIDE.index: self.BINARY_FLOOR_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_LSHIFT.index: self.BINARY_LSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_MODULO.index: self.BINARY_MODULO(oparg, next_instr) elif opcode == opcodedesc.BINARY_MULTIPLY.index: self.BINARY_MULTIPLY(oparg, next_instr) elif opcode == opcodedesc.BINARY_OR.index: self.BINARY_OR(oparg, next_instr) elif opcode == opcodedesc.BINARY_POWER.index: self.BINARY_POWER(oparg, next_instr) elif opcode == opcodedesc.BINARY_RSHIFT.index: self.BINARY_RSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBSCR.index: self.BINARY_SUBSCR(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBTRACT.index: self.BINARY_SUBTRACT(oparg, next_instr) elif opcode == opcodedesc.BINARY_TRUE_DIVIDE.index: self.BINARY_TRUE_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_XOR.index: self.BINARY_XOR(oparg, next_instr) elif opcode == opcodedesc.BUILD_CLASS.index: self.BUILD_CLASS(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST.index: self.BUILD_LIST(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST_FROM_ARG.index: self.BUILD_LIST_FROM_ARG(oparg, next_instr) elif opcode == opcodedesc.BUILD_MAP.index: self.BUILD_MAP(oparg, next_instr) elif opcode == opcodedesc.BUILD_SET.index: self.BUILD_SET(oparg, next_instr) elif opcode == opcodedesc.BUILD_SLICE.index: self.BUILD_SLICE(oparg, next_instr) elif opcode == opcodedesc.BUILD_TUPLE.index: self.BUILD_TUPLE(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION.index: self.CALL_FUNCTION(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_KW.index: self.CALL_FUNCTION_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR.index: self.CALL_FUNCTION_VAR(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR_KW.index: self.CALL_FUNCTION_VAR_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_METHOD.index: > self.CALL_METHOD(oparg, next_instr) interpreter\pyopcode.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ f = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_verify_a...uild\pypy\module\_cffi_backend\test\test_recompiler.py:484]', line 1> at line 5 oparg = 3, ignored = (18L,), n_args = 3, n_kwargs = 0, w_self = None @jit.unroll_safe def CALL_METHOD(f, oparg, *ignored): # opargs contains the arg, and kwarg count, excluding the implicit 'self' n_args = oparg & 0xff n_kwargs = (oparg >> 8) & 0xff w_self = f.peekvalue_maybe_none(n_args + (2 * n_kwargs)) n = n_args + (w_self is not None) if not n_kwargs: w_callable = f.peekvalue(n_args + (2 * n_kwargs) + 1) w_result = f.space.call_valuestack( > w_callable, n, f, methodcall=w_self is not None, dropvalues=n_args + 2) objspace\std\callmethod.py:96: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_verify_a...uild\pypy\module\_cffi_backend\test\test_recompiler.py:484]', line 1> at line 5 dropvalues = 5, methodcall = False def call_valuestack(self, w_func, nargs, frame, dropvalues, methodcall=False): # methodcall is only used for better error messages in argument.py from pypy.interpreter.function import Function, Method, is_builtin_code if frame.get_is_being_profiled() and is_builtin_code(w_func): # XXX: this code is copied&pasted :-( from the slow path below # call_valuestack(). args = frame.make_arguments(nargs) frame.dropvalues(dropvalues) return self.call_args_and_c_profile(frame, w_func, args) if not self.config.objspace.disable_call_speedhacks: # start of hack for performance if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: w_func = w_func.w_function # reuse callable stack place for w_inst frame.settopvalue(w_inst, nargs) nargs += 1 methodcall = True elif nargs > 0 and ( self.abstract_isinstance_w(frame.peekvalue(nargs-1), # :-( w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): return w_func.funccall_valuestack( > nargs, frame, methodcall=methodcall, dropvalues=dropvalues) interpreter\baseobjspace.py:1243: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_verify_a...uild\pypy\module\_cffi_backend\test\test_recompiler.py:484]', line 1> at line 5 dropvalues = 5, methodcall = False def funccall_valuestack(self, nargs, frame, dropvalues, methodcall=False): # speed hack # methodcall is only for better error messages from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit # if (jit.we_are_jitted() and code is self.space._code_of_sys_exc_info and nargs == 0): frame.dropvalues(dropvalues) from pypy.module.sys.vm import exc_info_direct return exc_info_direct(self.space, frame) # fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: f_0 = frame.peekvalue(0) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, f_0) elif nargs == 2: f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, f_1, f_0) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) frame.dropvalues(dropvalues) return code.fastcall_3(self.space, self, f_2, f_1, f_0) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) f_3 = frame.peekvalue(3) frame.dropvalues(dropvalues) return code.fastcall_4(self.space, self, f_3, f_2, f_1, f_0) elif (nargs | Code.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) return self._flat_pycall(code, nargs, frame, dropvalues) elif fast_natural_arity & Code.FLATPYCALL: natural_arity = fast_natural_arity & 0xff if natural_arity > nargs >= natural_arity - len(self.defs_w): assert isinstance(code, PyCode) return self._flat_pycall_defaults(code, nargs, frame, natural_arity - nargs, dropvalues) elif fast_natural_arity == Code.PASSTHROUGHARGS1 and nargs >= 1: assert isinstance(code, gateway.BuiltinCodePassThroughArguments1) w_obj = frame.peekvalue(nargs-1) args = frame.make_arguments(nargs-1) frame.dropvalues(dropvalues) return code.funcrun_obj(self, w_obj, args) args = frame.make_arguments(nargs, methodcall=methodcall) frame.dropvalues(dropvalues) > return self.call_args(args) interpreter\function.py:190: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('typedef struct { int a; long b; ...; } foo_t;'), W_B..._typedef'), W_BytesObject('typedef struct { long b; int hidden, a; } foo_t;')]) def call_args(self, args): # delegate activation to code > w_res = self.getcode().funcrun(self, args) interpreter\function.py:68: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('typedef struct { int a; long b; ...; } foo_t;'), W_B..._typedef'), W_BytesObject('typedef struct { long b; int hidden, a; } foo_t;')]) def funcrun(self, func, args): > return BuiltinCode.funcrun_obj(self, func, None, args) interpreter\gateway.py:781: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('typedef struct { int a; long b; ...; } foo_t;'), W_B..._typedef'), W_BytesObject('typedef struct { long b; int hidden, a; } foo_t;')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: w_result = activation._run(space, scope_w) except DescrMismatch: if w_obj is not None: args = args.prepend(w_obj) return self._type_unwrap_mismatch(space, args) except Exception as e: > self.handle_exception(space, e) interpreter\gateway.py:795: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> space = StdObjSpace e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def handle_exception(self, space, e): try: if not we_are_translated(): raise raise e except OperationError: raise except Exception as e: # general fall-back from pypy.interpreter import error > raise error.get_converted_unexpected_exception(space, e) interpreter\gateway.py:819: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('typedef struct { int a; long b; ...; } foo_t;'), W_B..._typedef'), W_BytesObject('typedef struct { long b; int hidden, a; } foo_t;')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: > w_result = activation._run(space, scope_w) interpreter\gateway.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinActivation_UwS_ObjSpace_text_text_text_W_Root_W_Root_W_Root_int_W_Root object at 0x000002791c13af38> space = StdObjSpace scope_w = [W_BytesObject('typedef struct { int a; long b; ...; } foo_t;'), W_BytesObject('test_verify_anonymous_struct_with_typedef'), W_BytesObject('typedef struct { long b; int hidden, a; } foo_t;'), None, None, None, ...] def _run(self, space, scope_w): > return self.behavior(space, space.text_w(scope_w[0]), space.text_w(scope_w[1]), space.text_w(scope_w[2]), scope_w[3], scope_w[4], scope_w[5], space.gateway_int_w(scope_w[6]), scope_w[7]) <3152-codegen d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\rpython\tool\sourcetools.py:200>:3: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace, cdef = 'typedef struct { int a; long b; ...; } foo_t;' module_name = '_CFFI_test_verify_anonymous_struct_with_typedef' source = 'typedef struct { long b; int hidden, a; } foo_t;', w_includes = None w_extra_source = None, w_min_version = None, packed = 0 w_extra_compile_args = None @unwrap_spec(cdef='text', module_name='text', source='text', packed=int) def prepare(space, cdef, module_name, source, w_includes=None, w_extra_source=None, w_min_version=None, packed=False, w_extra_compile_args=None): try: import cffi from cffi import FFI # <== the system one, which from cffi import recompiler # needs to be at least cffi 1.0.4 from cffi import ffiplatform except ImportError: pytest.skip("system cffi module not found or older than 1.0.0") if w_min_version is None: min_version = (1, 4, 0) else: min_version = tuple(space.unwrap(w_min_version)) if cffi.__version_info__ < min_version: pytest.skip("system cffi module needs to be at least %s, got %s" % ( min_version, cffi.__version_info__)) space.appexec([], """(): import _cffi_backend # force it to be initialized """) includes = [] if w_includes: includes += space.unpackiterable(w_includes) assert module_name.startswith('test_') module_name = '_CFFI_' + module_name rdir = udir.ensure('recompiler', dir=1) rdir.join('Python.h').write( '#include <stdio.h>\n' '#define PYPY_VERSION XX\n' '#define PyMODINIT_FUNC /*exported*/ void\n' ) path = module_name.replace('.', os.sep) if '.' in module_name: subrdir = rdir.join(module_name[:module_name.index('.')]) os.mkdir(str(subrdir)) else: subrdir = rdir c_file = str(rdir.join('%s.c' % path)) ffi = FFI() for include_ffi_object in includes: ffi.include(include_ffi_object._test_recompiler_source_ffi) ffi.cdef(cdef, packed=packed) ffi.set_source(module_name, source) ffi.emit_c_code(c_file) base_module_name = module_name.split('.')[-1] sources = [] if w_extra_source is not None: sources.append(space.str_w(w_extra_source)) kwargs = {} # GCC 14 promotes -Wincompatible-pointer-types from a warning to an error # by default, which breaks cffi's intentionally-mismatched field-check # probes (e.g. test_misdeclared_field_1). Keep it a warning so the module # compiles and cffi's runtime checks can run. extra = ['-Wno-error=incompatible-pointer-types'] if w_extra_compile_args is not None: extra = extra + space.unwrap(w_extra_compile_args) kwargs['extra_compile_args'] = extra ext = ffiplatform.get_extension(c_file, module_name, include_dirs=[str(rdir)], export_symbols=['_cffi_pypyinit_' + base_module_name], sources=sources, **kwargs) > ffiplatform.compile(str(rdir), ext) module\_cffi_backend\test\test_recompiler.py:86: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x00000279274b21e0> compiler_verbose = 0, debug = None def compile(tmpdir, ext, compiler_verbose=0, debug=None): """Compile a C extension module using distutils.""" saved_environ = os.environ.copy() try: > outputfilename = _build(tmpdir, ext, compiler_verbose, debug) d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x00000279274b21e0> compiler_verbose = 0, debug = 0 def _build(tmpdir, ext, compiler_verbose=0, debug=None): # XXX compact but horrible :-( from cffi._shimmed_dist_utils import Distribution, CompileError, LinkError, set_threshold, set_verbosity dist = Distribution({'ext_modules': [ext]}) dist.parse_config_files() options = dist.get_option_dict('build_ext') if debug is None: debug = sys.flags.debug options['debug'] = ('ffiplatform', debug) options['force'] = ('ffiplatform', True) options['build_lib'] = ('ffiplatform', tmpdir) options['build_temp'] = ('ffiplatform', tmpdir) # try: old_level = set_threshold(0) or 0 try: set_verbosity(compiler_verbose) dist.run_command('build_ext') cmd_obj = dist.get_command_obj('build_ext') [soname] = cmd_obj.get_outputs() finally: set_threshold(old_level) except (CompileError, LinkError) as e: > raise VerificationError('%s: %s' % (e.__class__.__name__, e)) E VerificationError: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2 d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:54: VerificationError ---------------------------- Captured stdout call ----------------------------- generating d:\systemtemp\pytest\usession-main-595\recompiler\_CFFI_test_verify_anonymous_struct_with_typedef.c ---------------------------- Captured stderr call ----------------------------- cl : Command line error D8021 : invalid numeric argument '/Wno-error=incompatible-pointer-types' ______ AppTestRecompiler.test_verify_anonymous_struct_with_star_typedef _______ self = <CallInfo when='call' exception: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2> func = <function <lambda> at 0x000002792a7d3bc8>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ..\_pytest\runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ..\_pytest\runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_verify_anonymous_struct_with_st...ultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_verify_anonymous_struct_with_star_typedef'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ..\_pytest\vendored_packages\pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00000279153616a8> hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_verify_anonymous_struct_with_st...ultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_verify_anonymous_struct_with_star_typedef'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ..\_pytest\vendored_packages\pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_verify_anonymous_struct_with_st...ultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_verify_anonymous_struct_with_star_typedef'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ..\_pytest\vendored_packages\pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_verify_anonymous_struct_with_star_typedef'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x0000027929372930> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...ar_typedef'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027928f6d120> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027928f6d120> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...ar_typedef'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_verify_anonymous_struct_with_star_typedef'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x0000027929372890> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...ar_typedef'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027928f6d0e0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027928f6d0e0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...ar_typedef'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_verify_anonymous_struct_with_star_typedef'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ..\_pytest\vendored_packages\pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_verify_anonymous_struct_with_star_typedef'> def pytest_runtest_call(item): try: > item.runtest() ..\_pytest\runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_verify_anonymous_struct_with_star_typedef'> def runtest(self): target = self.obj if self.config.option.runappdirect: return target() space = target.im_self.space filename = self._getdynfilename(target) func = app2interp_temp(target.im_func, filename=filename) w_instance = self.parent.w_instance > self.execute_appex(space, func, space, w_instance) tool\pytest\apptest.py:89: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_verify_anonymous_struct_with_star_typedef'> space = StdObjSpace target = <function test_verify_anonymous_struct_with_star_typedef at 0x000002792a7d3cb8> args = (StdObjSpace, <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>) def execute_appex(self, space, target, *args): self.space = space try: > target(*args) tool\pytest\apptest.py:30: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) w_func = <Function test_verify_anonymous_struct_with_star_typedef> args = <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8> def appcaller(space, *args_w): if not isinstance(space, ObjSpace): raise TypeError("first argument must be a space instance.") # the last argument can be an Arguments w_func = self.wget(space, name) if not args_w: return space.call_function(w_func) else: args = args_w[-1] assert args is not None if not isinstance(args, Arguments): > return space.call_function(w_func, *args_w) interpreter\gateway.py:1227: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace w_func = <Function test_verify_anonymous_struct_with_star_typedef> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) nargs = 1, Function = <class 'pypy.interpreter.function.Function'> Method = <class 'pypy.interpreter.function.Method'> def call_function(self, w_func, *args_w): nargs = len(args_w) # used for pruning funccall versions if not self.config.objspace.disable_call_speedhacks and nargs < 5: # start of hack for performance from pypy.interpreter.function import Function, Method if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: if nargs < 4: func = w_func.w_function if isinstance(func, Function): return func.funccall(w_inst, *args_w) elif args_w and ( self.abstract_isinstance_w(args_w[0], w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): > return w_func.funccall(*args_w) interpreter\baseobjspace.py:1210: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <Function test_verify_anonymous_struct_with_star_typedef> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) gateway = <module 'pypy.interpreter.gateway' from 'd:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\interpreter\\gateway.pyc'> PyCode = <class 'pypy.interpreter.pycode.PyCode'> code = <code object test_verify_anonymous_struct_with_star_typedef, file '[d:\pypy_st...n-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:493]', line 1> def funccall(self, *args_w): # speed hack from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit nargs = len(args_w) fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, args_w[0]) elif nargs == 2: assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, args_w[0], args_w[1]) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) return code.fastcall_3(self.space, self, args_w[0], args_w[1], args_w[2]) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) return code.fastcall_4(self.space, self, args_w[0], args_w[1], args_w[2], args_w[3]) elif (nargs | PyCode.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) if nargs < 5: new_frame = self.space.createframe(code, self.w_func_globals, self) for i in funccallunrolling: if i < nargs: new_frame.locals_cells_stack_w[i] = args_w[i] > return new_frame.run() interpreter\function.py:118: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_verify_a...uild\pypy\module\_cffi_backend\test\test_recompiler.py:493]', line 1> at line 5 def run(self): """Start this frame's execution.""" if self.getcode().co_flags & pycode.CO_GENERATOR: from pypy.interpreter.generator import GeneratorIterator return GeneratorIterator(self) else: > return self.execute_frame() interpreter\pyframe.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_verify_a...uild\pypy\module\_cffi_backend\test\test_recompiler.py:493]', line 1> at line 5 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, executioncontext) except OperationError: raise except Exception as e: # general fall-back > raise self._convert_unexpected_exception(e) interpreter\pyframe.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_verify_a...uild\pypy\module\_cffi_backend\test\test_recompiler.py:493]', line 1> at line 5 e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def _convert_unexpected_exception(self, e): from pypy.interpreter import error > operr = error.get_converted_unexpected_exception(self.space, e) interpreter\pyframe.py:943: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_verify_a...uild\pypy\module\_cffi_backend\test\test_recompiler.py:493]', line 1> at line 5 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, > executioncontext) interpreter\pyframe.py:286: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_verify_a...uild\pypy\module\_cffi_backend\test\test_recompiler.py:493]', line 1> at line 5 pycode = <code object test_verify_anonymous_struct_with_star_typedef, file '[d:\pypy_st...n-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:493]', line 1> next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def dispatch(self, pycode, next_instr, ec): # For the sequel, force 'next_instr' to be unsigned for performance next_instr = r_uint(next_instr) co_code = pycode.co_code try: while True: > next_instr = self.handle_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:64: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_verify_a...uild\pypy\module\_cffi_backend\test\test_recompiler.py:493]', line 1> at line 5 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x01\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00|\x01\x00\xc9\x01\x00d\x03\x0...00d\x05\x006\xca\x02\x00}\x03\x00\xcc\x15\x00|\x03\x00j\x02\x00d\x04\x00k\x02\x00sL\x00t\x03\x00\x82\x01\x00d\x00\x00S' next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def handle_bytecode(self, co_code, next_instr, ec): try: > next_instr = self.dispatch_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:71: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_verify_a...uild\pypy\module\_cffi_backend\test\test_recompiler.py:493]', line 1> at line 5 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x01\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00|\x01\x00\xc9\x01\x00d\x03\x0...00d\x05\x006\xca\x02\x00}\x03\x00\xcc\x15\x00|\x03\x00j\x02\x00d\x04\x00k\x02\x00sL\x00t\x03\x00\x82\x01\x00d\x00\x00S' next_instr = 18L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> @jit.unroll_safe def dispatch_bytecode(self, co_code, next_instr, ec): while True: self.last_instr = intmask(next_instr) if jit.we_are_jitted(): if self.debugdata: ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) else: # Only reload next_instr from last_instr when something that # can modify it actually ran (trace function or action # dispatcher). In the common case (no trace, positive ticker) # next_instr is unchanged and the round-trip is skipped. _d = self.debugdata if ec.space.reverse_debugging or ( _d is not None and _d.w_f_trace is not None) or ( not we_are_translated() and 'bytecode_only_trace' in ec.__dict__): ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) actionflag = ec.space.actionflag if actionflag.decrement_ticker(TICK_COUNTER_STEP) < 0: actionflag.action_dispatcher(ec, self) next_instr = r_uint(self.last_instr) opcode = ord(co_code[next_instr]) next_instr += 1 if opcode >= HAVE_ARGUMENT: lo = ord(co_code[next_instr]) hi = ord(co_code[next_instr+1]) next_instr += 2 oparg = (hi * 256) | lo else: oparg = 0 # note: the structure of the code here is such that it makes # (after translation) a big "if/elif" chain, which is then # turned into a switch(). while opcode == opcodedesc.EXTENDED_ARG.index: opcode = ord(co_code[next_instr]) if opcode < HAVE_ARGUMENT: raise BytecodeCorruption lo = ord(co_code[next_instr+1]) hi = ord(co_code[next_instr+2]) next_instr += 3 oparg = (oparg * 65536) | (hi * 256) | lo if opcode == opcodedesc.RETURN_VALUE.index: if not self.blockstack_non_empty(): self.frame_finished_execution = True # for generators raise Return w_returnvalue = self.popvalue() block = self.unrollstack(SReturnValue.kind) if block is None: self.pushvalue(w_returnvalue) raise Return else: unroller = SReturnValue(w_returnvalue) next_instr = block.handle(self, unroller) return next_instr # now inside a 'finally' block elif opcode == opcodedesc.END_FINALLY.index: unroller = self.end_finally() if isinstance(unroller, SuspendedUnroller): # go on unrolling the stack block = self.unrollstack(unroller.kind) if block is None: w_result = unroller.nomoreblocks() self.pushvalue(w_result) raise Return else: next_instr = block.handle(self, unroller) return next_instr elif opcode == opcodedesc.JUMP_ABSOLUTE.index: return self.jump_absolute(oparg, ec) elif opcode == opcodedesc.BREAK_LOOP.index: next_instr = self.BREAK_LOOP(oparg, next_instr) elif opcode == opcodedesc.CONTINUE_LOOP.index: return self.CONTINUE_LOOP(oparg, next_instr) elif opcode == opcodedesc.FOR_ITER.index: next_instr = self.FOR_ITER(oparg, next_instr) elif opcode == opcodedesc.JUMP_FORWARD.index: next_instr = self.JUMP_FORWARD(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_FALSE_OR_POP.index: next_instr = self.JUMP_IF_FALSE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_NOT_DEBUG.index: next_instr = self.JUMP_IF_NOT_DEBUG(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_TRUE_OR_POP.index: next_instr = self.JUMP_IF_TRUE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_FALSE.index: next_instr = self.POP_JUMP_IF_FALSE(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_TRUE.index: next_instr = self.POP_JUMP_IF_TRUE(oparg, next_instr) elif opcode == opcodedesc.BINARY_ADD.index: self.BINARY_ADD(oparg, next_instr) elif opcode == opcodedesc.BINARY_AND.index: self.BINARY_AND(oparg, next_instr) elif opcode == opcodedesc.BINARY_DIVIDE.index: self.BINARY_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_FLOOR_DIVIDE.index: self.BINARY_FLOOR_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_LSHIFT.index: self.BINARY_LSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_MODULO.index: self.BINARY_MODULO(oparg, next_instr) elif opcode == opcodedesc.BINARY_MULTIPLY.index: self.BINARY_MULTIPLY(oparg, next_instr) elif opcode == opcodedesc.BINARY_OR.index: self.BINARY_OR(oparg, next_instr) elif opcode == opcodedesc.BINARY_POWER.index: self.BINARY_POWER(oparg, next_instr) elif opcode == opcodedesc.BINARY_RSHIFT.index: self.BINARY_RSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBSCR.index: self.BINARY_SUBSCR(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBTRACT.index: self.BINARY_SUBTRACT(oparg, next_instr) elif opcode == opcodedesc.BINARY_TRUE_DIVIDE.index: self.BINARY_TRUE_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_XOR.index: self.BINARY_XOR(oparg, next_instr) elif opcode == opcodedesc.BUILD_CLASS.index: self.BUILD_CLASS(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST.index: self.BUILD_LIST(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST_FROM_ARG.index: self.BUILD_LIST_FROM_ARG(oparg, next_instr) elif opcode == opcodedesc.BUILD_MAP.index: self.BUILD_MAP(oparg, next_instr) elif opcode == opcodedesc.BUILD_SET.index: self.BUILD_SET(oparg, next_instr) elif opcode == opcodedesc.BUILD_SLICE.index: self.BUILD_SLICE(oparg, next_instr) elif opcode == opcodedesc.BUILD_TUPLE.index: self.BUILD_TUPLE(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION.index: self.CALL_FUNCTION(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_KW.index: self.CALL_FUNCTION_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR.index: self.CALL_FUNCTION_VAR(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR_KW.index: self.CALL_FUNCTION_VAR_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_METHOD.index: > self.CALL_METHOD(oparg, next_instr) interpreter\pyopcode.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ f = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_verify_a...uild\pypy\module\_cffi_backend\test\test_recompiler.py:493]', line 1> at line 5 oparg = 3, ignored = (18L,), n_args = 3, n_kwargs = 0, w_self = None @jit.unroll_safe def CALL_METHOD(f, oparg, *ignored): # opargs contains the arg, and kwarg count, excluding the implicit 'self' n_args = oparg & 0xff n_kwargs = (oparg >> 8) & 0xff w_self = f.peekvalue_maybe_none(n_args + (2 * n_kwargs)) n = n_args + (w_self is not None) if not n_kwargs: w_callable = f.peekvalue(n_args + (2 * n_kwargs) + 1) w_result = f.space.call_valuestack( > w_callable, n, f, methodcall=w_self is not None, dropvalues=n_args + 2) objspace\std\callmethod.py:96: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_verify_a...uild\pypy\module\_cffi_backend\test\test_recompiler.py:493]', line 1> at line 5 dropvalues = 5, methodcall = False def call_valuestack(self, w_func, nargs, frame, dropvalues, methodcall=False): # methodcall is only used for better error messages in argument.py from pypy.interpreter.function import Function, Method, is_builtin_code if frame.get_is_being_profiled() and is_builtin_code(w_func): # XXX: this code is copied&pasted :-( from the slow path below # call_valuestack(). args = frame.make_arguments(nargs) frame.dropvalues(dropvalues) return self.call_args_and_c_profile(frame, w_func, args) if not self.config.objspace.disable_call_speedhacks: # start of hack for performance if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: w_func = w_func.w_function # reuse callable stack place for w_inst frame.settopvalue(w_inst, nargs) nargs += 1 methodcall = True elif nargs > 0 and ( self.abstract_isinstance_w(frame.peekvalue(nargs-1), # :-( w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): return w_func.funccall_valuestack( > nargs, frame, methodcall=methodcall, dropvalues=dropvalues) interpreter\baseobjspace.py:1243: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_verify_a...uild\pypy\module\_cffi_backend\test\test_recompiler.py:493]', line 1> at line 5 dropvalues = 5, methodcall = False def funccall_valuestack(self, nargs, frame, dropvalues, methodcall=False): # speed hack # methodcall is only for better error messages from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit # if (jit.we_are_jitted() and code is self.space._code_of_sys_exc_info and nargs == 0): frame.dropvalues(dropvalues) from pypy.module.sys.vm import exc_info_direct return exc_info_direct(self.space, frame) # fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: f_0 = frame.peekvalue(0) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, f_0) elif nargs == 2: f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, f_1, f_0) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) frame.dropvalues(dropvalues) return code.fastcall_3(self.space, self, f_2, f_1, f_0) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) f_3 = frame.peekvalue(3) frame.dropvalues(dropvalues) return code.fastcall_4(self.space, self, f_3, f_2, f_1, f_0) elif (nargs | Code.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) return self._flat_pycall(code, nargs, frame, dropvalues) elif fast_natural_arity & Code.FLATPYCALL: natural_arity = fast_natural_arity & 0xff if natural_arity > nargs >= natural_arity - len(self.defs_w): assert isinstance(code, PyCode) return self._flat_pycall_defaults(code, nargs, frame, natural_arity - nargs, dropvalues) elif fast_natural_arity == Code.PASSTHROUGHARGS1 and nargs >= 1: assert isinstance(code, gateway.BuiltinCodePassThroughArguments1) w_obj = frame.peekvalue(nargs-1) args = frame.make_arguments(nargs-1) frame.dropvalues(dropvalues) return code.funcrun_obj(self, w_obj, args) args = frame.make_arguments(nargs, methodcall=methodcall) frame.dropvalues(dropvalues) > return self.call_args(args) interpreter\function.py:190: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('typedef struct { int a; long b; } *foo_t;'), W_Bytes...th_star_typedef'), W_BytesObject('typedef struct { int a; long b; } *foo_t;')]) def call_args(self, args): # delegate activation to code > w_res = self.getcode().funcrun(self, args) interpreter\function.py:68: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('typedef struct { int a; long b; } *foo_t;'), W_Bytes...th_star_typedef'), W_BytesObject('typedef struct { int a; long b; } *foo_t;')]) def funcrun(self, func, args): > return BuiltinCode.funcrun_obj(self, func, None, args) interpreter\gateway.py:781: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('typedef struct { int a; long b; } *foo_t;'), W_Bytes...th_star_typedef'), W_BytesObject('typedef struct { int a; long b; } *foo_t;')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: w_result = activation._run(space, scope_w) except DescrMismatch: if w_obj is not None: args = args.prepend(w_obj) return self._type_unwrap_mismatch(space, args) except Exception as e: > self.handle_exception(space, e) interpreter\gateway.py:795: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> space = StdObjSpace e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def handle_exception(self, space, e): try: if not we_are_translated(): raise raise e except OperationError: raise except Exception as e: # general fall-back from pypy.interpreter import error > raise error.get_converted_unexpected_exception(space, e) interpreter\gateway.py:819: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('typedef struct { int a; long b; } *foo_t;'), W_Bytes...th_star_typedef'), W_BytesObject('typedef struct { int a; long b; } *foo_t;')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: > w_result = activation._run(space, scope_w) interpreter\gateway.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinActivation_UwS_ObjSpace_text_text_text_W_Root_W_Root_W_Root_int_W_Root object at 0x000002791c13af38> space = StdObjSpace scope_w = [W_BytesObject('typedef struct { int a; long b; } *foo_t;'), W_BytesObject('test_verify_anonymous_struct_with_star_typedef'), W_BytesObject('typedef struct { int a; long b; } *foo_t;'), None, None, None, ...] def _run(self, space, scope_w): > return self.behavior(space, space.text_w(scope_w[0]), space.text_w(scope_w[1]), space.text_w(scope_w[2]), scope_w[3], scope_w[4], scope_w[5], space.gateway_int_w(scope_w[6]), scope_w[7]) <3152-codegen d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\rpython\tool\sourcetools.py:200>:3: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace, cdef = 'typedef struct { int a; long b; } *foo_t;' module_name = '_CFFI_test_verify_anonymous_struct_with_star_typedef' source = 'typedef struct { int a; long b; } *foo_t;', w_includes = None w_extra_source = None, w_min_version = None, packed = 0 w_extra_compile_args = None @unwrap_spec(cdef='text', module_name='text', source='text', packed=int) def prepare(space, cdef, module_name, source, w_includes=None, w_extra_source=None, w_min_version=None, packed=False, w_extra_compile_args=None): try: import cffi from cffi import FFI # <== the system one, which from cffi import recompiler # needs to be at least cffi 1.0.4 from cffi import ffiplatform except ImportError: pytest.skip("system cffi module not found or older than 1.0.0") if w_min_version is None: min_version = (1, 4, 0) else: min_version = tuple(space.unwrap(w_min_version)) if cffi.__version_info__ < min_version: pytest.skip("system cffi module needs to be at least %s, got %s" % ( min_version, cffi.__version_info__)) space.appexec([], """(): import _cffi_backend # force it to be initialized """) includes = [] if w_includes: includes += space.unpackiterable(w_includes) assert module_name.startswith('test_') module_name = '_CFFI_' + module_name rdir = udir.ensure('recompiler', dir=1) rdir.join('Python.h').write( '#include <stdio.h>\n' '#define PYPY_VERSION XX\n' '#define PyMODINIT_FUNC /*exported*/ void\n' ) path = module_name.replace('.', os.sep) if '.' in module_name: subrdir = rdir.join(module_name[:module_name.index('.')]) os.mkdir(str(subrdir)) else: subrdir = rdir c_file = str(rdir.join('%s.c' % path)) ffi = FFI() for include_ffi_object in includes: ffi.include(include_ffi_object._test_recompiler_source_ffi) ffi.cdef(cdef, packed=packed) ffi.set_source(module_name, source) ffi.emit_c_code(c_file) base_module_name = module_name.split('.')[-1] sources = [] if w_extra_source is not None: sources.append(space.str_w(w_extra_source)) kwargs = {} # GCC 14 promotes -Wincompatible-pointer-types from a warning to an error # by default, which breaks cffi's intentionally-mismatched field-check # probes (e.g. test_misdeclared_field_1). Keep it a warning so the module # compiles and cffi's runtime checks can run. extra = ['-Wno-error=incompatible-pointer-types'] if w_extra_compile_args is not None: extra = extra + space.unwrap(w_extra_compile_args) kwargs['extra_compile_args'] = extra ext = ffiplatform.get_extension(c_file, module_name, include_dirs=[str(rdir)], export_symbols=['_cffi_pypyinit_' + base_module_name], sources=sources, **kwargs) > ffiplatform.compile(str(rdir), ext) module\_cffi_backend\test\test_recompiler.py:86: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x0000027928f6da60> compiler_verbose = 0, debug = None def compile(tmpdir, ext, compiler_verbose=0, debug=None): """Compile a C extension module using distutils.""" saved_environ = os.environ.copy() try: > outputfilename = _build(tmpdir, ext, compiler_verbose, debug) d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x0000027928f6da60> compiler_verbose = 0, debug = 0 def _build(tmpdir, ext, compiler_verbose=0, debug=None): # XXX compact but horrible :-( from cffi._shimmed_dist_utils import Distribution, CompileError, LinkError, set_threshold, set_verbosity dist = Distribution({'ext_modules': [ext]}) dist.parse_config_files() options = dist.get_option_dict('build_ext') if debug is None: debug = sys.flags.debug options['debug'] = ('ffiplatform', debug) options['force'] = ('ffiplatform', True) options['build_lib'] = ('ffiplatform', tmpdir) options['build_temp'] = ('ffiplatform', tmpdir) # try: old_level = set_threshold(0) or 0 try: set_verbosity(compiler_verbose) dist.run_command('build_ext') cmd_obj = dist.get_command_obj('build_ext') [soname] = cmd_obj.get_outputs() finally: set_threshold(old_level) except (CompileError, LinkError) as e: > raise VerificationError('%s: %s' % (e.__class__.__name__, e)) E VerificationError: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2 d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:54: VerificationError ---------------------------- Captured stdout call ----------------------------- generating d:\systemtemp\pytest\usession-main-595\recompiler\_CFFI_test_verify_anonymous_struct_with_star_typedef.c ---------------------------- Captured stderr call ----------------------------- cl : Command line error D8021 : invalid numeric argument '/Wno-error=incompatible-pointer-types' __________ AppTestRecompiler.test_verify_anonymous_enum_with_typedef __________ self = <CallInfo when='call' exception: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2> func = <function <lambda> at 0x00000279250282f0>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ..\_pytest\runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ..\_pytest\runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_verify_anonymous_enum_with_type..._': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_verify_anonymous_enum_with_typedef'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ..\_pytest\vendored_packages\pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00000279153616a8> hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_verify_anonymous_enum_with_type..._': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_verify_anonymous_enum_with_typedef'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ..\_pytest\vendored_packages\pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_verify_anonymous_enum_with_type..._': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_verify_anonymous_enum_with_typedef'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ..\_pytest\vendored_packages\pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_verify_anonymous_enum_with_typedef'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791acd06b0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...th_typedef'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027928d22760> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027928d22760> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...th_typedef'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_verify_anonymous_enum_with_typedef'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791acd0660> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...th_typedef'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027928d22720> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027928d22720> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...th_typedef'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_verify_anonymous_enum_with_typedef'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ..\_pytest\vendored_packages\pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_verify_anonymous_enum_with_typedef'> def pytest_runtest_call(item): try: > item.runtest() ..\_pytest\runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_verify_anonymous_enum_with_typedef'> def runtest(self): target = self.obj if self.config.option.runappdirect: return target() space = target.im_self.space filename = self._getdynfilename(target) func = app2interp_temp(target.im_func, filename=filename) w_instance = self.parent.w_instance > self.execute_appex(space, func, space, w_instance) tool\pytest\apptest.py:89: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_verify_anonymous_enum_with_typedef'> space = StdObjSpace target = <function test_verify_anonymous_enum_with_typedef at 0x0000027925028458> args = (StdObjSpace, <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>) def execute_appex(self, space, target, *args): self.space = space try: > target(*args) tool\pytest\apptest.py:30: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) w_func = <Function test_verify_anonymous_enum_with_typedef> args = <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8> def appcaller(space, *args_w): if not isinstance(space, ObjSpace): raise TypeError("first argument must be a space instance.") # the last argument can be an Arguments w_func = self.wget(space, name) if not args_w: return space.call_function(w_func) else: args = args_w[-1] assert args is not None if not isinstance(args, Arguments): > return space.call_function(w_func, *args_w) interpreter\gateway.py:1227: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <Function test_verify_anonymous_enum_with_typedef> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) nargs = 1, Function = <class 'pypy.interpreter.function.Function'> Method = <class 'pypy.interpreter.function.Method'> def call_function(self, w_func, *args_w): nargs = len(args_w) # used for pruning funccall versions if not self.config.objspace.disable_call_speedhacks and nargs < 5: # start of hack for performance from pypy.interpreter.function import Function, Method if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: if nargs < 4: func = w_func.w_function if isinstance(func, Function): return func.funccall(w_inst, *args_w) elif args_w and ( self.abstract_isinstance_w(args_w[0], w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): > return w_func.funccall(*args_w) interpreter\baseobjspace.py:1210: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <Function test_verify_anonymous_enum_with_typedef> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) gateway = <module 'pypy.interpreter.gateway' from 'd:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\interpreter\\gateway.pyc'> PyCode = <class 'pypy.interpreter.pycode.PyCode'> code = <code object test_verify_anonymous_enum_with_typedef, file '[d:\pypy_stuff\bui...n-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:501]', line 1> def funccall(self, *args_w): # speed hack from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit nargs = len(args_w) fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, args_w[0]) elif nargs == 2: assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, args_w[0], args_w[1]) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) return code.fastcall_3(self.space, self, args_w[0], args_w[1], args_w[2]) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) return code.fastcall_4(self.space, self, args_w[0], args_w[1], args_w[2], args_w[3]) elif (nargs | PyCode.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) if nargs < 5: new_frame = self.space.createframe(code, self.w_func_globals, self) for i in funccallunrolling: if i < nargs: new_frame.locals_cells_stack_w[i] = args_w[i] > return new_frame.run() interpreter\function.py:118: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_verify_a...uild\pypy\module\_cffi_backend\test\test_recompiler.py:501]', line 1> at line 5 def run(self): """Start this frame's execution.""" if self.getcode().co_flags & pycode.CO_GENERATOR: from pypy.interpreter.generator import GeneratorIterator return GeneratorIterator(self) else: > return self.execute_frame() interpreter\pyframe.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_verify_a...uild\pypy\module\_cffi_backend\test\test_recompiler.py:501]', line 1> at line 5 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, executioncontext) except OperationError: raise except Exception as e: # general fall-back > raise self._convert_unexpected_exception(e) interpreter\pyframe.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_verify_a...uild\pypy\module\_cffi_backend\test\test_recompiler.py:501]', line 1> at line 5 e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def _convert_unexpected_exception(self, e): from pypy.interpreter import error > operr = error.get_converted_unexpected_exception(self.space, e) interpreter\pyframe.py:943: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_verify_a...uild\pypy\module\_cffi_backend\test\test_recompiler.py:501]', line 1> at line 5 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, > executioncontext) interpreter\pyframe.py:286: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_verify_a...uild\pypy\module\_cffi_backend\test\test_recompiler.py:501]', line 1> at line 5 pycode = <code object test_verify_anonymous_enum_with_typedef, file '[d:\pypy_stuff\bui...n-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:501]', line 1> next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def dispatch(self, pycode, next_instr, ec): # For the sequel, force 'next_instr' to be unsigned for performance next_instr = r_uint(next_instr) co_code = pycode.co_code try: while True: > next_instr = self.handle_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:64: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_verify_a...uild\pypy\module\_cffi_backend\test\test_recompiler.py:501]', line 1> at line 5 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00\xcc\x15\x00|\x02\x00j\x01\x0...03\x00d\x05\x00\xca\x01\x00|\x01\x00\xc9\x03\x00d\x0b\x00\xca\x01\x00k\x02\x00s\xf8\x00t\x02\x00\x82\x01\x00d\x00\x00S' next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def handle_bytecode(self, co_code, next_instr, ec): try: > next_instr = self.dispatch_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:71: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_verify_a...uild\pypy\module\_cffi_backend\test\test_recompiler.py:501]', line 1> at line 5 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00\xcc\x15\x00|\x02\x00j\x01\x0...03\x00d\x05\x00\xca\x01\x00|\x01\x00\xc9\x03\x00d\x0b\x00\xca\x01\x00k\x02\x00s\xf8\x00t\x02\x00\x82\x01\x00d\x00\x00S' next_instr = 18L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> @jit.unroll_safe def dispatch_bytecode(self, co_code, next_instr, ec): while True: self.last_instr = intmask(next_instr) if jit.we_are_jitted(): if self.debugdata: ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) else: # Only reload next_instr from last_instr when something that # can modify it actually ran (trace function or action # dispatcher). In the common case (no trace, positive ticker) # next_instr is unchanged and the round-trip is skipped. _d = self.debugdata if ec.space.reverse_debugging or ( _d is not None and _d.w_f_trace is not None) or ( not we_are_translated() and 'bytecode_only_trace' in ec.__dict__): ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) actionflag = ec.space.actionflag if actionflag.decrement_ticker(TICK_COUNTER_STEP) < 0: actionflag.action_dispatcher(ec, self) next_instr = r_uint(self.last_instr) opcode = ord(co_code[next_instr]) next_instr += 1 if opcode >= HAVE_ARGUMENT: lo = ord(co_code[next_instr]) hi = ord(co_code[next_instr+1]) next_instr += 2 oparg = (hi * 256) | lo else: oparg = 0 # note: the structure of the code here is such that it makes # (after translation) a big "if/elif" chain, which is then # turned into a switch(). while opcode == opcodedesc.EXTENDED_ARG.index: opcode = ord(co_code[next_instr]) if opcode < HAVE_ARGUMENT: raise BytecodeCorruption lo = ord(co_code[next_instr+1]) hi = ord(co_code[next_instr+2]) next_instr += 3 oparg = (oparg * 65536) | (hi * 256) | lo if opcode == opcodedesc.RETURN_VALUE.index: if not self.blockstack_non_empty(): self.frame_finished_execution = True # for generators raise Return w_returnvalue = self.popvalue() block = self.unrollstack(SReturnValue.kind) if block is None: self.pushvalue(w_returnvalue) raise Return else: unroller = SReturnValue(w_returnvalue) next_instr = block.handle(self, unroller) return next_instr # now inside a 'finally' block elif opcode == opcodedesc.END_FINALLY.index: unroller = self.end_finally() if isinstance(unroller, SuspendedUnroller): # go on unrolling the stack block = self.unrollstack(unroller.kind) if block is None: w_result = unroller.nomoreblocks() self.pushvalue(w_result) raise Return else: next_instr = block.handle(self, unroller) return next_instr elif opcode == opcodedesc.JUMP_ABSOLUTE.index: return self.jump_absolute(oparg, ec) elif opcode == opcodedesc.BREAK_LOOP.index: next_instr = self.BREAK_LOOP(oparg, next_instr) elif opcode == opcodedesc.CONTINUE_LOOP.index: return self.CONTINUE_LOOP(oparg, next_instr) elif opcode == opcodedesc.FOR_ITER.index: next_instr = self.FOR_ITER(oparg, next_instr) elif opcode == opcodedesc.JUMP_FORWARD.index: next_instr = self.JUMP_FORWARD(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_FALSE_OR_POP.index: next_instr = self.JUMP_IF_FALSE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_NOT_DEBUG.index: next_instr = self.JUMP_IF_NOT_DEBUG(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_TRUE_OR_POP.index: next_instr = self.JUMP_IF_TRUE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_FALSE.index: next_instr = self.POP_JUMP_IF_FALSE(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_TRUE.index: next_instr = self.POP_JUMP_IF_TRUE(oparg, next_instr) elif opcode == opcodedesc.BINARY_ADD.index: self.BINARY_ADD(oparg, next_instr) elif opcode == opcodedesc.BINARY_AND.index: self.BINARY_AND(oparg, next_instr) elif opcode == opcodedesc.BINARY_DIVIDE.index: self.BINARY_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_FLOOR_DIVIDE.index: self.BINARY_FLOOR_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_LSHIFT.index: self.BINARY_LSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_MODULO.index: self.BINARY_MODULO(oparg, next_instr) elif opcode == opcodedesc.BINARY_MULTIPLY.index: self.BINARY_MULTIPLY(oparg, next_instr) elif opcode == opcodedesc.BINARY_OR.index: self.BINARY_OR(oparg, next_instr) elif opcode == opcodedesc.BINARY_POWER.index: self.BINARY_POWER(oparg, next_instr) elif opcode == opcodedesc.BINARY_RSHIFT.index: self.BINARY_RSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBSCR.index: self.BINARY_SUBSCR(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBTRACT.index: self.BINARY_SUBTRACT(oparg, next_instr) elif opcode == opcodedesc.BINARY_TRUE_DIVIDE.index: self.BINARY_TRUE_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_XOR.index: self.BINARY_XOR(oparg, next_instr) elif opcode == opcodedesc.BUILD_CLASS.index: self.BUILD_CLASS(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST.index: self.BUILD_LIST(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST_FROM_ARG.index: self.BUILD_LIST_FROM_ARG(oparg, next_instr) elif opcode == opcodedesc.BUILD_MAP.index: self.BUILD_MAP(oparg, next_instr) elif opcode == opcodedesc.BUILD_SET.index: self.BUILD_SET(oparg, next_instr) elif opcode == opcodedesc.BUILD_SLICE.index: self.BUILD_SLICE(oparg, next_instr) elif opcode == opcodedesc.BUILD_TUPLE.index: self.BUILD_TUPLE(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION.index: self.CALL_FUNCTION(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_KW.index: self.CALL_FUNCTION_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR.index: self.CALL_FUNCTION_VAR(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR_KW.index: self.CALL_FUNCTION_VAR_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_METHOD.index: > self.CALL_METHOD(oparg, next_instr) interpreter\pyopcode.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ f = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_verify_a...uild\pypy\module\_cffi_backend\test\test_recompiler.py:501]', line 1> at line 5 oparg = 3, ignored = (18L,), n_args = 3, n_kwargs = 0, w_self = None @jit.unroll_safe def CALL_METHOD(f, oparg, *ignored): # opargs contains the arg, and kwarg count, excluding the implicit 'self' n_args = oparg & 0xff n_kwargs = (oparg >> 8) & 0xff w_self = f.peekvalue_maybe_none(n_args + (2 * n_kwargs)) n = n_args + (w_self is not None) if not n_kwargs: w_callable = f.peekvalue(n_args + (2 * n_kwargs) + 1) w_result = f.space.call_valuestack( > w_callable, n, f, methodcall=w_self is not None, dropvalues=n_args + 2) objspace\std\callmethod.py:96: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_verify_a...uild\pypy\module\_cffi_backend\test\test_recompiler.py:501]', line 1> at line 5 dropvalues = 5, methodcall = False def call_valuestack(self, w_func, nargs, frame, dropvalues, methodcall=False): # methodcall is only used for better error messages in argument.py from pypy.interpreter.function import Function, Method, is_builtin_code if frame.get_is_being_profiled() and is_builtin_code(w_func): # XXX: this code is copied&pasted :-( from the slow path below # call_valuestack(). args = frame.make_arguments(nargs) frame.dropvalues(dropvalues) return self.call_args_and_c_profile(frame, w_func, args) if not self.config.objspace.disable_call_speedhacks: # start of hack for performance if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: w_func = w_func.w_function # reuse callable stack place for w_inst frame.settopvalue(w_inst, nargs) nargs += 1 methodcall = True elif nargs > 0 and ( self.abstract_isinstance_w(frame.peekvalue(nargs-1), # :-( w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): return w_func.funccall_valuestack( > nargs, frame, methodcall=methodcall, dropvalues=dropvalues) interpreter\baseobjspace.py:1243: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_verify_a...uild\pypy\module\_cffi_backend\test\test_recompiler.py:501]', line 1> at line 5 dropvalues = 5, methodcall = False def funccall_valuestack(self, nargs, frame, dropvalues, methodcall=False): # speed hack # methodcall is only for better error messages from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit # if (jit.we_are_jitted() and code is self.space._code_of_sys_exc_info and nargs == 0): frame.dropvalues(dropvalues) from pypy.module.sys.vm import exc_info_direct return exc_info_direct(self.space, frame) # fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: f_0 = frame.peekvalue(0) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, f_0) elif nargs == 2: f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, f_1, f_0) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) frame.dropvalues(dropvalues) return code.fastcall_3(self.space, self, f_2, f_1, f_0) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) f_3 = frame.peekvalue(3) frame.dropvalues(dropvalues) return code.fastcall_4(self.space, self, f_3, f_2, f_1, f_0) elif (nargs | Code.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) return self._flat_pycall(code, nargs, frame, dropvalues) elif fast_natural_arity & Code.FLATPYCALL: natural_arity = fast_natural_arity & 0xff if natural_arity > nargs >= natural_arity - len(self.defs_w): assert isinstance(code, PyCode) return self._flat_pycall_defaults(code, nargs, frame, natural_arity - nargs, dropvalues) elif fast_natural_arity == Code.PASSTHROUGHARGS1 and nargs >= 1: assert isinstance(code, gateway.BuiltinCodePassThroughArguments1) w_obj = frame.peekvalue(nargs-1) args = frame.make_arguments(nargs-1) frame.dropvalues(dropvalues) return code.funcrun_obj(self, w_obj, args) args = frame.make_arguments(nargs, methodcall=methodcall) frame.dropvalues(dropvalues) > return self.call_args(args) interpreter\function.py:190: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('typedef enum { AA, ... } e1;'), W_BytesObject('test_...nymous_enum_with_typedef1'), W_BytesObject('typedef enum { BB, CC, AA } e1;')]) def call_args(self, args): # delegate activation to code > w_res = self.getcode().funcrun(self, args) interpreter\function.py:68: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('typedef enum { AA, ... } e1;'), W_BytesObject('test_...nymous_enum_with_typedef1'), W_BytesObject('typedef enum { BB, CC, AA } e1;')]) def funcrun(self, func, args): > return BuiltinCode.funcrun_obj(self, func, None, args) interpreter\gateway.py:781: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('typedef enum { AA, ... } e1;'), W_BytesObject('test_...nymous_enum_with_typedef1'), W_BytesObject('typedef enum { BB, CC, AA } e1;')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: w_result = activation._run(space, scope_w) except DescrMismatch: if w_obj is not None: args = args.prepend(w_obj) return self._type_unwrap_mismatch(space, args) except Exception as e: > self.handle_exception(space, e) interpreter\gateway.py:795: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> space = StdObjSpace e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def handle_exception(self, space, e): try: if not we_are_translated(): raise raise e except OperationError: raise except Exception as e: # general fall-back from pypy.interpreter import error > raise error.get_converted_unexpected_exception(space, e) interpreter\gateway.py:819: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('typedef enum { AA, ... } e1;'), W_BytesObject('test_...nymous_enum_with_typedef1'), W_BytesObject('typedef enum { BB, CC, AA } e1;')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: > w_result = activation._run(space, scope_w) interpreter\gateway.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinActivation_UwS_ObjSpace_text_text_text_W_Root_W_Root_W_Root_int_W_Root object at 0x000002791c13af38> space = StdObjSpace scope_w = [W_BytesObject('typedef enum { AA, ... } e1;'), W_BytesObject('test_verify_anonymous_enum_with_typedef1'), W_BytesObject('typedef enum { BB, CC, AA } e1;'), None, None, None, ...] def _run(self, space, scope_w): > return self.behavior(space, space.text_w(scope_w[0]), space.text_w(scope_w[1]), space.text_w(scope_w[2]), scope_w[3], scope_w[4], scope_w[5], space.gateway_int_w(scope_w[6]), scope_w[7]) <3152-codegen d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\rpython\tool\sourcetools.py:200>:3: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace, cdef = 'typedef enum { AA, ... } e1;' module_name = '_CFFI_test_verify_anonymous_enum_with_typedef1' source = 'typedef enum { BB, CC, AA } e1;', w_includes = None w_extra_source = None, w_min_version = None, packed = 0 w_extra_compile_args = None @unwrap_spec(cdef='text', module_name='text', source='text', packed=int) def prepare(space, cdef, module_name, source, w_includes=None, w_extra_source=None, w_min_version=None, packed=False, w_extra_compile_args=None): try: import cffi from cffi import FFI # <== the system one, which from cffi import recompiler # needs to be at least cffi 1.0.4 from cffi import ffiplatform except ImportError: pytest.skip("system cffi module not found or older than 1.0.0") if w_min_version is None: min_version = (1, 4, 0) else: min_version = tuple(space.unwrap(w_min_version)) if cffi.__version_info__ < min_version: pytest.skip("system cffi module needs to be at least %s, got %s" % ( min_version, cffi.__version_info__)) space.appexec([], """(): import _cffi_backend # force it to be initialized """) includes = [] if w_includes: includes += space.unpackiterable(w_includes) assert module_name.startswith('test_') module_name = '_CFFI_' + module_name rdir = udir.ensure('recompiler', dir=1) rdir.join('Python.h').write( '#include <stdio.h>\n' '#define PYPY_VERSION XX\n' '#define PyMODINIT_FUNC /*exported*/ void\n' ) path = module_name.replace('.', os.sep) if '.' in module_name: subrdir = rdir.join(module_name[:module_name.index('.')]) os.mkdir(str(subrdir)) else: subrdir = rdir c_file = str(rdir.join('%s.c' % path)) ffi = FFI() for include_ffi_object in includes: ffi.include(include_ffi_object._test_recompiler_source_ffi) ffi.cdef(cdef, packed=packed) ffi.set_source(module_name, source) ffi.emit_c_code(c_file) base_module_name = module_name.split('.')[-1] sources = [] if w_extra_source is not None: sources.append(space.str_w(w_extra_source)) kwargs = {} # GCC 14 promotes -Wincompatible-pointer-types from a warning to an error # by default, which breaks cffi's intentionally-mismatched field-check # probes (e.g. test_misdeclared_field_1). Keep it a warning so the module # compiles and cffi's runtime checks can run. extra = ['-Wno-error=incompatible-pointer-types'] if w_extra_compile_args is not None: extra = extra + space.unwrap(w_extra_compile_args) kwargs['extra_compile_args'] = extra ext = ffiplatform.get_extension(c_file, module_name, include_dirs=[str(rdir)], export_symbols=['_cffi_pypyinit_' + base_module_name], sources=sources, **kwargs) > ffiplatform.compile(str(rdir), ext) module\_cffi_backend\test\test_recompiler.py:86: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x0000027928d23420> compiler_verbose = 0, debug = None def compile(tmpdir, ext, compiler_verbose=0, debug=None): """Compile a C extension module using distutils.""" saved_environ = os.environ.copy() try: > outputfilename = _build(tmpdir, ext, compiler_verbose, debug) d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x0000027928d23420> compiler_verbose = 0, debug = 0 def _build(tmpdir, ext, compiler_verbose=0, debug=None): # XXX compact but horrible :-( from cffi._shimmed_dist_utils import Distribution, CompileError, LinkError, set_threshold, set_verbosity dist = Distribution({'ext_modules': [ext]}) dist.parse_config_files() options = dist.get_option_dict('build_ext') if debug is None: debug = sys.flags.debug options['debug'] = ('ffiplatform', debug) options['force'] = ('ffiplatform', True) options['build_lib'] = ('ffiplatform', tmpdir) options['build_temp'] = ('ffiplatform', tmpdir) # try: old_level = set_threshold(0) or 0 try: set_verbosity(compiler_verbose) dist.run_command('build_ext') cmd_obj = dist.get_command_obj('build_ext') [soname] = cmd_obj.get_outputs() finally: set_threshold(old_level) except (CompileError, LinkError) as e: > raise VerificationError('%s: %s' % (e.__class__.__name__, e)) E VerificationError: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2 d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:54: VerificationError ---------------------------- Captured stdout call ----------------------------- generating d:\systemtemp\pytest\usession-main-595\recompiler\_CFFI_test_verify_anonymous_enum_with_typedef1.c ---------------------------- Captured stderr call ----------------------------- cl : Command line error D8021 : invalid numeric argument '/Wno-error=incompatible-pointer-types' _____________________ AppTestRecompiler.test_unique_types _____________________ self = <CallInfo when='call' exception: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2> func = <function <lambda> at 0x000002791b22a098>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ..\_pytest\runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ..\_pytest\runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_unique_types'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_unique_types'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ..\_pytest\vendored_packages\pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00000279153616a8> hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_unique_types'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_unique_types'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ..\_pytest\vendored_packages\pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_unique_types'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_unique_types'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ..\_pytest\vendored_packages\pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_unique_types'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791f2d73d0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...ique_types'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792a7167e0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792a7167e0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...ique_types'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_unique_types'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791f2d71c8> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...ique_types'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792a7167a0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792a7167a0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...ique_types'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_unique_types'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ..\_pytest\vendored_packages\pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_unique_types'> def pytest_runtest_call(item): try: > item.runtest() ..\_pytest\runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_unique_types'> def runtest(self): target = self.obj if self.config.option.runappdirect: return target() space = target.im_self.space filename = self._getdynfilename(target) func = app2interp_temp(target.im_func, filename=filename) w_instance = self.parent.w_instance > self.execute_appex(space, func, space, w_instance) tool\pytest\apptest.py:89: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_unique_types'>, space = StdObjSpace target = <function test_unique_types at 0x000002791ac71b50> args = (StdObjSpace, <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>) def execute_appex(self, space, target, *args): self.space = space try: > target(*args) tool\pytest\apptest.py:30: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) w_func = <Function test_unique_types> args = <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8> def appcaller(space, *args_w): if not isinstance(space, ObjSpace): raise TypeError("first argument must be a space instance.") # the last argument can be an Arguments w_func = self.wget(space, name) if not args_w: return space.call_function(w_func) else: args = args_w[-1] assert args is not None if not isinstance(args, Arguments): > return space.call_function(w_func, *args_w) interpreter\gateway.py:1227: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <Function test_unique_types> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) nargs = 1, Function = <class 'pypy.interpreter.function.Function'> Method = <class 'pypy.interpreter.function.Method'> def call_function(self, w_func, *args_w): nargs = len(args_w) # used for pruning funccall versions if not self.config.objspace.disable_call_speedhacks and nargs < 5: # start of hack for performance from pypy.interpreter.function import Function, Method if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: if nargs < 4: func = w_func.w_function if isinstance(func, Function): return func.funccall(w_inst, *args_w) elif args_w and ( self.abstract_isinstance_w(args_w[0], w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): > return w_func.funccall(*args_w) interpreter\baseobjspace.py:1210: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <Function test_unique_types> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) gateway = <module 'pypy.interpreter.gateway' from 'd:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\interpreter\\gateway.pyc'> PyCode = <class 'pypy.interpreter.pycode.PyCode'> code = <code object test_unique_types, file '[d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:518]', line 1> def funccall(self, *args_w): # speed hack from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit nargs = len(args_w) fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, args_w[0]) elif nargs == 2: assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, args_w[0], args_w[1]) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) return code.fastcall_3(self.space, self, args_w[0], args_w[1], args_w[2]) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) return code.fastcall_4(self.space, self, args_w[0], args_w[1], args_w[2], args_w[3]) elif (nargs | PyCode.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) if nargs < 5: new_frame = self.space.createframe(code, self.w_func_globals, self) for i in funccallunrolling: if i < nargs: new_frame.locals_cells_stack_w[i] = args_w[i] > return new_frame.run() interpreter\function.py:118: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_unique_t...uild\pypy\module\_cffi_backend\test\test_recompiler.py:518]', line 1> at line 3 def run(self): """Start this frame's execution.""" if self.getcode().co_flags & pycode.CO_GENERATOR: from pypy.interpreter.generator import GeneratorIterator return GeneratorIterator(self) else: > return self.execute_frame() interpreter\pyframe.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_unique_t...uild\pypy\module\_cffi_backend\test\test_recompiler.py:518]', line 1> at line 3 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, executioncontext) except OperationError: raise except Exception as e: # general fall-back > raise self._convert_unexpected_exception(e) interpreter\pyframe.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_unique_t...uild\pypy\module\_cffi_backend\test\test_recompiler.py:518]', line 1> at line 3 e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def _convert_unexpected_exception(self, e): from pypy.interpreter import error > operr = error.get_converted_unexpected_exception(self.space, e) interpreter\pyframe.py:943: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_unique_t...uild\pypy\module\_cffi_backend\test\test_recompiler.py:518]', line 1> at line 3 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, > executioncontext) interpreter\pyframe.py:286: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_unique_t...uild\pypy\module\_cffi_backend\test\test_recompiler.py:518]', line 1> at line 3 pycode = <code object test_unique_types, file '[d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:518]', line 1> next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def dispatch(self, pycode, next_instr, ec): # For the sequel, force 'next_instr' to be unsigned for performance next_instr = r_uint(next_instr) co_code = pycode.co_code try: while True: > next_instr = self.handle_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:64: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_unique_t...uild\pypy\module\_cffi_backend\test\test_recompiler.py:518]', line 1> at line 3 co_code = 'd\x01\x00}\x01\x00|\x00\x00\xc9\x00\x00|\x01\x00d\x02\x00|\x01\x00\xca\x03\x00\\\x02\x00}\x02\x00}\x03\x00|\x00\x00\x...01\x00d\x18\x00\xca\x01\x00|\x02\x00\xc9\x01\x00d\x19\x00\xca\x01\x00k\x08\x00s\xe5\x01t\x02\x00\x82\x01\x00d\x00\x00S' next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def handle_bytecode(self, co_code, next_instr, ec): try: > next_instr = self.dispatch_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:71: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_unique_t...uild\pypy\module\_cffi_backend\test\test_recompiler.py:518]', line 1> at line 3 co_code = 'd\x01\x00}\x01\x00|\x00\x00\xc9\x00\x00|\x01\x00d\x02\x00|\x01\x00\xca\x03\x00\\\x02\x00}\x02\x00}\x03\x00|\x00\x00\x...01\x00d\x18\x00\xca\x01\x00|\x02\x00\xc9\x01\x00d\x19\x00\xca\x01\x00k\x08\x00s\xe5\x01t\x02\x00\x82\x01\x00d\x00\x00S' next_instr = 24L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> @jit.unroll_safe def dispatch_bytecode(self, co_code, next_instr, ec): while True: self.last_instr = intmask(next_instr) if jit.we_are_jitted(): if self.debugdata: ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) else: # Only reload next_instr from last_instr when something that # can modify it actually ran (trace function or action # dispatcher). In the common case (no trace, positive ticker) # next_instr is unchanged and the round-trip is skipped. _d = self.debugdata if ec.space.reverse_debugging or ( _d is not None and _d.w_f_trace is not None) or ( not we_are_translated() and 'bytecode_only_trace' in ec.__dict__): ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) actionflag = ec.space.actionflag if actionflag.decrement_ticker(TICK_COUNTER_STEP) < 0: actionflag.action_dispatcher(ec, self) next_instr = r_uint(self.last_instr) opcode = ord(co_code[next_instr]) next_instr += 1 if opcode >= HAVE_ARGUMENT: lo = ord(co_code[next_instr]) hi = ord(co_code[next_instr+1]) next_instr += 2 oparg = (hi * 256) | lo else: oparg = 0 # note: the structure of the code here is such that it makes # (after translation) a big "if/elif" chain, which is then # turned into a switch(). while opcode == opcodedesc.EXTENDED_ARG.index: opcode = ord(co_code[next_instr]) if opcode < HAVE_ARGUMENT: raise BytecodeCorruption lo = ord(co_code[next_instr+1]) hi = ord(co_code[next_instr+2]) next_instr += 3 oparg = (oparg * 65536) | (hi * 256) | lo if opcode == opcodedesc.RETURN_VALUE.index: if not self.blockstack_non_empty(): self.frame_finished_execution = True # for generators raise Return w_returnvalue = self.popvalue() block = self.unrollstack(SReturnValue.kind) if block is None: self.pushvalue(w_returnvalue) raise Return else: unroller = SReturnValue(w_returnvalue) next_instr = block.handle(self, unroller) return next_instr # now inside a 'finally' block elif opcode == opcodedesc.END_FINALLY.index: unroller = self.end_finally() if isinstance(unroller, SuspendedUnroller): # go on unrolling the stack block = self.unrollstack(unroller.kind) if block is None: w_result = unroller.nomoreblocks() self.pushvalue(w_result) raise Return else: next_instr = block.handle(self, unroller) return next_instr elif opcode == opcodedesc.JUMP_ABSOLUTE.index: return self.jump_absolute(oparg, ec) elif opcode == opcodedesc.BREAK_LOOP.index: next_instr = self.BREAK_LOOP(oparg, next_instr) elif opcode == opcodedesc.CONTINUE_LOOP.index: return self.CONTINUE_LOOP(oparg, next_instr) elif opcode == opcodedesc.FOR_ITER.index: next_instr = self.FOR_ITER(oparg, next_instr) elif opcode == opcodedesc.JUMP_FORWARD.index: next_instr = self.JUMP_FORWARD(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_FALSE_OR_POP.index: next_instr = self.JUMP_IF_FALSE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_NOT_DEBUG.index: next_instr = self.JUMP_IF_NOT_DEBUG(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_TRUE_OR_POP.index: next_instr = self.JUMP_IF_TRUE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_FALSE.index: next_instr = self.POP_JUMP_IF_FALSE(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_TRUE.index: next_instr = self.POP_JUMP_IF_TRUE(oparg, next_instr) elif opcode == opcodedesc.BINARY_ADD.index: self.BINARY_ADD(oparg, next_instr) elif opcode == opcodedesc.BINARY_AND.index: self.BINARY_AND(oparg, next_instr) elif opcode == opcodedesc.BINARY_DIVIDE.index: self.BINARY_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_FLOOR_DIVIDE.index: self.BINARY_FLOOR_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_LSHIFT.index: self.BINARY_LSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_MODULO.index: self.BINARY_MODULO(oparg, next_instr) elif opcode == opcodedesc.BINARY_MULTIPLY.index: self.BINARY_MULTIPLY(oparg, next_instr) elif opcode == opcodedesc.BINARY_OR.index: self.BINARY_OR(oparg, next_instr) elif opcode == opcodedesc.BINARY_POWER.index: self.BINARY_POWER(oparg, next_instr) elif opcode == opcodedesc.BINARY_RSHIFT.index: self.BINARY_RSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBSCR.index: self.BINARY_SUBSCR(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBTRACT.index: self.BINARY_SUBTRACT(oparg, next_instr) elif opcode == opcodedesc.BINARY_TRUE_DIVIDE.index: self.BINARY_TRUE_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_XOR.index: self.BINARY_XOR(oparg, next_instr) elif opcode == opcodedesc.BUILD_CLASS.index: self.BUILD_CLASS(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST.index: self.BUILD_LIST(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST_FROM_ARG.index: self.BUILD_LIST_FROM_ARG(oparg, next_instr) elif opcode == opcodedesc.BUILD_MAP.index: self.BUILD_MAP(oparg, next_instr) elif opcode == opcodedesc.BUILD_SET.index: self.BUILD_SET(oparg, next_instr) elif opcode == opcodedesc.BUILD_SLICE.index: self.BUILD_SLICE(oparg, next_instr) elif opcode == opcodedesc.BUILD_TUPLE.index: self.BUILD_TUPLE(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION.index: self.CALL_FUNCTION(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_KW.index: self.CALL_FUNCTION_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR.index: self.CALL_FUNCTION_VAR(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR_KW.index: self.CALL_FUNCTION_VAR_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_METHOD.index: > self.CALL_METHOD(oparg, next_instr) interpreter\pyopcode.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ f = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_unique_t...uild\pypy\module\_cffi_backend\test\test_recompiler.py:518]', line 1> at line 3 oparg = 3, ignored = (24L,), n_args = 3, n_kwargs = 0, w_self = None @jit.unroll_safe def CALL_METHOD(f, oparg, *ignored): # opargs contains the arg, and kwarg count, excluding the implicit 'self' n_args = oparg & 0xff n_kwargs = (oparg >> 8) & 0xff w_self = f.peekvalue_maybe_none(n_args + (2 * n_kwargs)) n = n_args + (w_self is not None) if not n_kwargs: w_callable = f.peekvalue(n_args + (2 * n_kwargs) + 1) w_result = f.space.call_valuestack( > w_callable, n, f, methodcall=w_self is not None, dropvalues=n_args + 2) objspace\std\callmethod.py:96: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_unique_t...uild\pypy\module\_cffi_backend\test\test_recompiler.py:518]', line 1> at line 3 dropvalues = 5, methodcall = False def call_valuestack(self, w_func, nargs, frame, dropvalues, methodcall=False): # methodcall is only used for better error messages in argument.py from pypy.interpreter.function import Function, Method, is_builtin_code if frame.get_is_being_profiled() and is_builtin_code(w_func): # XXX: this code is copied&pasted :-( from the slow path below # call_valuestack(). args = frame.make_arguments(nargs) frame.dropvalues(dropvalues) return self.call_args_and_c_profile(frame, w_func, args) if not self.config.objspace.disable_call_speedhacks: # start of hack for performance if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: w_func = w_func.w_function # reuse callable stack place for w_inst frame.settopvalue(w_inst, nargs) nargs += 1 methodcall = True elif nargs > 0 and ( self.abstract_isinstance_w(frame.peekvalue(nargs-1), # :-( w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): return w_func.funccall_valuestack( > nargs, frame, methodcall=methodcall, dropvalues=dropvalues) interpreter\baseobjspace.py:1243: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_unique_t...uild\pypy\module\_cffi_backend\test\test_recompiler.py:518]', line 1> at line 3 dropvalues = 5, methodcall = False def funccall_valuestack(self, nargs, frame, dropvalues, methodcall=False): # speed hack # methodcall is only for better error messages from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit # if (jit.we_are_jitted() and code is self.space._code_of_sys_exc_info and nargs == 0): frame.dropvalues(dropvalues) from pypy.module.sys.vm import exc_info_direct return exc_info_direct(self.space, frame) # fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: f_0 = frame.peekvalue(0) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, f_0) elif nargs == 2: f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, f_1, f_0) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) frame.dropvalues(dropvalues) return code.fastcall_3(self.space, self, f_2, f_1, f_0) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) f_3 = frame.peekvalue(3) frame.dropvalues(dropvalues) return code.fastcall_4(self.space, self, f_3, f_2, f_1, f_0) elif (nargs | Code.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) return self._flat_pycall(code, nargs, frame, dropvalues) elif fast_natural_arity & Code.FLATPYCALL: natural_arity = fast_natural_arity & 0xff if natural_arity > nargs >= natural_arity - len(self.defs_w): assert isinstance(code, PyCode) return self._flat_pycall_defaults(code, nargs, frame, natural_arity - nargs, dropvalues) elif fast_natural_arity == Code.PASSTHROUGHARGS1 and nargs >= 1: assert isinstance(code, gateway.BuiltinCodePassThroughArguments1) w_obj = frame.peekvalue(nargs-1) args = frame.make_arguments(nargs-1) frame.dropvalues(dropvalues) return code.funcrun_obj(self, w_obj, args) args = frame.make_arguments(nargs, methodcall=methodcall) frame.dropvalues(dropvalues) > return self.call_args(args) interpreter\function.py:190: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('struct foo_s; union foo_u; enum foo_e { AA };'), W_B...que_types_1'), W_BytesObject('struct foo_s; union foo_u; enum foo_e { AA };')]) def call_args(self, args): # delegate activation to code > w_res = self.getcode().funcrun(self, args) interpreter\function.py:68: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('struct foo_s; union foo_u; enum foo_e { AA };'), W_B...que_types_1'), W_BytesObject('struct foo_s; union foo_u; enum foo_e { AA };')]) def funcrun(self, func, args): > return BuiltinCode.funcrun_obj(self, func, None, args) interpreter\gateway.py:781: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('struct foo_s; union foo_u; enum foo_e { AA };'), W_B...que_types_1'), W_BytesObject('struct foo_s; union foo_u; enum foo_e { AA };')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: w_result = activation._run(space, scope_w) except DescrMismatch: if w_obj is not None: args = args.prepend(w_obj) return self._type_unwrap_mismatch(space, args) except Exception as e: > self.handle_exception(space, e) interpreter\gateway.py:795: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> space = StdObjSpace e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def handle_exception(self, space, e): try: if not we_are_translated(): raise raise e except OperationError: raise except Exception as e: # general fall-back from pypy.interpreter import error > raise error.get_converted_unexpected_exception(space, e) interpreter\gateway.py:819: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('struct foo_s; union foo_u; enum foo_e { AA };'), W_B...que_types_1'), W_BytesObject('struct foo_s; union foo_u; enum foo_e { AA };')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: > w_result = activation._run(space, scope_w) interpreter\gateway.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinActivation_UwS_ObjSpace_text_text_text_W_Root_W_Root_W_Root_int_W_Root object at 0x000002791c13af38> space = StdObjSpace scope_w = [W_BytesObject('struct foo_s; union foo_u; enum foo_e { AA };'), W_BytesObject('test_unique_types_1'), W_BytesObject('struct foo_s; union foo_u; enum foo_e { AA };'), None, None, None, ...] def _run(self, space, scope_w): > return self.behavior(space, space.text_w(scope_w[0]), space.text_w(scope_w[1]), space.text_w(scope_w[2]), scope_w[3], scope_w[4], scope_w[5], space.gateway_int_w(scope_w[6]), scope_w[7]) <3152-codegen d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\rpython\tool\sourcetools.py:200>:3: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace, cdef = 'struct foo_s; union foo_u; enum foo_e { AA };' module_name = '_CFFI_test_unique_types_1' source = 'struct foo_s; union foo_u; enum foo_e { AA };', w_includes = None w_extra_source = None, w_min_version = None, packed = 0 w_extra_compile_args = None @unwrap_spec(cdef='text', module_name='text', source='text', packed=int) def prepare(space, cdef, module_name, source, w_includes=None, w_extra_source=None, w_min_version=None, packed=False, w_extra_compile_args=None): try: import cffi from cffi import FFI # <== the system one, which from cffi import recompiler # needs to be at least cffi 1.0.4 from cffi import ffiplatform except ImportError: pytest.skip("system cffi module not found or older than 1.0.0") if w_min_version is None: min_version = (1, 4, 0) else: min_version = tuple(space.unwrap(w_min_version)) if cffi.__version_info__ < min_version: pytest.skip("system cffi module needs to be at least %s, got %s" % ( min_version, cffi.__version_info__)) space.appexec([], """(): import _cffi_backend # force it to be initialized """) includes = [] if w_includes: includes += space.unpackiterable(w_includes) assert module_name.startswith('test_') module_name = '_CFFI_' + module_name rdir = udir.ensure('recompiler', dir=1) rdir.join('Python.h').write( '#include <stdio.h>\n' '#define PYPY_VERSION XX\n' '#define PyMODINIT_FUNC /*exported*/ void\n' ) path = module_name.replace('.', os.sep) if '.' in module_name: subrdir = rdir.join(module_name[:module_name.index('.')]) os.mkdir(str(subrdir)) else: subrdir = rdir c_file = str(rdir.join('%s.c' % path)) ffi = FFI() for include_ffi_object in includes: ffi.include(include_ffi_object._test_recompiler_source_ffi) ffi.cdef(cdef, packed=packed) ffi.set_source(module_name, source) ffi.emit_c_code(c_file) base_module_name = module_name.split('.')[-1] sources = [] if w_extra_source is not None: sources.append(space.str_w(w_extra_source)) kwargs = {} # GCC 14 promotes -Wincompatible-pointer-types from a warning to an error # by default, which breaks cffi's intentionally-mismatched field-check # probes (e.g. test_misdeclared_field_1). Keep it a warning so the module # compiles and cffi's runtime checks can run. extra = ['-Wno-error=incompatible-pointer-types'] if w_extra_compile_args is not None: extra = extra + space.unwrap(w_extra_compile_args) kwargs['extra_compile_args'] = extra ext = ffiplatform.get_extension(c_file, module_name, include_dirs=[str(rdir)], export_symbols=['_cffi_pypyinit_' + base_module_name], sources=sources, **kwargs) > ffiplatform.compile(str(rdir), ext) module\_cffi_backend\test\test_recompiler.py:86: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x000002792a6b92e0> compiler_verbose = 0, debug = None def compile(tmpdir, ext, compiler_verbose=0, debug=None): """Compile a C extension module using distutils.""" saved_environ = os.environ.copy() try: > outputfilename = _build(tmpdir, ext, compiler_verbose, debug) d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x000002792a6b92e0> compiler_verbose = 0, debug = 0 def _build(tmpdir, ext, compiler_verbose=0, debug=None): # XXX compact but horrible :-( from cffi._shimmed_dist_utils import Distribution, CompileError, LinkError, set_threshold, set_verbosity dist = Distribution({'ext_modules': [ext]}) dist.parse_config_files() options = dist.get_option_dict('build_ext') if debug is None: debug = sys.flags.debug options['debug'] = ('ffiplatform', debug) options['force'] = ('ffiplatform', True) options['build_lib'] = ('ffiplatform', tmpdir) options['build_temp'] = ('ffiplatform', tmpdir) # try: old_level = set_threshold(0) or 0 try: set_verbosity(compiler_verbose) dist.run_command('build_ext') cmd_obj = dist.get_command_obj('build_ext') [soname] = cmd_obj.get_outputs() finally: set_threshold(old_level) except (CompileError, LinkError) as e: > raise VerificationError('%s: %s' % (e.__class__.__name__, e)) E VerificationError: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2 d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:54: VerificationError ---------------------------- Captured stdout call ----------------------------- generating d:\systemtemp\pytest\usession-main-595\recompiler\_CFFI_test_unique_types_1.c ---------------------------- Captured stderr call ----------------------------- cl : Command line error D8021 : invalid numeric argument '/Wno-error=incompatible-pointer-types' ________________ AppTestRecompiler.test_module_name_in_package ________________ self = <CallInfo when='call' exception: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2> func = <function <lambda> at 0x000002791b36de98>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ..\_pytest\runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ..\_pytest\runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_module_name_in_package'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_module_name_in_package'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ..\_pytest\vendored_packages\pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00000279153616a8> hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_module_name_in_package'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_module_name_in_package'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ..\_pytest\vendored_packages\pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_module_name_in_package'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_module_name_in_package'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ..\_pytest\vendored_packages\pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_module_name_in_package'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791ae31498> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...in_package'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792a570420> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792a570420> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...in_package'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_module_name_in_package'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791ae31420> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...in_package'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792a5703e0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792a5703e0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...in_package'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_module_name_in_package'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ..\_pytest\vendored_packages\pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_module_name_in_package'> def pytest_runtest_call(item): try: > item.runtest() ..\_pytest\runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_module_name_in_package'> def runtest(self): target = self.obj if self.config.option.runappdirect: return target() space = target.im_self.space filename = self._getdynfilename(target) func = app2interp_temp(target.im_func, filename=filename) w_instance = self.parent.w_instance > self.execute_appex(space, func, space, w_instance) tool\pytest\apptest.py:89: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_module_name_in_package'>, space = StdObjSpace target = <function test_module_name_in_package at 0x000002791c700020> args = (StdObjSpace, <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>) def execute_appex(self, space, target, *args): self.space = space try: > target(*args) tool\pytest\apptest.py:30: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) w_func = <Function test_module_name_in_package> args = <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8> def appcaller(space, *args_w): if not isinstance(space, ObjSpace): raise TypeError("first argument must be a space instance.") # the last argument can be an Arguments w_func = self.wget(space, name) if not args_w: return space.call_function(w_func) else: args = args_w[-1] assert args is not None if not isinstance(args, Arguments): > return space.call_function(w_func, *args_w) interpreter\gateway.py:1227: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <Function test_module_name_in_package> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) nargs = 1, Function = <class 'pypy.interpreter.function.Function'> Method = <class 'pypy.interpreter.function.Method'> def call_function(self, w_func, *args_w): nargs = len(args_w) # used for pruning funccall versions if not self.config.objspace.disable_call_speedhacks and nargs < 5: # start of hack for performance from pypy.interpreter.function import Function, Method if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: if nargs < 4: func = w_func.w_function if isinstance(func, Function): return func.funccall(w_inst, *args_w) elif args_w and ( self.abstract_isinstance_w(args_w[0], w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): > return w_func.funccall(*args_w) interpreter\baseobjspace.py:1210: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <Function test_module_name_in_package> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) gateway = <module 'pypy.interpreter.gateway' from 'd:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\interpreter\\gateway.pyc'> PyCode = <class 'pypy.interpreter.pycode.PyCode'> code = <code object test_module_name_in_package, file '[d:\pypy_stuff\buildbot64\slav...n-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:544]', line 1> def funccall(self, *args_w): # speed hack from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit nargs = len(args_w) fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, args_w[0]) elif nargs == 2: assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, args_w[0], args_w[1]) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) return code.fastcall_3(self.space, self, args_w[0], args_w[1], args_w[2]) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) return code.fastcall_4(self.space, self, args_w[0], args_w[1], args_w[2], args_w[3]) elif (nargs | PyCode.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) if nargs < 5: new_frame = self.space.createframe(code, self.w_func_globals, self) for i in funccallunrolling: if i < nargs: new_frame.locals_cells_stack_w[i] = args_w[i] > return new_frame.run() interpreter\function.py:118: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_module_n...uild\pypy\module\_cffi_backend\test\test_recompiler.py:544]', line 1> at line 5 def run(self): """Start this frame's execution.""" if self.getcode().co_flags & pycode.CO_GENERATOR: from pypy.interpreter.generator import GeneratorIterator return GeneratorIterator(self) else: > return self.execute_frame() interpreter\pyframe.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_module_n...uild\pypy\module\_cffi_backend\test\test_recompiler.py:544]', line 1> at line 5 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, executioncontext) except OperationError: raise except Exception as e: # general fall-back > raise self._convert_unexpected_exception(e) interpreter\pyframe.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_module_n...uild\pypy\module\_cffi_backend\test\test_recompiler.py:544]', line 1> at line 5 e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def _convert_unexpected_exception(self, e): from pypy.interpreter import error > operr = error.get_converted_unexpected_exception(self.space, e) interpreter\pyframe.py:943: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_module_n...uild\pypy\module\_cffi_backend\test\test_recompiler.py:544]', line 1> at line 5 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, > executioncontext) interpreter\pyframe.py:286: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_module_n...uild\pypy\module\_cffi_backend\test\test_recompiler.py:544]', line 1> at line 5 pycode = <code object test_module_name_in_package, file '[d:\pypy_stuff\buildbot64\slav...n-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:544]', line 1> next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def dispatch(self, pycode, next_instr, ec): # For the sequel, force 'next_instr' to be unsigned for performance next_instr = r_uint(next_instr) co_code = pycode.co_code try: while True: > next_instr = self.handle_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:64: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_module_n...uild\pypy\module\_cffi_backend\test\test_recompiler.py:544]', line 1> at line 5 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00\xcc\x1b\x00|\x02\x00\xc9\x01\x00d\x04\x00\xca\x01\x00d\x05\x00k\x02\x00s9\x00t\x02\x00\x82\x01\x00d\x00\x00S' next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def handle_bytecode(self, co_code, next_instr, ec): try: > next_instr = self.dispatch_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:71: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_module_n...uild\pypy\module\_cffi_backend\test\test_recompiler.py:544]', line 1> at line 5 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00\xcc\x1b\x00|\x02\x00\xc9\x01\x00d\x04\x00\xca\x01\x00d\x05\x00k\x02\x00s9\x00t\x02\x00\x82\x01\x00d\x00\x00S' next_instr = 18L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> @jit.unroll_safe def dispatch_bytecode(self, co_code, next_instr, ec): while True: self.last_instr = intmask(next_instr) if jit.we_are_jitted(): if self.debugdata: ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) else: # Only reload next_instr from last_instr when something that # can modify it actually ran (trace function or action # dispatcher). In the common case (no trace, positive ticker) # next_instr is unchanged and the round-trip is skipped. _d = self.debugdata if ec.space.reverse_debugging or ( _d is not None and _d.w_f_trace is not None) or ( not we_are_translated() and 'bytecode_only_trace' in ec.__dict__): ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) actionflag = ec.space.actionflag if actionflag.decrement_ticker(TICK_COUNTER_STEP) < 0: actionflag.action_dispatcher(ec, self) next_instr = r_uint(self.last_instr) opcode = ord(co_code[next_instr]) next_instr += 1 if opcode >= HAVE_ARGUMENT: lo = ord(co_code[next_instr]) hi = ord(co_code[next_instr+1]) next_instr += 2 oparg = (hi * 256) | lo else: oparg = 0 # note: the structure of the code here is such that it makes # (after translation) a big "if/elif" chain, which is then # turned into a switch(). while opcode == opcodedesc.EXTENDED_ARG.index: opcode = ord(co_code[next_instr]) if opcode < HAVE_ARGUMENT: raise BytecodeCorruption lo = ord(co_code[next_instr+1]) hi = ord(co_code[next_instr+2]) next_instr += 3 oparg = (oparg * 65536) | (hi * 256) | lo if opcode == opcodedesc.RETURN_VALUE.index: if not self.blockstack_non_empty(): self.frame_finished_execution = True # for generators raise Return w_returnvalue = self.popvalue() block = self.unrollstack(SReturnValue.kind) if block is None: self.pushvalue(w_returnvalue) raise Return else: unroller = SReturnValue(w_returnvalue) next_instr = block.handle(self, unroller) return next_instr # now inside a 'finally' block elif opcode == opcodedesc.END_FINALLY.index: unroller = self.end_finally() if isinstance(unroller, SuspendedUnroller): # go on unrolling the stack block = self.unrollstack(unroller.kind) if block is None: w_result = unroller.nomoreblocks() self.pushvalue(w_result) raise Return else: next_instr = block.handle(self, unroller) return next_instr elif opcode == opcodedesc.JUMP_ABSOLUTE.index: return self.jump_absolute(oparg, ec) elif opcode == opcodedesc.BREAK_LOOP.index: next_instr = self.BREAK_LOOP(oparg, next_instr) elif opcode == opcodedesc.CONTINUE_LOOP.index: return self.CONTINUE_LOOP(oparg, next_instr) elif opcode == opcodedesc.FOR_ITER.index: next_instr = self.FOR_ITER(oparg, next_instr) elif opcode == opcodedesc.JUMP_FORWARD.index: next_instr = self.JUMP_FORWARD(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_FALSE_OR_POP.index: next_instr = self.JUMP_IF_FALSE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_NOT_DEBUG.index: next_instr = self.JUMP_IF_NOT_DEBUG(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_TRUE_OR_POP.index: next_instr = self.JUMP_IF_TRUE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_FALSE.index: next_instr = self.POP_JUMP_IF_FALSE(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_TRUE.index: next_instr = self.POP_JUMP_IF_TRUE(oparg, next_instr) elif opcode == opcodedesc.BINARY_ADD.index: self.BINARY_ADD(oparg, next_instr) elif opcode == opcodedesc.BINARY_AND.index: self.BINARY_AND(oparg, next_instr) elif opcode == opcodedesc.BINARY_DIVIDE.index: self.BINARY_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_FLOOR_DIVIDE.index: self.BINARY_FLOOR_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_LSHIFT.index: self.BINARY_LSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_MODULO.index: self.BINARY_MODULO(oparg, next_instr) elif opcode == opcodedesc.BINARY_MULTIPLY.index: self.BINARY_MULTIPLY(oparg, next_instr) elif opcode == opcodedesc.BINARY_OR.index: self.BINARY_OR(oparg, next_instr) elif opcode == opcodedesc.BINARY_POWER.index: self.BINARY_POWER(oparg, next_instr) elif opcode == opcodedesc.BINARY_RSHIFT.index: self.BINARY_RSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBSCR.index: self.BINARY_SUBSCR(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBTRACT.index: self.BINARY_SUBTRACT(oparg, next_instr) elif opcode == opcodedesc.BINARY_TRUE_DIVIDE.index: self.BINARY_TRUE_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_XOR.index: self.BINARY_XOR(oparg, next_instr) elif opcode == opcodedesc.BUILD_CLASS.index: self.BUILD_CLASS(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST.index: self.BUILD_LIST(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST_FROM_ARG.index: self.BUILD_LIST_FROM_ARG(oparg, next_instr) elif opcode == opcodedesc.BUILD_MAP.index: self.BUILD_MAP(oparg, next_instr) elif opcode == opcodedesc.BUILD_SET.index: self.BUILD_SET(oparg, next_instr) elif opcode == opcodedesc.BUILD_SLICE.index: self.BUILD_SLICE(oparg, next_instr) elif opcode == opcodedesc.BUILD_TUPLE.index: self.BUILD_TUPLE(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION.index: self.CALL_FUNCTION(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_KW.index: self.CALL_FUNCTION_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR.index: self.CALL_FUNCTION_VAR(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR_KW.index: self.CALL_FUNCTION_VAR_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_METHOD.index: > self.CALL_METHOD(oparg, next_instr) interpreter\pyopcode.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ f = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_module_n...uild\pypy\module\_cffi_backend\test\test_recompiler.py:544]', line 1> at line 5 oparg = 3, ignored = (18L,), n_args = 3, n_kwargs = 0, w_self = None @jit.unroll_safe def CALL_METHOD(f, oparg, *ignored): # opargs contains the arg, and kwarg count, excluding the implicit 'self' n_args = oparg & 0xff n_kwargs = (oparg >> 8) & 0xff w_self = f.peekvalue_maybe_none(n_args + (2 * n_kwargs)) n = n_args + (w_self is not None) if not n_kwargs: w_callable = f.peekvalue(n_args + (2 * n_kwargs) + 1) w_result = f.space.call_valuestack( > w_callable, n, f, methodcall=w_self is not None, dropvalues=n_args + 2) objspace\std\callmethod.py:96: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_module_n...uild\pypy\module\_cffi_backend\test\test_recompiler.py:544]', line 1> at line 5 dropvalues = 5, methodcall = False def call_valuestack(self, w_func, nargs, frame, dropvalues, methodcall=False): # methodcall is only used for better error messages in argument.py from pypy.interpreter.function import Function, Method, is_builtin_code if frame.get_is_being_profiled() and is_builtin_code(w_func): # XXX: this code is copied&pasted :-( from the slow path below # call_valuestack(). args = frame.make_arguments(nargs) frame.dropvalues(dropvalues) return self.call_args_and_c_profile(frame, w_func, args) if not self.config.objspace.disable_call_speedhacks: # start of hack for performance if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: w_func = w_func.w_function # reuse callable stack place for w_inst frame.settopvalue(w_inst, nargs) nargs += 1 methodcall = True elif nargs > 0 and ( self.abstract_isinstance_w(frame.peekvalue(nargs-1), # :-( w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): return w_func.funccall_valuestack( > nargs, frame, methodcall=methodcall, dropvalues=dropvalues) interpreter\baseobjspace.py:1243: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_module_n...uild\pypy\module\_cffi_backend\test\test_recompiler.py:544]', line 1> at line 5 dropvalues = 5, methodcall = False def funccall_valuestack(self, nargs, frame, dropvalues, methodcall=False): # speed hack # methodcall is only for better error messages from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit # if (jit.we_are_jitted() and code is self.space._code_of_sys_exc_info and nargs == 0): frame.dropvalues(dropvalues) from pypy.module.sys.vm import exc_info_direct return exc_info_direct(self.space, frame) # fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: f_0 = frame.peekvalue(0) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, f_0) elif nargs == 2: f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, f_1, f_0) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) frame.dropvalues(dropvalues) return code.fastcall_3(self.space, self, f_2, f_1, f_0) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) f_3 = frame.peekvalue(3) frame.dropvalues(dropvalues) return code.fastcall_4(self.space, self, f_3, f_2, f_1, f_0) elif (nargs | Code.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) return self._flat_pycall(code, nargs, frame, dropvalues) elif fast_natural_arity & Code.FLATPYCALL: natural_arity = fast_natural_arity & 0xff if natural_arity > nargs >= natural_arity - len(self.defs_w): assert isinstance(code, PyCode) return self._flat_pycall_defaults(code, nargs, frame, natural_arity - nargs, dropvalues) elif fast_natural_arity == Code.PASSTHROUGHARGS1 and nargs >= 1: assert isinstance(code, gateway.BuiltinCodePassThroughArguments1) w_obj = frame.peekvalue(nargs-1) args = frame.make_arguments(nargs-1) frame.dropvalues(dropvalues) return code.funcrun_obj(self, w_obj, args) args = frame.make_arguments(nargs, methodcall=methodcall) frame.dropvalues(dropvalues) > return self.call_args(args) interpreter\function.py:190: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('int foo(int);'), W_BytesObject('test_module_name_in_package.mymod'), W_BytesObject('int foo(int x) { return x + 32; }')]) def call_args(self, args): # delegate activation to code > w_res = self.getcode().funcrun(self, args) interpreter\function.py:68: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('int foo(int);'), W_BytesObject('test_module_name_in_package.mymod'), W_BytesObject('int foo(int x) { return x + 32; }')]) def funcrun(self, func, args): > return BuiltinCode.funcrun_obj(self, func, None, args) interpreter\gateway.py:781: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('int foo(int);'), W_BytesObject('test_module_name_in_package.mymod'), W_BytesObject('int foo(int x) { return x + 32; }')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: w_result = activation._run(space, scope_w) except DescrMismatch: if w_obj is not None: args = args.prepend(w_obj) return self._type_unwrap_mismatch(space, args) except Exception as e: > self.handle_exception(space, e) interpreter\gateway.py:795: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> space = StdObjSpace e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def handle_exception(self, space, e): try: if not we_are_translated(): raise raise e except OperationError: raise except Exception as e: # general fall-back from pypy.interpreter import error > raise error.get_converted_unexpected_exception(space, e) interpreter\gateway.py:819: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('int foo(int);'), W_BytesObject('test_module_name_in_package.mymod'), W_BytesObject('int foo(int x) { return x + 32; }')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: > w_result = activation._run(space, scope_w) interpreter\gateway.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinActivation_UwS_ObjSpace_text_text_text_W_Root_W_Root_W_Root_int_W_Root object at 0x000002791c13af38> space = StdObjSpace scope_w = [W_BytesObject('int foo(int);'), W_BytesObject('test_module_name_in_package.mymod'), W_BytesObject('int foo(int x) { return x + 32; }'), None, None, None, ...] def _run(self, space, scope_w): > return self.behavior(space, space.text_w(scope_w[0]), space.text_w(scope_w[1]), space.text_w(scope_w[2]), scope_w[3], scope_w[4], scope_w[5], space.gateway_int_w(scope_w[6]), scope_w[7]) <3152-codegen d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\rpython\tool\sourcetools.py:200>:3: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace, cdef = 'int foo(int);' module_name = '_CFFI_test_module_name_in_package.mymod' source = 'int foo(int x) { return x + 32; }', w_includes = None w_extra_source = None, w_min_version = None, packed = 0 w_extra_compile_args = None @unwrap_spec(cdef='text', module_name='text', source='text', packed=int) def prepare(space, cdef, module_name, source, w_includes=None, w_extra_source=None, w_min_version=None, packed=False, w_extra_compile_args=None): try: import cffi from cffi import FFI # <== the system one, which from cffi import recompiler # needs to be at least cffi 1.0.4 from cffi import ffiplatform except ImportError: pytest.skip("system cffi module not found or older than 1.0.0") if w_min_version is None: min_version = (1, 4, 0) else: min_version = tuple(space.unwrap(w_min_version)) if cffi.__version_info__ < min_version: pytest.skip("system cffi module needs to be at least %s, got %s" % ( min_version, cffi.__version_info__)) space.appexec([], """(): import _cffi_backend # force it to be initialized """) includes = [] if w_includes: includes += space.unpackiterable(w_includes) assert module_name.startswith('test_') module_name = '_CFFI_' + module_name rdir = udir.ensure('recompiler', dir=1) rdir.join('Python.h').write( '#include <stdio.h>\n' '#define PYPY_VERSION XX\n' '#define PyMODINIT_FUNC /*exported*/ void\n' ) path = module_name.replace('.', os.sep) if '.' in module_name: subrdir = rdir.join(module_name[:module_name.index('.')]) os.mkdir(str(subrdir)) else: subrdir = rdir c_file = str(rdir.join('%s.c' % path)) ffi = FFI() for include_ffi_object in includes: ffi.include(include_ffi_object._test_recompiler_source_ffi) ffi.cdef(cdef, packed=packed) ffi.set_source(module_name, source) ffi.emit_c_code(c_file) base_module_name = module_name.split('.')[-1] sources = [] if w_extra_source is not None: sources.append(space.str_w(w_extra_source)) kwargs = {} # GCC 14 promotes -Wincompatible-pointer-types from a warning to an error # by default, which breaks cffi's intentionally-mismatched field-check # probes (e.g. test_misdeclared_field_1). Keep it a warning so the module # compiles and cffi's runtime checks can run. extra = ['-Wno-error=incompatible-pointer-types'] if w_extra_compile_args is not None: extra = extra + space.unwrap(w_extra_compile_args) kwargs['extra_compile_args'] = extra ext = ffiplatform.get_extension(c_file, module_name, include_dirs=[str(rdir)], export_symbols=['_cffi_pypyinit_' + base_module_name], sources=sources, **kwargs) > ffiplatform.compile(str(rdir), ext) module\_cffi_backend\test\test_recompiler.py:86: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x000002792a570ee0> compiler_verbose = 0, debug = None def compile(tmpdir, ext, compiler_verbose=0, debug=None): """Compile a C extension module using distutils.""" saved_environ = os.environ.copy() try: > outputfilename = _build(tmpdir, ext, compiler_verbose, debug) d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x000002792a570ee0> compiler_verbose = 0, debug = 0 def _build(tmpdir, ext, compiler_verbose=0, debug=None): # XXX compact but horrible :-( from cffi._shimmed_dist_utils import Distribution, CompileError, LinkError, set_threshold, set_verbosity dist = Distribution({'ext_modules': [ext]}) dist.parse_config_files() options = dist.get_option_dict('build_ext') if debug is None: debug = sys.flags.debug options['debug'] = ('ffiplatform', debug) options['force'] = ('ffiplatform', True) options['build_lib'] = ('ffiplatform', tmpdir) options['build_temp'] = ('ffiplatform', tmpdir) # try: old_level = set_threshold(0) or 0 try: set_verbosity(compiler_verbose) dist.run_command('build_ext') cmd_obj = dist.get_command_obj('build_ext') [soname] = cmd_obj.get_outputs() finally: set_threshold(old_level) except (CompileError, LinkError) as e: > raise VerificationError('%s: %s' % (e.__class__.__name__, e)) E VerificationError: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2 d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:54: VerificationError ---------------------------- Captured stdout call ----------------------------- generating d:\systemtemp\pytest\usession-main-595\recompiler\_CFFI_test_module_name_in_package\mymod.c ---------------------------- Captured stderr call ----------------------------- cl : Command line error D8021 : invalid numeric argument '/Wno-error=incompatible-pointer-types' _____________ AppTestRecompiler.test_unspecified_size_of_global_1 _____________ self = <CallInfo when='call' exception: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2> func = <function <lambda> at 0x000002791c62c3e0>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ..\_pytest\runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ..\_pytest\runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_unspecified_size_of_global_1'>,...icall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_unspecified_size_of_global_1'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ..\_pytest\vendored_packages\pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00000279153616a8> hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_unspecified_size_of_global_1'>,...icall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_unspecified_size_of_global_1'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ..\_pytest\vendored_packages\pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_unspecified_size_of_global_1'>,...icall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_unspecified_size_of_global_1'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ..\_pytest\vendored_packages\pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_unspecified_size_of_global_1'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002792a5009d0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...f_global_1'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002791f2c7020> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002791f2c7020> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...f_global_1'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_unspecified_size_of_global_1'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002792a500980> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...f_global_1'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002791f2c6fe0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002791f2c6fe0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...f_global_1'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_unspecified_size_of_global_1'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ..\_pytest\vendored_packages\pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_unspecified_size_of_global_1'> def pytest_runtest_call(item): try: > item.runtest() ..\_pytest\runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_unspecified_size_of_global_1'> def runtest(self): target = self.obj if self.config.option.runappdirect: return target() space = target.im_self.space filename = self._getdynfilename(target) func = app2interp_temp(target.im_func, filename=filename) w_instance = self.parent.w_instance > self.execute_appex(space, func, space, w_instance) tool\pytest\apptest.py:89: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_unspecified_size_of_global_1'>, space = StdObjSpace target = <function test_unspecified_size_of_global_1 at 0x000002791c62cd40> args = (StdObjSpace, <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>) def execute_appex(self, space, target, *args): self.space = space try: > target(*args) tool\pytest\apptest.py:30: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) w_func = <Function test_unspecified_size_of_global_1> args = <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8> def appcaller(space, *args_w): if not isinstance(space, ObjSpace): raise TypeError("first argument must be a space instance.") # the last argument can be an Arguments w_func = self.wget(space, name) if not args_w: return space.call_function(w_func) else: args = args_w[-1] assert args is not None if not isinstance(args, Arguments): > return space.call_function(w_func, *args_w) interpreter\gateway.py:1227: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <Function test_unspecified_size_of_global_1> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) nargs = 1, Function = <class 'pypy.interpreter.function.Function'> Method = <class 'pypy.interpreter.function.Method'> def call_function(self, w_func, *args_w): nargs = len(args_w) # used for pruning funccall versions if not self.config.objspace.disable_call_speedhacks and nargs < 5: # start of hack for performance from pypy.interpreter.function import Function, Method if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: if nargs < 4: func = w_func.w_function if isinstance(func, Function): return func.funccall(w_inst, *args_w) elif args_w and ( self.abstract_isinstance_w(args_w[0], w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): > return w_func.funccall(*args_w) interpreter\baseobjspace.py:1210: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <Function test_unspecified_size_of_global_1> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) gateway = <module 'pypy.interpreter.gateway' from 'd:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\interpreter\\gateway.pyc'> PyCode = <class 'pypy.interpreter.pycode.PyCode'> code = <code object test_unspecified_size_of_global_1, file '[d:\pypy_stuff\buildbot6...n-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:551]', line 1> def funccall(self, *args_w): # speed hack from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit nargs = len(args_w) fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, args_w[0]) elif nargs == 2: assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, args_w[0], args_w[1]) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) return code.fastcall_3(self.space, self, args_w[0], args_w[1], args_w[2]) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) return code.fastcall_4(self.space, self, args_w[0], args_w[1], args_w[2], args_w[3]) elif (nargs | PyCode.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) if nargs < 5: new_frame = self.space.createframe(code, self.w_func_globals, self) for i in funccallunrolling: if i < nargs: new_frame.locals_cells_stack_w[i] = args_w[i] > return new_frame.run() interpreter\function.py:118: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_unspecif...uild\pypy\module\_cffi_backend\test\test_recompiler.py:551]', line 1> at line 5 def run(self): """Start this frame's execution.""" if self.getcode().co_flags & pycode.CO_GENERATOR: from pypy.interpreter.generator import GeneratorIterator return GeneratorIterator(self) else: > return self.execute_frame() interpreter\pyframe.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_unspecif...uild\pypy\module\_cffi_backend\test\test_recompiler.py:551]', line 1> at line 5 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, executioncontext) except OperationError: raise except Exception as e: # general fall-back > raise self._convert_unexpected_exception(e) interpreter\pyframe.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_unspecif...uild\pypy\module\_cffi_backend\test\test_recompiler.py:551]', line 1> at line 5 e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def _convert_unexpected_exception(self, e): from pypy.interpreter import error > operr = error.get_converted_unexpected_exception(self.space, e) interpreter\pyframe.py:943: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_unspecif...uild\pypy\module\_cffi_backend\test\test_recompiler.py:551]', line 1> at line 5 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, > executioncontext) interpreter\pyframe.py:286: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_unspecif...uild\pypy\module\_cffi_backend\test\test_recompiler.py:551]', line 1> at line 5 pycode = <code object test_unspecified_size_of_global_1, file '[d:\pypy_stuff\buildbot6...n-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:551]', line 1> next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def dispatch(self, pycode, next_instr, ec): # For the sequel, force 'next_instr' to be unsigned for performance next_instr = r_uint(next_instr) co_code = pycode.co_code try: while True: > next_instr = self.handle_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:64: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_unspecif...uild\pypy\module\_cffi_backend\test\test_recompiler.py:551]', line 1> at line 5 co_code = "|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00\xcc'\x00|\x01\x00\xc9\x01\x00|\x02\x00j\x02\x00\xca\x01\x00|\x01\x00\xc9\x01\x00d\x04\x00\xca\x01\x00k\x02\x00sE\x00t\x03\x00\x82\x01\x00d\x00\x00S" next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def handle_bytecode(self, co_code, next_instr, ec): try: > next_instr = self.dispatch_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:71: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_unspecif...uild\pypy\module\_cffi_backend\test\test_recompiler.py:551]', line 1> at line 5 co_code = "|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00\xcc'\x00|\x01\x00\xc9\x01\x00|\x02\x00j\x02\x00\xca\x01\x00|\x01\x00\xc9\x01\x00d\x04\x00\xca\x01\x00k\x02\x00sE\x00t\x03\x00\x82\x01\x00d\x00\x00S" next_instr = 18L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> @jit.unroll_safe def dispatch_bytecode(self, co_code, next_instr, ec): while True: self.last_instr = intmask(next_instr) if jit.we_are_jitted(): if self.debugdata: ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) else: # Only reload next_instr from last_instr when something that # can modify it actually ran (trace function or action # dispatcher). In the common case (no trace, positive ticker) # next_instr is unchanged and the round-trip is skipped. _d = self.debugdata if ec.space.reverse_debugging or ( _d is not None and _d.w_f_trace is not None) or ( not we_are_translated() and 'bytecode_only_trace' in ec.__dict__): ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) actionflag = ec.space.actionflag if actionflag.decrement_ticker(TICK_COUNTER_STEP) < 0: actionflag.action_dispatcher(ec, self) next_instr = r_uint(self.last_instr) opcode = ord(co_code[next_instr]) next_instr += 1 if opcode >= HAVE_ARGUMENT: lo = ord(co_code[next_instr]) hi = ord(co_code[next_instr+1]) next_instr += 2 oparg = (hi * 256) | lo else: oparg = 0 # note: the structure of the code here is such that it makes # (after translation) a big "if/elif" chain, which is then # turned into a switch(). while opcode == opcodedesc.EXTENDED_ARG.index: opcode = ord(co_code[next_instr]) if opcode < HAVE_ARGUMENT: raise BytecodeCorruption lo = ord(co_code[next_instr+1]) hi = ord(co_code[next_instr+2]) next_instr += 3 oparg = (oparg * 65536) | (hi * 256) | lo if opcode == opcodedesc.RETURN_VALUE.index: if not self.blockstack_non_empty(): self.frame_finished_execution = True # for generators raise Return w_returnvalue = self.popvalue() block = self.unrollstack(SReturnValue.kind) if block is None: self.pushvalue(w_returnvalue) raise Return else: unroller = SReturnValue(w_returnvalue) next_instr = block.handle(self, unroller) return next_instr # now inside a 'finally' block elif opcode == opcodedesc.END_FINALLY.index: unroller = self.end_finally() if isinstance(unroller, SuspendedUnroller): # go on unrolling the stack block = self.unrollstack(unroller.kind) if block is None: w_result = unroller.nomoreblocks() self.pushvalue(w_result) raise Return else: next_instr = block.handle(self, unroller) return next_instr elif opcode == opcodedesc.JUMP_ABSOLUTE.index: return self.jump_absolute(oparg, ec) elif opcode == opcodedesc.BREAK_LOOP.index: next_instr = self.BREAK_LOOP(oparg, next_instr) elif opcode == opcodedesc.CONTINUE_LOOP.index: return self.CONTINUE_LOOP(oparg, next_instr) elif opcode == opcodedesc.FOR_ITER.index: next_instr = self.FOR_ITER(oparg, next_instr) elif opcode == opcodedesc.JUMP_FORWARD.index: next_instr = self.JUMP_FORWARD(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_FALSE_OR_POP.index: next_instr = self.JUMP_IF_FALSE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_NOT_DEBUG.index: next_instr = self.JUMP_IF_NOT_DEBUG(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_TRUE_OR_POP.index: next_instr = self.JUMP_IF_TRUE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_FALSE.index: next_instr = self.POP_JUMP_IF_FALSE(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_TRUE.index: next_instr = self.POP_JUMP_IF_TRUE(oparg, next_instr) elif opcode == opcodedesc.BINARY_ADD.index: self.BINARY_ADD(oparg, next_instr) elif opcode == opcodedesc.BINARY_AND.index: self.BINARY_AND(oparg, next_instr) elif opcode == opcodedesc.BINARY_DIVIDE.index: self.BINARY_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_FLOOR_DIVIDE.index: self.BINARY_FLOOR_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_LSHIFT.index: self.BINARY_LSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_MODULO.index: self.BINARY_MODULO(oparg, next_instr) elif opcode == opcodedesc.BINARY_MULTIPLY.index: self.BINARY_MULTIPLY(oparg, next_instr) elif opcode == opcodedesc.BINARY_OR.index: self.BINARY_OR(oparg, next_instr) elif opcode == opcodedesc.BINARY_POWER.index: self.BINARY_POWER(oparg, next_instr) elif opcode == opcodedesc.BINARY_RSHIFT.index: self.BINARY_RSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBSCR.index: self.BINARY_SUBSCR(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBTRACT.index: self.BINARY_SUBTRACT(oparg, next_instr) elif opcode == opcodedesc.BINARY_TRUE_DIVIDE.index: self.BINARY_TRUE_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_XOR.index: self.BINARY_XOR(oparg, next_instr) elif opcode == opcodedesc.BUILD_CLASS.index: self.BUILD_CLASS(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST.index: self.BUILD_LIST(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST_FROM_ARG.index: self.BUILD_LIST_FROM_ARG(oparg, next_instr) elif opcode == opcodedesc.BUILD_MAP.index: self.BUILD_MAP(oparg, next_instr) elif opcode == opcodedesc.BUILD_SET.index: self.BUILD_SET(oparg, next_instr) elif opcode == opcodedesc.BUILD_SLICE.index: self.BUILD_SLICE(oparg, next_instr) elif opcode == opcodedesc.BUILD_TUPLE.index: self.BUILD_TUPLE(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION.index: self.CALL_FUNCTION(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_KW.index: self.CALL_FUNCTION_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR.index: self.CALL_FUNCTION_VAR(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR_KW.index: self.CALL_FUNCTION_VAR_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_METHOD.index: > self.CALL_METHOD(oparg, next_instr) interpreter\pyopcode.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ f = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_unspecif...uild\pypy\module\_cffi_backend\test\test_recompiler.py:551]', line 1> at line 5 oparg = 3, ignored = (18L,), n_args = 3, n_kwargs = 0, w_self = None @jit.unroll_safe def CALL_METHOD(f, oparg, *ignored): # opargs contains the arg, and kwarg count, excluding the implicit 'self' n_args = oparg & 0xff n_kwargs = (oparg >> 8) & 0xff w_self = f.peekvalue_maybe_none(n_args + (2 * n_kwargs)) n = n_args + (w_self is not None) if not n_kwargs: w_callable = f.peekvalue(n_args + (2 * n_kwargs) + 1) w_result = f.space.call_valuestack( > w_callable, n, f, methodcall=w_self is not None, dropvalues=n_args + 2) objspace\std\callmethod.py:96: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_unspecif...uild\pypy\module\_cffi_backend\test\test_recompiler.py:551]', line 1> at line 5 dropvalues = 5, methodcall = False def call_valuestack(self, w_func, nargs, frame, dropvalues, methodcall=False): # methodcall is only used for better error messages in argument.py from pypy.interpreter.function import Function, Method, is_builtin_code if frame.get_is_being_profiled() and is_builtin_code(w_func): # XXX: this code is copied&pasted :-( from the slow path below # call_valuestack(). args = frame.make_arguments(nargs) frame.dropvalues(dropvalues) return self.call_args_and_c_profile(frame, w_func, args) if not self.config.objspace.disable_call_speedhacks: # start of hack for performance if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: w_func = w_func.w_function # reuse callable stack place for w_inst frame.settopvalue(w_inst, nargs) nargs += 1 methodcall = True elif nargs > 0 and ( self.abstract_isinstance_w(frame.peekvalue(nargs-1), # :-( w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): return w_func.funccall_valuestack( > nargs, frame, methodcall=methodcall, dropvalues=dropvalues) interpreter\baseobjspace.py:1243: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_unspecif...uild\pypy\module\_cffi_backend\test\test_recompiler.py:551]', line 1> at line 5 dropvalues = 5, methodcall = False def funccall_valuestack(self, nargs, frame, dropvalues, methodcall=False): # speed hack # methodcall is only for better error messages from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit # if (jit.we_are_jitted() and code is self.space._code_of_sys_exc_info and nargs == 0): frame.dropvalues(dropvalues) from pypy.module.sys.vm import exc_info_direct return exc_info_direct(self.space, frame) # fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: f_0 = frame.peekvalue(0) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, f_0) elif nargs == 2: f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, f_1, f_0) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) frame.dropvalues(dropvalues) return code.fastcall_3(self.space, self, f_2, f_1, f_0) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) f_3 = frame.peekvalue(3) frame.dropvalues(dropvalues) return code.fastcall_4(self.space, self, f_3, f_2, f_1, f_0) elif (nargs | Code.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) return self._flat_pycall(code, nargs, frame, dropvalues) elif fast_natural_arity & Code.FLATPYCALL: natural_arity = fast_natural_arity & 0xff if natural_arity > nargs >= natural_arity - len(self.defs_w): assert isinstance(code, PyCode) return self._flat_pycall_defaults(code, nargs, frame, natural_arity - nargs, dropvalues) elif fast_natural_arity == Code.PASSTHROUGHARGS1 and nargs >= 1: assert isinstance(code, gateway.BuiltinCodePassThroughArguments1) w_obj = frame.peekvalue(nargs-1) args = frame.make_arguments(nargs-1) frame.dropvalues(dropvalues) return code.funcrun_obj(self, w_obj, args) args = frame.make_arguments(nargs, methodcall=methodcall) frame.dropvalues(dropvalues) > return self.call_args(args) interpreter\function.py:190: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('int glob[];'), W_BytesObject('test_unspecified_size_of_global_1'), W_BytesObject('int glob[10];')]) def call_args(self, args): # delegate activation to code > w_res = self.getcode().funcrun(self, args) interpreter\function.py:68: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('int glob[];'), W_BytesObject('test_unspecified_size_of_global_1'), W_BytesObject('int glob[10];')]) def funcrun(self, func, args): > return BuiltinCode.funcrun_obj(self, func, None, args) interpreter\gateway.py:781: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('int glob[];'), W_BytesObject('test_unspecified_size_of_global_1'), W_BytesObject('int glob[10];')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: w_result = activation._run(space, scope_w) except DescrMismatch: if w_obj is not None: args = args.prepend(w_obj) return self._type_unwrap_mismatch(space, args) except Exception as e: > self.handle_exception(space, e) interpreter\gateway.py:795: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> space = StdObjSpace e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def handle_exception(self, space, e): try: if not we_are_translated(): raise raise e except OperationError: raise except Exception as e: # general fall-back from pypy.interpreter import error > raise error.get_converted_unexpected_exception(space, e) interpreter\gateway.py:819: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('int glob[];'), W_BytesObject('test_unspecified_size_of_global_1'), W_BytesObject('int glob[10];')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: > w_result = activation._run(space, scope_w) interpreter\gateway.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinActivation_UwS_ObjSpace_text_text_text_W_Root_W_Root_W_Root_int_W_Root object at 0x000002791c13af38> space = StdObjSpace scope_w = [W_BytesObject('int glob[];'), W_BytesObject('test_unspecified_size_of_global_1'), W_BytesObject('int glob[10];'), None, None, None, ...] def _run(self, space, scope_w): > return self.behavior(space, space.text_w(scope_w[0]), space.text_w(scope_w[1]), space.text_w(scope_w[2]), scope_w[3], scope_w[4], scope_w[5], space.gateway_int_w(scope_w[6]), scope_w[7]) <3152-codegen d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\rpython\tool\sourcetools.py:200>:3: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace, cdef = 'int glob[];' module_name = '_CFFI_test_unspecified_size_of_global_1' source = 'int glob[10];', w_includes = None, w_extra_source = None w_min_version = None, packed = 0, w_extra_compile_args = None @unwrap_spec(cdef='text', module_name='text', source='text', packed=int) def prepare(space, cdef, module_name, source, w_includes=None, w_extra_source=None, w_min_version=None, packed=False, w_extra_compile_args=None): try: import cffi from cffi import FFI # <== the system one, which from cffi import recompiler # needs to be at least cffi 1.0.4 from cffi import ffiplatform except ImportError: pytest.skip("system cffi module not found or older than 1.0.0") if w_min_version is None: min_version = (1, 4, 0) else: min_version = tuple(space.unwrap(w_min_version)) if cffi.__version_info__ < min_version: pytest.skip("system cffi module needs to be at least %s, got %s" % ( min_version, cffi.__version_info__)) space.appexec([], """(): import _cffi_backend # force it to be initialized """) includes = [] if w_includes: includes += space.unpackiterable(w_includes) assert module_name.startswith('test_') module_name = '_CFFI_' + module_name rdir = udir.ensure('recompiler', dir=1) rdir.join('Python.h').write( '#include <stdio.h>\n' '#define PYPY_VERSION XX\n' '#define PyMODINIT_FUNC /*exported*/ void\n' ) path = module_name.replace('.', os.sep) if '.' in module_name: subrdir = rdir.join(module_name[:module_name.index('.')]) os.mkdir(str(subrdir)) else: subrdir = rdir c_file = str(rdir.join('%s.c' % path)) ffi = FFI() for include_ffi_object in includes: ffi.include(include_ffi_object._test_recompiler_source_ffi) ffi.cdef(cdef, packed=packed) ffi.set_source(module_name, source) ffi.emit_c_code(c_file) base_module_name = module_name.split('.')[-1] sources = [] if w_extra_source is not None: sources.append(space.str_w(w_extra_source)) kwargs = {} # GCC 14 promotes -Wincompatible-pointer-types from a warning to an error # by default, which breaks cffi's intentionally-mismatched field-check # probes (e.g. test_misdeclared_field_1). Keep it a warning so the module # compiles and cffi's runtime checks can run. extra = ['-Wno-error=incompatible-pointer-types'] if w_extra_compile_args is not None: extra = extra + space.unwrap(w_extra_compile_args) kwargs['extra_compile_args'] = extra ext = ffiplatform.get_extension(c_file, module_name, include_dirs=[str(rdir)], export_symbols=['_cffi_pypyinit_' + base_module_name], sources=sources, **kwargs) > ffiplatform.compile(str(rdir), ext) module\_cffi_backend\test\test_recompiler.py:86: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x000002791cfb0160> compiler_verbose = 0, debug = None def compile(tmpdir, ext, compiler_verbose=0, debug=None): """Compile a C extension module using distutils.""" saved_environ = os.environ.copy() try: > outputfilename = _build(tmpdir, ext, compiler_verbose, debug) d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x000002791cfb0160> compiler_verbose = 0, debug = 0 def _build(tmpdir, ext, compiler_verbose=0, debug=None): # XXX compact but horrible :-( from cffi._shimmed_dist_utils import Distribution, CompileError, LinkError, set_threshold, set_verbosity dist = Distribution({'ext_modules': [ext]}) dist.parse_config_files() options = dist.get_option_dict('build_ext') if debug is None: debug = sys.flags.debug options['debug'] = ('ffiplatform', debug) options['force'] = ('ffiplatform', True) options['build_lib'] = ('ffiplatform', tmpdir) options['build_temp'] = ('ffiplatform', tmpdir) # try: old_level = set_threshold(0) or 0 try: set_verbosity(compiler_verbose) dist.run_command('build_ext') cmd_obj = dist.get_command_obj('build_ext') [soname] = cmd_obj.get_outputs() finally: set_threshold(old_level) except (CompileError, LinkError) as e: > raise VerificationError('%s: %s' % (e.__class__.__name__, e)) E VerificationError: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2 d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:54: VerificationError ---------------------------- Captured stdout call ----------------------------- generating d:\systemtemp\pytest\usession-main-595\recompiler\_CFFI_test_unspecified_size_of_global_1.c ---------------------------- Captured stderr call ----------------------------- d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\cparser.py:165: UserWarning: Global variable 'glob' in cdef(): for consistency with C it should have a storage class specifier (usually 'extern') "(usually 'extern')" % (decl.name,)) cl : Command line error D8021 : invalid numeric argument '/Wno-error=incompatible-pointer-types' _____________ AppTestRecompiler.test_unspecified_size_of_global_2 _____________ self = <CallInfo when='call' exception: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2> func = <function <lambda> at 0x00000279278231f0>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ..\_pytest\runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ..\_pytest\runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_unspecified_size_of_global_2'>,...icall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_unspecified_size_of_global_2'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ..\_pytest\vendored_packages\pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00000279153616a8> hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_unspecified_size_of_global_2'>,...icall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_unspecified_size_of_global_2'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ..\_pytest\vendored_packages\pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_unspecified_size_of_global_2'>,...icall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_unspecified_size_of_global_2'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ..\_pytest\vendored_packages\pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_unspecified_size_of_global_2'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791aba58d0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...f_global_2'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792862c820> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792862c820> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...f_global_2'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_unspecified_size_of_global_2'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791aba5858> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...f_global_2'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792862c660> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792862c660> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...f_global_2'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_unspecified_size_of_global_2'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ..\_pytest\vendored_packages\pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_unspecified_size_of_global_2'> def pytest_runtest_call(item): try: > item.runtest() ..\_pytest\runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_unspecified_size_of_global_2'> def runtest(self): target = self.obj if self.config.option.runappdirect: return target() space = target.im_self.space filename = self._getdynfilename(target) func = app2interp_temp(target.im_func, filename=filename) w_instance = self.parent.w_instance > self.execute_appex(space, func, space, w_instance) tool\pytest\apptest.py:89: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_unspecified_size_of_global_2'>, space = StdObjSpace target = <function test_unspecified_size_of_global_2 at 0x0000027927823538> args = (StdObjSpace, <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>) def execute_appex(self, space, target, *args): self.space = space try: > target(*args) tool\pytest\apptest.py:30: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) w_func = <Function test_unspecified_size_of_global_2> args = <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8> def appcaller(space, *args_w): if not isinstance(space, ObjSpace): raise TypeError("first argument must be a space instance.") # the last argument can be an Arguments w_func = self.wget(space, name) if not args_w: return space.call_function(w_func) else: args = args_w[-1] assert args is not None if not isinstance(args, Arguments): > return space.call_function(w_func, *args_w) interpreter\gateway.py:1227: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <Function test_unspecified_size_of_global_2> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) nargs = 1, Function = <class 'pypy.interpreter.function.Function'> Method = <class 'pypy.interpreter.function.Method'> def call_function(self, w_func, *args_w): nargs = len(args_w) # used for pruning funccall versions if not self.config.objspace.disable_call_speedhacks and nargs < 5: # start of hack for performance from pypy.interpreter.function import Function, Method if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: if nargs < 4: func = w_func.w_function if isinstance(func, Function): return func.funccall(w_inst, *args_w) elif args_w and ( self.abstract_isinstance_w(args_w[0], w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): > return w_func.funccall(*args_w) interpreter\baseobjspace.py:1210: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <Function test_unspecified_size_of_global_2> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) gateway = <module 'pypy.interpreter.gateway' from 'd:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\interpreter\\gateway.pyc'> PyCode = <class 'pypy.interpreter.pycode.PyCode'> code = <code object test_unspecified_size_of_global_2, file '[d:\pypy_stuff\buildbot6...n-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:558]', line 1> def funccall(self, *args_w): # speed hack from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit nargs = len(args_w) fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, args_w[0]) elif nargs == 2: assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, args_w[0], args_w[1]) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) return code.fastcall_3(self.space, self, args_w[0], args_w[1], args_w[2]) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) return code.fastcall_4(self.space, self, args_w[0], args_w[1], args_w[2], args_w[3]) elif (nargs | PyCode.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) if nargs < 5: new_frame = self.space.createframe(code, self.w_func_globals, self) for i in funccallunrolling: if i < nargs: new_frame.locals_cells_stack_w[i] = args_w[i] > return new_frame.run() interpreter\function.py:118: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_unspecif...uild\pypy\module\_cffi_backend\test\test_recompiler.py:558]', line 1> at line 5 def run(self): """Start this frame's execution.""" if self.getcode().co_flags & pycode.CO_GENERATOR: from pypy.interpreter.generator import GeneratorIterator return GeneratorIterator(self) else: > return self.execute_frame() interpreter\pyframe.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_unspecif...uild\pypy\module\_cffi_backend\test\test_recompiler.py:558]', line 1> at line 5 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, executioncontext) except OperationError: raise except Exception as e: # general fall-back > raise self._convert_unexpected_exception(e) interpreter\pyframe.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_unspecif...uild\pypy\module\_cffi_backend\test\test_recompiler.py:558]', line 1> at line 5 e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def _convert_unexpected_exception(self, e): from pypy.interpreter import error > operr = error.get_converted_unexpected_exception(self.space, e) interpreter\pyframe.py:943: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_unspecif...uild\pypy\module\_cffi_backend\test\test_recompiler.py:558]', line 1> at line 5 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, > executioncontext) interpreter\pyframe.py:286: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_unspecif...uild\pypy\module\_cffi_backend\test\test_recompiler.py:558]', line 1> at line 5 pycode = <code object test_unspecified_size_of_global_2, file '[d:\pypy_stuff\buildbot6...n-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:558]', line 1> next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def dispatch(self, pycode, next_instr, ec): # For the sequel, force 'next_instr' to be unsigned for performance next_instr = r_uint(next_instr) co_code = pycode.co_code try: while True: > next_instr = self.handle_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:64: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_unspecif...uild\pypy\module\_cffi_backend\test\test_recompiler.py:558]', line 1> at line 5 co_code = "|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00\xcc'\x00|\x01\x00\xc9\x01\x00|\x02\x00j\x02\x00\xca\x01\x00|\x01\x00\xc9\x01\x00d\x04\x00\xca\x01\x00k\x02\x00sE\x00t\x03\x00\x82\x01\x00d\x00\x00S" next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def handle_bytecode(self, co_code, next_instr, ec): try: > next_instr = self.dispatch_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:71: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_unspecif...uild\pypy\module\_cffi_backend\test\test_recompiler.py:558]', line 1> at line 5 co_code = "|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00\xcc'\x00|\x01\x00\xc9\x01\x00|\x02\x00j\x02\x00\xca\x01\x00|\x01\x00\xc9\x01\x00d\x04\x00\xca\x01\x00k\x02\x00sE\x00t\x03\x00\x82\x01\x00d\x00\x00S" next_instr = 18L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> @jit.unroll_safe def dispatch_bytecode(self, co_code, next_instr, ec): while True: self.last_instr = intmask(next_instr) if jit.we_are_jitted(): if self.debugdata: ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) else: # Only reload next_instr from last_instr when something that # can modify it actually ran (trace function or action # dispatcher). In the common case (no trace, positive ticker) # next_instr is unchanged and the round-trip is skipped. _d = self.debugdata if ec.space.reverse_debugging or ( _d is not None and _d.w_f_trace is not None) or ( not we_are_translated() and 'bytecode_only_trace' in ec.__dict__): ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) actionflag = ec.space.actionflag if actionflag.decrement_ticker(TICK_COUNTER_STEP) < 0: actionflag.action_dispatcher(ec, self) next_instr = r_uint(self.last_instr) opcode = ord(co_code[next_instr]) next_instr += 1 if opcode >= HAVE_ARGUMENT: lo = ord(co_code[next_instr]) hi = ord(co_code[next_instr+1]) next_instr += 2 oparg = (hi * 256) | lo else: oparg = 0 # note: the structure of the code here is such that it makes # (after translation) a big "if/elif" chain, which is then # turned into a switch(). while opcode == opcodedesc.EXTENDED_ARG.index: opcode = ord(co_code[next_instr]) if opcode < HAVE_ARGUMENT: raise BytecodeCorruption lo = ord(co_code[next_instr+1]) hi = ord(co_code[next_instr+2]) next_instr += 3 oparg = (oparg * 65536) | (hi * 256) | lo if opcode == opcodedesc.RETURN_VALUE.index: if not self.blockstack_non_empty(): self.frame_finished_execution = True # for generators raise Return w_returnvalue = self.popvalue() block = self.unrollstack(SReturnValue.kind) if block is None: self.pushvalue(w_returnvalue) raise Return else: unroller = SReturnValue(w_returnvalue) next_instr = block.handle(self, unroller) return next_instr # now inside a 'finally' block elif opcode == opcodedesc.END_FINALLY.index: unroller = self.end_finally() if isinstance(unroller, SuspendedUnroller): # go on unrolling the stack block = self.unrollstack(unroller.kind) if block is None: w_result = unroller.nomoreblocks() self.pushvalue(w_result) raise Return else: next_instr = block.handle(self, unroller) return next_instr elif opcode == opcodedesc.JUMP_ABSOLUTE.index: return self.jump_absolute(oparg, ec) elif opcode == opcodedesc.BREAK_LOOP.index: next_instr = self.BREAK_LOOP(oparg, next_instr) elif opcode == opcodedesc.CONTINUE_LOOP.index: return self.CONTINUE_LOOP(oparg, next_instr) elif opcode == opcodedesc.FOR_ITER.index: next_instr = self.FOR_ITER(oparg, next_instr) elif opcode == opcodedesc.JUMP_FORWARD.index: next_instr = self.JUMP_FORWARD(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_FALSE_OR_POP.index: next_instr = self.JUMP_IF_FALSE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_NOT_DEBUG.index: next_instr = self.JUMP_IF_NOT_DEBUG(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_TRUE_OR_POP.index: next_instr = self.JUMP_IF_TRUE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_FALSE.index: next_instr = self.POP_JUMP_IF_FALSE(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_TRUE.index: next_instr = self.POP_JUMP_IF_TRUE(oparg, next_instr) elif opcode == opcodedesc.BINARY_ADD.index: self.BINARY_ADD(oparg, next_instr) elif opcode == opcodedesc.BINARY_AND.index: self.BINARY_AND(oparg, next_instr) elif opcode == opcodedesc.BINARY_DIVIDE.index: self.BINARY_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_FLOOR_DIVIDE.index: self.BINARY_FLOOR_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_LSHIFT.index: self.BINARY_LSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_MODULO.index: self.BINARY_MODULO(oparg, next_instr) elif opcode == opcodedesc.BINARY_MULTIPLY.index: self.BINARY_MULTIPLY(oparg, next_instr) elif opcode == opcodedesc.BINARY_OR.index: self.BINARY_OR(oparg, next_instr) elif opcode == opcodedesc.BINARY_POWER.index: self.BINARY_POWER(oparg, next_instr) elif opcode == opcodedesc.BINARY_RSHIFT.index: self.BINARY_RSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBSCR.index: self.BINARY_SUBSCR(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBTRACT.index: self.BINARY_SUBTRACT(oparg, next_instr) elif opcode == opcodedesc.BINARY_TRUE_DIVIDE.index: self.BINARY_TRUE_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_XOR.index: self.BINARY_XOR(oparg, next_instr) elif opcode == opcodedesc.BUILD_CLASS.index: self.BUILD_CLASS(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST.index: self.BUILD_LIST(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST_FROM_ARG.index: self.BUILD_LIST_FROM_ARG(oparg, next_instr) elif opcode == opcodedesc.BUILD_MAP.index: self.BUILD_MAP(oparg, next_instr) elif opcode == opcodedesc.BUILD_SET.index: self.BUILD_SET(oparg, next_instr) elif opcode == opcodedesc.BUILD_SLICE.index: self.BUILD_SLICE(oparg, next_instr) elif opcode == opcodedesc.BUILD_TUPLE.index: self.BUILD_TUPLE(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION.index: self.CALL_FUNCTION(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_KW.index: self.CALL_FUNCTION_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR.index: self.CALL_FUNCTION_VAR(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR_KW.index: self.CALL_FUNCTION_VAR_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_METHOD.index: > self.CALL_METHOD(oparg, next_instr) interpreter\pyopcode.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ f = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_unspecif...uild\pypy\module\_cffi_backend\test\test_recompiler.py:558]', line 1> at line 5 oparg = 3, ignored = (18L,), n_args = 3, n_kwargs = 0, w_self = None @jit.unroll_safe def CALL_METHOD(f, oparg, *ignored): # opargs contains the arg, and kwarg count, excluding the implicit 'self' n_args = oparg & 0xff n_kwargs = (oparg >> 8) & 0xff w_self = f.peekvalue_maybe_none(n_args + (2 * n_kwargs)) n = n_args + (w_self is not None) if not n_kwargs: w_callable = f.peekvalue(n_args + (2 * n_kwargs) + 1) w_result = f.space.call_valuestack( > w_callable, n, f, methodcall=w_self is not None, dropvalues=n_args + 2) objspace\std\callmethod.py:96: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_unspecif...uild\pypy\module\_cffi_backend\test\test_recompiler.py:558]', line 1> at line 5 dropvalues = 5, methodcall = False def call_valuestack(self, w_func, nargs, frame, dropvalues, methodcall=False): # methodcall is only used for better error messages in argument.py from pypy.interpreter.function import Function, Method, is_builtin_code if frame.get_is_being_profiled() and is_builtin_code(w_func): # XXX: this code is copied&pasted :-( from the slow path below # call_valuestack(). args = frame.make_arguments(nargs) frame.dropvalues(dropvalues) return self.call_args_and_c_profile(frame, w_func, args) if not self.config.objspace.disable_call_speedhacks: # start of hack for performance if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: w_func = w_func.w_function # reuse callable stack place for w_inst frame.settopvalue(w_inst, nargs) nargs += 1 methodcall = True elif nargs > 0 and ( self.abstract_isinstance_w(frame.peekvalue(nargs-1), # :-( w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): return w_func.funccall_valuestack( > nargs, frame, methodcall=methodcall, dropvalues=dropvalues) interpreter\baseobjspace.py:1243: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_unspecif...uild\pypy\module\_cffi_backend\test\test_recompiler.py:558]', line 1> at line 5 dropvalues = 5, methodcall = False def funccall_valuestack(self, nargs, frame, dropvalues, methodcall=False): # speed hack # methodcall is only for better error messages from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit # if (jit.we_are_jitted() and code is self.space._code_of_sys_exc_info and nargs == 0): frame.dropvalues(dropvalues) from pypy.module.sys.vm import exc_info_direct return exc_info_direct(self.space, frame) # fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: f_0 = frame.peekvalue(0) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, f_0) elif nargs == 2: f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, f_1, f_0) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) frame.dropvalues(dropvalues) return code.fastcall_3(self.space, self, f_2, f_1, f_0) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) f_3 = frame.peekvalue(3) frame.dropvalues(dropvalues) return code.fastcall_4(self.space, self, f_3, f_2, f_1, f_0) elif (nargs | Code.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) return self._flat_pycall(code, nargs, frame, dropvalues) elif fast_natural_arity & Code.FLATPYCALL: natural_arity = fast_natural_arity & 0xff if natural_arity > nargs >= natural_arity - len(self.defs_w): assert isinstance(code, PyCode) return self._flat_pycall_defaults(code, nargs, frame, natural_arity - nargs, dropvalues) elif fast_natural_arity == Code.PASSTHROUGHARGS1 and nargs >= 1: assert isinstance(code, gateway.BuiltinCodePassThroughArguments1) w_obj = frame.peekvalue(nargs-1) args = frame.make_arguments(nargs-1) frame.dropvalues(dropvalues) return code.funcrun_obj(self, w_obj, args) args = frame.make_arguments(nargs, methodcall=methodcall) frame.dropvalues(dropvalues) > return self.call_args(args) interpreter\function.py:190: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('int glob[][5];'), W_BytesObject('test_unspecified_size_of_global_2'), W_BytesObject('int glob[10][5];')]) def call_args(self, args): # delegate activation to code > w_res = self.getcode().funcrun(self, args) interpreter\function.py:68: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('int glob[][5];'), W_BytesObject('test_unspecified_size_of_global_2'), W_BytesObject('int glob[10][5];')]) def funcrun(self, func, args): > return BuiltinCode.funcrun_obj(self, func, None, args) interpreter\gateway.py:781: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('int glob[][5];'), W_BytesObject('test_unspecified_size_of_global_2'), W_BytesObject('int glob[10][5];')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: w_result = activation._run(space, scope_w) except DescrMismatch: if w_obj is not None: args = args.prepend(w_obj) return self._type_unwrap_mismatch(space, args) except Exception as e: > self.handle_exception(space, e) interpreter\gateway.py:795: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> space = StdObjSpace e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def handle_exception(self, space, e): try: if not we_are_translated(): raise raise e except OperationError: raise except Exception as e: # general fall-back from pypy.interpreter import error > raise error.get_converted_unexpected_exception(space, e) interpreter\gateway.py:819: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('int glob[][5];'), W_BytesObject('test_unspecified_size_of_global_2'), W_BytesObject('int glob[10][5];')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: > w_result = activation._run(space, scope_w) interpreter\gateway.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinActivation_UwS_ObjSpace_text_text_text_W_Root_W_Root_W_Root_int_W_Root object at 0x000002791c13af38> space = StdObjSpace scope_w = [W_BytesObject('int glob[][5];'), W_BytesObject('test_unspecified_size_of_global_2'), W_BytesObject('int glob[10][5];'), None, None, None, ...] def _run(self, space, scope_w): > return self.behavior(space, space.text_w(scope_w[0]), space.text_w(scope_w[1]), space.text_w(scope_w[2]), scope_w[3], scope_w[4], scope_w[5], space.gateway_int_w(scope_w[6]), scope_w[7]) <3152-codegen d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\rpython\tool\sourcetools.py:200>:3: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace, cdef = 'int glob[][5];' module_name = '_CFFI_test_unspecified_size_of_global_2' source = 'int glob[10][5];', w_includes = None, w_extra_source = None w_min_version = None, packed = 0, w_extra_compile_args = None @unwrap_spec(cdef='text', module_name='text', source='text', packed=int) def prepare(space, cdef, module_name, source, w_includes=None, w_extra_source=None, w_min_version=None, packed=False, w_extra_compile_args=None): try: import cffi from cffi import FFI # <== the system one, which from cffi import recompiler # needs to be at least cffi 1.0.4 from cffi import ffiplatform except ImportError: pytest.skip("system cffi module not found or older than 1.0.0") if w_min_version is None: min_version = (1, 4, 0) else: min_version = tuple(space.unwrap(w_min_version)) if cffi.__version_info__ < min_version: pytest.skip("system cffi module needs to be at least %s, got %s" % ( min_version, cffi.__version_info__)) space.appexec([], """(): import _cffi_backend # force it to be initialized """) includes = [] if w_includes: includes += space.unpackiterable(w_includes) assert module_name.startswith('test_') module_name = '_CFFI_' + module_name rdir = udir.ensure('recompiler', dir=1) rdir.join('Python.h').write( '#include <stdio.h>\n' '#define PYPY_VERSION XX\n' '#define PyMODINIT_FUNC /*exported*/ void\n' ) path = module_name.replace('.', os.sep) if '.' in module_name: subrdir = rdir.join(module_name[:module_name.index('.')]) os.mkdir(str(subrdir)) else: subrdir = rdir c_file = str(rdir.join('%s.c' % path)) ffi = FFI() for include_ffi_object in includes: ffi.include(include_ffi_object._test_recompiler_source_ffi) ffi.cdef(cdef, packed=packed) ffi.set_source(module_name, source) ffi.emit_c_code(c_file) base_module_name = module_name.split('.')[-1] sources = [] if w_extra_source is not None: sources.append(space.str_w(w_extra_source)) kwargs = {} # GCC 14 promotes -Wincompatible-pointer-types from a warning to an error # by default, which breaks cffi's intentionally-mismatched field-check # probes (e.g. test_misdeclared_field_1). Keep it a warning so the module # compiles and cffi's runtime checks can run. extra = ['-Wno-error=incompatible-pointer-types'] if w_extra_compile_args is not None: extra = extra + space.unwrap(w_extra_compile_args) kwargs['extra_compile_args'] = extra ext = ffiplatform.get_extension(c_file, module_name, include_dirs=[str(rdir)], export_symbols=['_cffi_pypyinit_' + base_module_name], sources=sources, **kwargs) > ffiplatform.compile(str(rdir), ext) module\_cffi_backend\test\test_recompiler.py:86: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x000002792862cf20> compiler_verbose = 0, debug = None def compile(tmpdir, ext, compiler_verbose=0, debug=None): """Compile a C extension module using distutils.""" saved_environ = os.environ.copy() try: > outputfilename = _build(tmpdir, ext, compiler_verbose, debug) d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x000002792862cf20> compiler_verbose = 0, debug = 0 def _build(tmpdir, ext, compiler_verbose=0, debug=None): # XXX compact but horrible :-( from cffi._shimmed_dist_utils import Distribution, CompileError, LinkError, set_threshold, set_verbosity dist = Distribution({'ext_modules': [ext]}) dist.parse_config_files() options = dist.get_option_dict('build_ext') if debug is None: debug = sys.flags.debug options['debug'] = ('ffiplatform', debug) options['force'] = ('ffiplatform', True) options['build_lib'] = ('ffiplatform', tmpdir) options['build_temp'] = ('ffiplatform', tmpdir) # try: old_level = set_threshold(0) or 0 try: set_verbosity(compiler_verbose) dist.run_command('build_ext') cmd_obj = dist.get_command_obj('build_ext') [soname] = cmd_obj.get_outputs() finally: set_threshold(old_level) except (CompileError, LinkError) as e: > raise VerificationError('%s: %s' % (e.__class__.__name__, e)) E VerificationError: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2 d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:54: VerificationError ---------------------------- Captured stdout call ----------------------------- generating d:\systemtemp\pytest\usession-main-595\recompiler\_CFFI_test_unspecified_size_of_global_2.c ---------------------------- Captured stderr call ----------------------------- cl : Command line error D8021 : invalid numeric argument '/Wno-error=incompatible-pointer-types' _____________ AppTestRecompiler.test_unspecified_size_of_global_3 _____________ self = <CallInfo when='call' exception: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2> func = <function <lambda> at 0x0000027920193cb8>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ..\_pytest\runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ..\_pytest\runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_unspecified_size_of_global_3'>,...icall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_unspecified_size_of_global_3'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ..\_pytest\vendored_packages\pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00000279153616a8> hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_unspecified_size_of_global_3'>,...icall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_unspecified_size_of_global_3'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ..\_pytest\vendored_packages\pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_unspecified_size_of_global_3'>,...icall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_unspecified_size_of_global_3'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ..\_pytest\vendored_packages\pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_unspecified_size_of_global_3'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791a971fd8> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...f_global_3'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027929b646a0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027929b646a0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...f_global_3'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_unspecified_size_of_global_3'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791a971f60> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...f_global_3'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027929b64660> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027929b64660> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...f_global_3'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_unspecified_size_of_global_3'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ..\_pytest\vendored_packages\pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_unspecified_size_of_global_3'> def pytest_runtest_call(item): try: > item.runtest() ..\_pytest\runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_unspecified_size_of_global_3'> def runtest(self): target = self.obj if self.config.option.runappdirect: return target() space = target.im_self.space filename = self._getdynfilename(target) func = app2interp_temp(target.im_func, filename=filename) w_instance = self.parent.w_instance > self.execute_appex(space, func, space, w_instance) tool\pytest\apptest.py:89: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_unspecified_size_of_global_3'>, space = StdObjSpace target = <function test_unspecified_size_of_global_3 at 0x00000279208838f8> args = (StdObjSpace, <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>) def execute_appex(self, space, target, *args): self.space = space try: > target(*args) tool\pytest\apptest.py:30: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) w_func = <Function test_unspecified_size_of_global_3> args = <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8> def appcaller(space, *args_w): if not isinstance(space, ObjSpace): raise TypeError("first argument must be a space instance.") # the last argument can be an Arguments w_func = self.wget(space, name) if not args_w: return space.call_function(w_func) else: args = args_w[-1] assert args is not None if not isinstance(args, Arguments): > return space.call_function(w_func, *args_w) interpreter\gateway.py:1227: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <Function test_unspecified_size_of_global_3> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) nargs = 1, Function = <class 'pypy.interpreter.function.Function'> Method = <class 'pypy.interpreter.function.Method'> def call_function(self, w_func, *args_w): nargs = len(args_w) # used for pruning funccall versions if not self.config.objspace.disable_call_speedhacks and nargs < 5: # start of hack for performance from pypy.interpreter.function import Function, Method if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: if nargs < 4: func = w_func.w_function if isinstance(func, Function): return func.funccall(w_inst, *args_w) elif args_w and ( self.abstract_isinstance_w(args_w[0], w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): > return w_func.funccall(*args_w) interpreter\baseobjspace.py:1210: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <Function test_unspecified_size_of_global_3> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) gateway = <module 'pypy.interpreter.gateway' from 'd:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\interpreter\\gateway.pyc'> PyCode = <class 'pypy.interpreter.pycode.PyCode'> code = <code object test_unspecified_size_of_global_3, file '[d:\pypy_stuff\buildbot6...n-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:565]', line 1> def funccall(self, *args_w): # speed hack from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit nargs = len(args_w) fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, args_w[0]) elif nargs == 2: assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, args_w[0], args_w[1]) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) return code.fastcall_3(self.space, self, args_w[0], args_w[1], args_w[2]) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) return code.fastcall_4(self.space, self, args_w[0], args_w[1], args_w[2], args_w[3]) elif (nargs | PyCode.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) if nargs < 5: new_frame = self.space.createframe(code, self.w_func_globals, self) for i in funccallunrolling: if i < nargs: new_frame.locals_cells_stack_w[i] = args_w[i] > return new_frame.run() interpreter\function.py:118: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_unspecif...uild\pypy\module\_cffi_backend\test\test_recompiler.py:565]', line 1> at line 5 def run(self): """Start this frame's execution.""" if self.getcode().co_flags & pycode.CO_GENERATOR: from pypy.interpreter.generator import GeneratorIterator return GeneratorIterator(self) else: > return self.execute_frame() interpreter\pyframe.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_unspecif...uild\pypy\module\_cffi_backend\test\test_recompiler.py:565]', line 1> at line 5 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, executioncontext) except OperationError: raise except Exception as e: # general fall-back > raise self._convert_unexpected_exception(e) interpreter\pyframe.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_unspecif...uild\pypy\module\_cffi_backend\test\test_recompiler.py:565]', line 1> at line 5 e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def _convert_unexpected_exception(self, e): from pypy.interpreter import error > operr = error.get_converted_unexpected_exception(self.space, e) interpreter\pyframe.py:943: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_unspecif...uild\pypy\module\_cffi_backend\test\test_recompiler.py:565]', line 1> at line 5 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, > executioncontext) interpreter\pyframe.py:286: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_unspecif...uild\pypy\module\_cffi_backend\test\test_recompiler.py:565]', line 1> at line 5 pycode = <code object test_unspecified_size_of_global_3, file '[d:\pypy_stuff\buildbot6...n-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:565]', line 1> next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def dispatch(self, pycode, next_instr, ec): # For the sequel, force 'next_instr' to be unsigned for performance next_instr = r_uint(next_instr) co_code = pycode.co_code try: while True: > next_instr = self.handle_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:64: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_unspecif...uild\pypy\module\_cffi_backend\test\test_recompiler.py:565]', line 1> at line 5 co_code = "|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00\xcc'\x00|\x01\x00\xc9\x01\x00|\x02\x00j\x02\x00\xca\x01\x00|\x01\x00\xc9\x01\x00d\x04\x00\xca\x01\x00k\x02\x00sE\x00t\x03\x00\x82\x01\x00d\x00\x00S" next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def handle_bytecode(self, co_code, next_instr, ec): try: > next_instr = self.dispatch_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:71: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_unspecif...uild\pypy\module\_cffi_backend\test\test_recompiler.py:565]', line 1> at line 5 co_code = "|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00\xcc'\x00|\x01\x00\xc9\x01\x00|\x02\x00j\x02\x00\xca\x01\x00|\x01\x00\xc9\x01\x00d\x04\x00\xca\x01\x00k\x02\x00sE\x00t\x03\x00\x82\x01\x00d\x00\x00S" next_instr = 18L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> @jit.unroll_safe def dispatch_bytecode(self, co_code, next_instr, ec): while True: self.last_instr = intmask(next_instr) if jit.we_are_jitted(): if self.debugdata: ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) else: # Only reload next_instr from last_instr when something that # can modify it actually ran (trace function or action # dispatcher). In the common case (no trace, positive ticker) # next_instr is unchanged and the round-trip is skipped. _d = self.debugdata if ec.space.reverse_debugging or ( _d is not None and _d.w_f_trace is not None) or ( not we_are_translated() and 'bytecode_only_trace' in ec.__dict__): ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) actionflag = ec.space.actionflag if actionflag.decrement_ticker(TICK_COUNTER_STEP) < 0: actionflag.action_dispatcher(ec, self) next_instr = r_uint(self.last_instr) opcode = ord(co_code[next_instr]) next_instr += 1 if opcode >= HAVE_ARGUMENT: lo = ord(co_code[next_instr]) hi = ord(co_code[next_instr+1]) next_instr += 2 oparg = (hi * 256) | lo else: oparg = 0 # note: the structure of the code here is such that it makes # (after translation) a big "if/elif" chain, which is then # turned into a switch(). while opcode == opcodedesc.EXTENDED_ARG.index: opcode = ord(co_code[next_instr]) if opcode < HAVE_ARGUMENT: raise BytecodeCorruption lo = ord(co_code[next_instr+1]) hi = ord(co_code[next_instr+2]) next_instr += 3 oparg = (oparg * 65536) | (hi * 256) | lo if opcode == opcodedesc.RETURN_VALUE.index: if not self.blockstack_non_empty(): self.frame_finished_execution = True # for generators raise Return w_returnvalue = self.popvalue() block = self.unrollstack(SReturnValue.kind) if block is None: self.pushvalue(w_returnvalue) raise Return else: unroller = SReturnValue(w_returnvalue) next_instr = block.handle(self, unroller) return next_instr # now inside a 'finally' block elif opcode == opcodedesc.END_FINALLY.index: unroller = self.end_finally() if isinstance(unroller, SuspendedUnroller): # go on unrolling the stack block = self.unrollstack(unroller.kind) if block is None: w_result = unroller.nomoreblocks() self.pushvalue(w_result) raise Return else: next_instr = block.handle(self, unroller) return next_instr elif opcode == opcodedesc.JUMP_ABSOLUTE.index: return self.jump_absolute(oparg, ec) elif opcode == opcodedesc.BREAK_LOOP.index: next_instr = self.BREAK_LOOP(oparg, next_instr) elif opcode == opcodedesc.CONTINUE_LOOP.index: return self.CONTINUE_LOOP(oparg, next_instr) elif opcode == opcodedesc.FOR_ITER.index: next_instr = self.FOR_ITER(oparg, next_instr) elif opcode == opcodedesc.JUMP_FORWARD.index: next_instr = self.JUMP_FORWARD(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_FALSE_OR_POP.index: next_instr = self.JUMP_IF_FALSE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_NOT_DEBUG.index: next_instr = self.JUMP_IF_NOT_DEBUG(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_TRUE_OR_POP.index: next_instr = self.JUMP_IF_TRUE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_FALSE.index: next_instr = self.POP_JUMP_IF_FALSE(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_TRUE.index: next_instr = self.POP_JUMP_IF_TRUE(oparg, next_instr) elif opcode == opcodedesc.BINARY_ADD.index: self.BINARY_ADD(oparg, next_instr) elif opcode == opcodedesc.BINARY_AND.index: self.BINARY_AND(oparg, next_instr) elif opcode == opcodedesc.BINARY_DIVIDE.index: self.BINARY_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_FLOOR_DIVIDE.index: self.BINARY_FLOOR_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_LSHIFT.index: self.BINARY_LSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_MODULO.index: self.BINARY_MODULO(oparg, next_instr) elif opcode == opcodedesc.BINARY_MULTIPLY.index: self.BINARY_MULTIPLY(oparg, next_instr) elif opcode == opcodedesc.BINARY_OR.index: self.BINARY_OR(oparg, next_instr) elif opcode == opcodedesc.BINARY_POWER.index: self.BINARY_POWER(oparg, next_instr) elif opcode == opcodedesc.BINARY_RSHIFT.index: self.BINARY_RSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBSCR.index: self.BINARY_SUBSCR(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBTRACT.index: self.BINARY_SUBTRACT(oparg, next_instr) elif opcode == opcodedesc.BINARY_TRUE_DIVIDE.index: self.BINARY_TRUE_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_XOR.index: self.BINARY_XOR(oparg, next_instr) elif opcode == opcodedesc.BUILD_CLASS.index: self.BUILD_CLASS(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST.index: self.BUILD_LIST(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST_FROM_ARG.index: self.BUILD_LIST_FROM_ARG(oparg, next_instr) elif opcode == opcodedesc.BUILD_MAP.index: self.BUILD_MAP(oparg, next_instr) elif opcode == opcodedesc.BUILD_SET.index: self.BUILD_SET(oparg, next_instr) elif opcode == opcodedesc.BUILD_SLICE.index: self.BUILD_SLICE(oparg, next_instr) elif opcode == opcodedesc.BUILD_TUPLE.index: self.BUILD_TUPLE(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION.index: self.CALL_FUNCTION(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_KW.index: self.CALL_FUNCTION_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR.index: self.CALL_FUNCTION_VAR(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR_KW.index: self.CALL_FUNCTION_VAR_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_METHOD.index: > self.CALL_METHOD(oparg, next_instr) interpreter\pyopcode.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ f = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_unspecif...uild\pypy\module\_cffi_backend\test\test_recompiler.py:565]', line 1> at line 5 oparg = 3, ignored = (18L,), n_args = 3, n_kwargs = 0, w_self = None @jit.unroll_safe def CALL_METHOD(f, oparg, *ignored): # opargs contains the arg, and kwarg count, excluding the implicit 'self' n_args = oparg & 0xff n_kwargs = (oparg >> 8) & 0xff w_self = f.peekvalue_maybe_none(n_args + (2 * n_kwargs)) n = n_args + (w_self is not None) if not n_kwargs: w_callable = f.peekvalue(n_args + (2 * n_kwargs) + 1) w_result = f.space.call_valuestack( > w_callable, n, f, methodcall=w_self is not None, dropvalues=n_args + 2) objspace\std\callmethod.py:96: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_unspecif...uild\pypy\module\_cffi_backend\test\test_recompiler.py:565]', line 1> at line 5 dropvalues = 5, methodcall = False def call_valuestack(self, w_func, nargs, frame, dropvalues, methodcall=False): # methodcall is only used for better error messages in argument.py from pypy.interpreter.function import Function, Method, is_builtin_code if frame.get_is_being_profiled() and is_builtin_code(w_func): # XXX: this code is copied&pasted :-( from the slow path below # call_valuestack(). args = frame.make_arguments(nargs) frame.dropvalues(dropvalues) return self.call_args_and_c_profile(frame, w_func, args) if not self.config.objspace.disable_call_speedhacks: # start of hack for performance if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: w_func = w_func.w_function # reuse callable stack place for w_inst frame.settopvalue(w_inst, nargs) nargs += 1 methodcall = True elif nargs > 0 and ( self.abstract_isinstance_w(frame.peekvalue(nargs-1), # :-( w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): return w_func.funccall_valuestack( > nargs, frame, methodcall=methodcall, dropvalues=dropvalues) interpreter\baseobjspace.py:1243: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_unspecif...uild\pypy\module\_cffi_backend\test\test_recompiler.py:565]', line 1> at line 5 dropvalues = 5, methodcall = False def funccall_valuestack(self, nargs, frame, dropvalues, methodcall=False): # speed hack # methodcall is only for better error messages from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit # if (jit.we_are_jitted() and code is self.space._code_of_sys_exc_info and nargs == 0): frame.dropvalues(dropvalues) from pypy.module.sys.vm import exc_info_direct return exc_info_direct(self.space, frame) # fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: f_0 = frame.peekvalue(0) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, f_0) elif nargs == 2: f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, f_1, f_0) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) frame.dropvalues(dropvalues) return code.fastcall_3(self.space, self, f_2, f_1, f_0) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) f_3 = frame.peekvalue(3) frame.dropvalues(dropvalues) return code.fastcall_4(self.space, self, f_3, f_2, f_1, f_0) elif (nargs | Code.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) return self._flat_pycall(code, nargs, frame, dropvalues) elif fast_natural_arity & Code.FLATPYCALL: natural_arity = fast_natural_arity & 0xff if natural_arity > nargs >= natural_arity - len(self.defs_w): assert isinstance(code, PyCode) return self._flat_pycall_defaults(code, nargs, frame, natural_arity - nargs, dropvalues) elif fast_natural_arity == Code.PASSTHROUGHARGS1 and nargs >= 1: assert isinstance(code, gateway.BuiltinCodePassThroughArguments1) w_obj = frame.peekvalue(nargs-1) args = frame.make_arguments(nargs-1) frame.dropvalues(dropvalues) return code.funcrun_obj(self, w_obj, args) args = frame.make_arguments(nargs, methodcall=methodcall) frame.dropvalues(dropvalues) > return self.call_args(args) interpreter\function.py:190: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('int glob[][...];'), W_BytesObject('test_unspecified_size_of_global_3'), W_BytesObject('int glob[10][5];')]) def call_args(self, args): # delegate activation to code > w_res = self.getcode().funcrun(self, args) interpreter\function.py:68: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('int glob[][...];'), W_BytesObject('test_unspecified_size_of_global_3'), W_BytesObject('int glob[10][5];')]) def funcrun(self, func, args): > return BuiltinCode.funcrun_obj(self, func, None, args) interpreter\gateway.py:781: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('int glob[][...];'), W_BytesObject('test_unspecified_size_of_global_3'), W_BytesObject('int glob[10][5];')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: w_result = activation._run(space, scope_w) except DescrMismatch: if w_obj is not None: args = args.prepend(w_obj) return self._type_unwrap_mismatch(space, args) except Exception as e: > self.handle_exception(space, e) interpreter\gateway.py:795: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> space = StdObjSpace e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def handle_exception(self, space, e): try: if not we_are_translated(): raise raise e except OperationError: raise except Exception as e: # general fall-back from pypy.interpreter import error > raise error.get_converted_unexpected_exception(space, e) interpreter\gateway.py:819: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('int glob[][...];'), W_BytesObject('test_unspecified_size_of_global_3'), W_BytesObject('int glob[10][5];')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: > w_result = activation._run(space, scope_w) interpreter\gateway.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinActivation_UwS_ObjSpace_text_text_text_W_Root_W_Root_W_Root_int_W_Root object at 0x000002791c13af38> space = StdObjSpace scope_w = [W_BytesObject('int glob[][...];'), W_BytesObject('test_unspecified_size_of_global_3'), W_BytesObject('int glob[10][5];'), None, None, None, ...] def _run(self, space, scope_w): > return self.behavior(space, space.text_w(scope_w[0]), space.text_w(scope_w[1]), space.text_w(scope_w[2]), scope_w[3], scope_w[4], scope_w[5], space.gateway_int_w(scope_w[6]), scope_w[7]) <3152-codegen d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\rpython\tool\sourcetools.py:200>:3: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace, cdef = 'int glob[][...];' module_name = '_CFFI_test_unspecified_size_of_global_3' source = 'int glob[10][5];', w_includes = None, w_extra_source = None w_min_version = None, packed = 0, w_extra_compile_args = None @unwrap_spec(cdef='text', module_name='text', source='text', packed=int) def prepare(space, cdef, module_name, source, w_includes=None, w_extra_source=None, w_min_version=None, packed=False, w_extra_compile_args=None): try: import cffi from cffi import FFI # <== the system one, which from cffi import recompiler # needs to be at least cffi 1.0.4 from cffi import ffiplatform except ImportError: pytest.skip("system cffi module not found or older than 1.0.0") if w_min_version is None: min_version = (1, 4, 0) else: min_version = tuple(space.unwrap(w_min_version)) if cffi.__version_info__ < min_version: pytest.skip("system cffi module needs to be at least %s, got %s" % ( min_version, cffi.__version_info__)) space.appexec([], """(): import _cffi_backend # force it to be initialized """) includes = [] if w_includes: includes += space.unpackiterable(w_includes) assert module_name.startswith('test_') module_name = '_CFFI_' + module_name rdir = udir.ensure('recompiler', dir=1) rdir.join('Python.h').write( '#include <stdio.h>\n' '#define PYPY_VERSION XX\n' '#define PyMODINIT_FUNC /*exported*/ void\n' ) path = module_name.replace('.', os.sep) if '.' in module_name: subrdir = rdir.join(module_name[:module_name.index('.')]) os.mkdir(str(subrdir)) else: subrdir = rdir c_file = str(rdir.join('%s.c' % path)) ffi = FFI() for include_ffi_object in includes: ffi.include(include_ffi_object._test_recompiler_source_ffi) ffi.cdef(cdef, packed=packed) ffi.set_source(module_name, source) ffi.emit_c_code(c_file) base_module_name = module_name.split('.')[-1] sources = [] if w_extra_source is not None: sources.append(space.str_w(w_extra_source)) kwargs = {} # GCC 14 promotes -Wincompatible-pointer-types from a warning to an error # by default, which breaks cffi's intentionally-mismatched field-check # probes (e.g. test_misdeclared_field_1). Keep it a warning so the module # compiles and cffi's runtime checks can run. extra = ['-Wno-error=incompatible-pointer-types'] if w_extra_compile_args is not None: extra = extra + space.unwrap(w_extra_compile_args) kwargs['extra_compile_args'] = extra ext = ffiplatform.get_extension(c_file, module_name, include_dirs=[str(rdir)], export_symbols=['_cffi_pypyinit_' + base_module_name], sources=sources, **kwargs) > ffiplatform.compile(str(rdir), ext) module\_cffi_backend\test\test_recompiler.py:86: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x0000027929b653e0> compiler_verbose = 0, debug = None def compile(tmpdir, ext, compiler_verbose=0, debug=None): """Compile a C extension module using distutils.""" saved_environ = os.environ.copy() try: > outputfilename = _build(tmpdir, ext, compiler_verbose, debug) d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x0000027929b653e0> compiler_verbose = 0, debug = 0 def _build(tmpdir, ext, compiler_verbose=0, debug=None): # XXX compact but horrible :-( from cffi._shimmed_dist_utils import Distribution, CompileError, LinkError, set_threshold, set_verbosity dist = Distribution({'ext_modules': [ext]}) dist.parse_config_files() options = dist.get_option_dict('build_ext') if debug is None: debug = sys.flags.debug options['debug'] = ('ffiplatform', debug) options['force'] = ('ffiplatform', True) options['build_lib'] = ('ffiplatform', tmpdir) options['build_temp'] = ('ffiplatform', tmpdir) # try: old_level = set_threshold(0) or 0 try: set_verbosity(compiler_verbose) dist.run_command('build_ext') cmd_obj = dist.get_command_obj('build_ext') [soname] = cmd_obj.get_outputs() finally: set_threshold(old_level) except (CompileError, LinkError) as e: > raise VerificationError('%s: %s' % (e.__class__.__name__, e)) E VerificationError: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2 d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:54: VerificationError ---------------------------- Captured stdout call ----------------------------- generating d:\systemtemp\pytest\usession-main-595\recompiler\_CFFI_test_unspecified_size_of_global_3.c ---------------------------- Captured stderr call ----------------------------- cl : Command line error D8021 : invalid numeric argument '/Wno-error=incompatible-pointer-types' _____________ AppTestRecompiler.test_unspecified_size_of_global_4 _____________ self = <CallInfo when='call' exception: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2> func = <function <lambda> at 0x000002791b36c6b0>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ..\_pytest\runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ..\_pytest\runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_unspecified_size_of_global_4'>,...icall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_unspecified_size_of_global_4'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ..\_pytest\vendored_packages\pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00000279153616a8> hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_unspecified_size_of_global_4'>,...icall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_unspecified_size_of_global_4'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ..\_pytest\vendored_packages\pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_unspecified_size_of_global_4'>,...icall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_unspecified_size_of_global_4'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ..\_pytest\vendored_packages\pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_unspecified_size_of_global_4'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00000279200bf290> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...f_global_4'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027927f4b2e0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027927f4b2e0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...f_global_4'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_unspecified_size_of_global_4'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791e265f88> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...f_global_4'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027927f4b2a0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027927f4b2a0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...f_global_4'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_unspecified_size_of_global_4'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ..\_pytest\vendored_packages\pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_unspecified_size_of_global_4'> def pytest_runtest_call(item): try: > item.runtest() ..\_pytest\runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_unspecified_size_of_global_4'> def runtest(self): target = self.obj if self.config.option.runappdirect: return target() space = target.im_self.space filename = self._getdynfilename(target) func = app2interp_temp(target.im_func, filename=filename) w_instance = self.parent.w_instance > self.execute_appex(space, func, space, w_instance) tool\pytest\apptest.py:89: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_unspecified_size_of_global_4'>, space = StdObjSpace target = <function test_unspecified_size_of_global_4 at 0x000002791b36c818> args = (StdObjSpace, <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>) def execute_appex(self, space, target, *args): self.space = space try: > target(*args) tool\pytest\apptest.py:30: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) w_func = <Function test_unspecified_size_of_global_4> args = <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8> def appcaller(space, *args_w): if not isinstance(space, ObjSpace): raise TypeError("first argument must be a space instance.") # the last argument can be an Arguments w_func = self.wget(space, name) if not args_w: return space.call_function(w_func) else: args = args_w[-1] assert args is not None if not isinstance(args, Arguments): > return space.call_function(w_func, *args_w) interpreter\gateway.py:1227: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <Function test_unspecified_size_of_global_4> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) nargs = 1, Function = <class 'pypy.interpreter.function.Function'> Method = <class 'pypy.interpreter.function.Method'> def call_function(self, w_func, *args_w): nargs = len(args_w) # used for pruning funccall versions if not self.config.objspace.disable_call_speedhacks and nargs < 5: # start of hack for performance from pypy.interpreter.function import Function, Method if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: if nargs < 4: func = w_func.w_function if isinstance(func, Function): return func.funccall(w_inst, *args_w) elif args_w and ( self.abstract_isinstance_w(args_w[0], w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): > return w_func.funccall(*args_w) interpreter\baseobjspace.py:1210: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <Function test_unspecified_size_of_global_4> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) gateway = <module 'pypy.interpreter.gateway' from 'd:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\interpreter\\gateway.pyc'> PyCode = <class 'pypy.interpreter.pycode.PyCode'> code = <code object test_unspecified_size_of_global_4, file '[d:\pypy_stuff\buildbot6...n-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:572]', line 1> def funccall(self, *args_w): # speed hack from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit nargs = len(args_w) fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, args_w[0]) elif nargs == 2: assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, args_w[0], args_w[1]) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) return code.fastcall_3(self.space, self, args_w[0], args_w[1], args_w[2]) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) return code.fastcall_4(self.space, self, args_w[0], args_w[1], args_w[2], args_w[3]) elif (nargs | PyCode.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) if nargs < 5: new_frame = self.space.createframe(code, self.w_func_globals, self) for i in funccallunrolling: if i < nargs: new_frame.locals_cells_stack_w[i] = args_w[i] > return new_frame.run() interpreter\function.py:118: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_unspecif...uild\pypy\module\_cffi_backend\test\test_recompiler.py:572]', line 1> at line 5 def run(self): """Start this frame's execution.""" if self.getcode().co_flags & pycode.CO_GENERATOR: from pypy.interpreter.generator import GeneratorIterator return GeneratorIterator(self) else: > return self.execute_frame() interpreter\pyframe.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_unspecif...uild\pypy\module\_cffi_backend\test\test_recompiler.py:572]', line 1> at line 5 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, executioncontext) except OperationError: raise except Exception as e: # general fall-back > raise self._convert_unexpected_exception(e) interpreter\pyframe.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_unspecif...uild\pypy\module\_cffi_backend\test\test_recompiler.py:572]', line 1> at line 5 e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def _convert_unexpected_exception(self, e): from pypy.interpreter import error > operr = error.get_converted_unexpected_exception(self.space, e) interpreter\pyframe.py:943: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_unspecif...uild\pypy\module\_cffi_backend\test\test_recompiler.py:572]', line 1> at line 5 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, > executioncontext) interpreter\pyframe.py:286: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_unspecif...uild\pypy\module\_cffi_backend\test\test_recompiler.py:572]', line 1> at line 5 pycode = <code object test_unspecified_size_of_global_4, file '[d:\pypy_stuff\buildbot6...n-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:572]', line 1> next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def dispatch(self, pycode, next_instr, ec): # For the sequel, force 'next_instr' to be unsigned for performance next_instr = r_uint(next_instr) co_code = pycode.co_code try: while True: > next_instr = self.handle_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:64: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_unspecif...uild\pypy\module\_cffi_backend\test\test_recompiler.py:572]', line 1> at line 5 co_code = "|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00\xcc'\x00|\x01\x00\xc9\x01\x00|\x02\x00j\x02\x00\xca\x01\x00|\x01\x00\xc9\x01\x00d\x04\x00\xca\x01\x00k\x02\x00sE\x00t\x03\x00\x82\x01\x00d\x00\x00S" next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def handle_bytecode(self, co_code, next_instr, ec): try: > next_instr = self.dispatch_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:71: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_unspecif...uild\pypy\module\_cffi_backend\test\test_recompiler.py:572]', line 1> at line 5 co_code = "|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00\xcc'\x00|\x01\x00\xc9\x01\x00|\x02\x00j\x02\x00\xca\x01\x00|\x01\x00\xc9\x01\x00d\x04\x00\xca\x01\x00k\x02\x00sE\x00t\x03\x00\x82\x01\x00d\x00\x00S" next_instr = 18L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> @jit.unroll_safe def dispatch_bytecode(self, co_code, next_instr, ec): while True: self.last_instr = intmask(next_instr) if jit.we_are_jitted(): if self.debugdata: ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) else: # Only reload next_instr from last_instr when something that # can modify it actually ran (trace function or action # dispatcher). In the common case (no trace, positive ticker) # next_instr is unchanged and the round-trip is skipped. _d = self.debugdata if ec.space.reverse_debugging or ( _d is not None and _d.w_f_trace is not None) or ( not we_are_translated() and 'bytecode_only_trace' in ec.__dict__): ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) actionflag = ec.space.actionflag if actionflag.decrement_ticker(TICK_COUNTER_STEP) < 0: actionflag.action_dispatcher(ec, self) next_instr = r_uint(self.last_instr) opcode = ord(co_code[next_instr]) next_instr += 1 if opcode >= HAVE_ARGUMENT: lo = ord(co_code[next_instr]) hi = ord(co_code[next_instr+1]) next_instr += 2 oparg = (hi * 256) | lo else: oparg = 0 # note: the structure of the code here is such that it makes # (after translation) a big "if/elif" chain, which is then # turned into a switch(). while opcode == opcodedesc.EXTENDED_ARG.index: opcode = ord(co_code[next_instr]) if opcode < HAVE_ARGUMENT: raise BytecodeCorruption lo = ord(co_code[next_instr+1]) hi = ord(co_code[next_instr+2]) next_instr += 3 oparg = (oparg * 65536) | (hi * 256) | lo if opcode == opcodedesc.RETURN_VALUE.index: if not self.blockstack_non_empty(): self.frame_finished_execution = True # for generators raise Return w_returnvalue = self.popvalue() block = self.unrollstack(SReturnValue.kind) if block is None: self.pushvalue(w_returnvalue) raise Return else: unroller = SReturnValue(w_returnvalue) next_instr = block.handle(self, unroller) return next_instr # now inside a 'finally' block elif opcode == opcodedesc.END_FINALLY.index: unroller = self.end_finally() if isinstance(unroller, SuspendedUnroller): # go on unrolling the stack block = self.unrollstack(unroller.kind) if block is None: w_result = unroller.nomoreblocks() self.pushvalue(w_result) raise Return else: next_instr = block.handle(self, unroller) return next_instr elif opcode == opcodedesc.JUMP_ABSOLUTE.index: return self.jump_absolute(oparg, ec) elif opcode == opcodedesc.BREAK_LOOP.index: next_instr = self.BREAK_LOOP(oparg, next_instr) elif opcode == opcodedesc.CONTINUE_LOOP.index: return self.CONTINUE_LOOP(oparg, next_instr) elif opcode == opcodedesc.FOR_ITER.index: next_instr = self.FOR_ITER(oparg, next_instr) elif opcode == opcodedesc.JUMP_FORWARD.index: next_instr = self.JUMP_FORWARD(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_FALSE_OR_POP.index: next_instr = self.JUMP_IF_FALSE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_NOT_DEBUG.index: next_instr = self.JUMP_IF_NOT_DEBUG(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_TRUE_OR_POP.index: next_instr = self.JUMP_IF_TRUE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_FALSE.index: next_instr = self.POP_JUMP_IF_FALSE(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_TRUE.index: next_instr = self.POP_JUMP_IF_TRUE(oparg, next_instr) elif opcode == opcodedesc.BINARY_ADD.index: self.BINARY_ADD(oparg, next_instr) elif opcode == opcodedesc.BINARY_AND.index: self.BINARY_AND(oparg, next_instr) elif opcode == opcodedesc.BINARY_DIVIDE.index: self.BINARY_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_FLOOR_DIVIDE.index: self.BINARY_FLOOR_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_LSHIFT.index: self.BINARY_LSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_MODULO.index: self.BINARY_MODULO(oparg, next_instr) elif opcode == opcodedesc.BINARY_MULTIPLY.index: self.BINARY_MULTIPLY(oparg, next_instr) elif opcode == opcodedesc.BINARY_OR.index: self.BINARY_OR(oparg, next_instr) elif opcode == opcodedesc.BINARY_POWER.index: self.BINARY_POWER(oparg, next_instr) elif opcode == opcodedesc.BINARY_RSHIFT.index: self.BINARY_RSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBSCR.index: self.BINARY_SUBSCR(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBTRACT.index: self.BINARY_SUBTRACT(oparg, next_instr) elif opcode == opcodedesc.BINARY_TRUE_DIVIDE.index: self.BINARY_TRUE_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_XOR.index: self.BINARY_XOR(oparg, next_instr) elif opcode == opcodedesc.BUILD_CLASS.index: self.BUILD_CLASS(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST.index: self.BUILD_LIST(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST_FROM_ARG.index: self.BUILD_LIST_FROM_ARG(oparg, next_instr) elif opcode == opcodedesc.BUILD_MAP.index: self.BUILD_MAP(oparg, next_instr) elif opcode == opcodedesc.BUILD_SET.index: self.BUILD_SET(oparg, next_instr) elif opcode == opcodedesc.BUILD_SLICE.index: self.BUILD_SLICE(oparg, next_instr) elif opcode == opcodedesc.BUILD_TUPLE.index: self.BUILD_TUPLE(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION.index: self.CALL_FUNCTION(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_KW.index: self.CALL_FUNCTION_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR.index: self.CALL_FUNCTION_VAR(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR_KW.index: self.CALL_FUNCTION_VAR_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_METHOD.index: > self.CALL_METHOD(oparg, next_instr) interpreter\pyopcode.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ f = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_unspecif...uild\pypy\module\_cffi_backend\test\test_recompiler.py:572]', line 1> at line 5 oparg = 3, ignored = (18L,), n_args = 3, n_kwargs = 0, w_self = None @jit.unroll_safe def CALL_METHOD(f, oparg, *ignored): # opargs contains the arg, and kwarg count, excluding the implicit 'self' n_args = oparg & 0xff n_kwargs = (oparg >> 8) & 0xff w_self = f.peekvalue_maybe_none(n_args + (2 * n_kwargs)) n = n_args + (w_self is not None) if not n_kwargs: w_callable = f.peekvalue(n_args + (2 * n_kwargs) + 1) w_result = f.space.call_valuestack( > w_callable, n, f, methodcall=w_self is not None, dropvalues=n_args + 2) objspace\std\callmethod.py:96: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_unspecif...uild\pypy\module\_cffi_backend\test\test_recompiler.py:572]', line 1> at line 5 dropvalues = 5, methodcall = False def call_valuestack(self, w_func, nargs, frame, dropvalues, methodcall=False): # methodcall is only used for better error messages in argument.py from pypy.interpreter.function import Function, Method, is_builtin_code if frame.get_is_being_profiled() and is_builtin_code(w_func): # XXX: this code is copied&pasted :-( from the slow path below # call_valuestack(). args = frame.make_arguments(nargs) frame.dropvalues(dropvalues) return self.call_args_and_c_profile(frame, w_func, args) if not self.config.objspace.disable_call_speedhacks: # start of hack for performance if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: w_func = w_func.w_function # reuse callable stack place for w_inst frame.settopvalue(w_inst, nargs) nargs += 1 methodcall = True elif nargs > 0 and ( self.abstract_isinstance_w(frame.peekvalue(nargs-1), # :-( w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): return w_func.funccall_valuestack( > nargs, frame, methodcall=methodcall, dropvalues=dropvalues) interpreter\baseobjspace.py:1243: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_unspecif...uild\pypy\module\_cffi_backend\test\test_recompiler.py:572]', line 1> at line 5 dropvalues = 5, methodcall = False def funccall_valuestack(self, nargs, frame, dropvalues, methodcall=False): # speed hack # methodcall is only for better error messages from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit # if (jit.we_are_jitted() and code is self.space._code_of_sys_exc_info and nargs == 0): frame.dropvalues(dropvalues) from pypy.module.sys.vm import exc_info_direct return exc_info_direct(self.space, frame) # fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: f_0 = frame.peekvalue(0) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, f_0) elif nargs == 2: f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, f_1, f_0) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) frame.dropvalues(dropvalues) return code.fastcall_3(self.space, self, f_2, f_1, f_0) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) f_3 = frame.peekvalue(3) frame.dropvalues(dropvalues) return code.fastcall_4(self.space, self, f_3, f_2, f_1, f_0) elif (nargs | Code.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) return self._flat_pycall(code, nargs, frame, dropvalues) elif fast_natural_arity & Code.FLATPYCALL: natural_arity = fast_natural_arity & 0xff if natural_arity > nargs >= natural_arity - len(self.defs_w): assert isinstance(code, PyCode) return self._flat_pycall_defaults(code, nargs, frame, natural_arity - nargs, dropvalues) elif fast_natural_arity == Code.PASSTHROUGHARGS1 and nargs >= 1: assert isinstance(code, gateway.BuiltinCodePassThroughArguments1) w_obj = frame.peekvalue(nargs-1) args = frame.make_arguments(nargs-1) frame.dropvalues(dropvalues) return code.funcrun_obj(self, w_obj, args) args = frame.make_arguments(nargs, methodcall=methodcall) frame.dropvalues(dropvalues) > return self.call_args(args) interpreter\function.py:190: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('int glob[...][...];'), W_BytesObject('test_unspecified_size_of_global_4'), W_BytesObject('int glob[10][5];')]) def call_args(self, args): # delegate activation to code > w_res = self.getcode().funcrun(self, args) interpreter\function.py:68: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('int glob[...][...];'), W_BytesObject('test_unspecified_size_of_global_4'), W_BytesObject('int glob[10][5];')]) def funcrun(self, func, args): > return BuiltinCode.funcrun_obj(self, func, None, args) interpreter\gateway.py:781: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('int glob[...][...];'), W_BytesObject('test_unspecified_size_of_global_4'), W_BytesObject('int glob[10][5];')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: w_result = activation._run(space, scope_w) except DescrMismatch: if w_obj is not None: args = args.prepend(w_obj) return self._type_unwrap_mismatch(space, args) except Exception as e: > self.handle_exception(space, e) interpreter\gateway.py:795: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> space = StdObjSpace e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def handle_exception(self, space, e): try: if not we_are_translated(): raise raise e except OperationError: raise except Exception as e: # general fall-back from pypy.interpreter import error > raise error.get_converted_unexpected_exception(space, e) interpreter\gateway.py:819: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('int glob[...][...];'), W_BytesObject('test_unspecified_size_of_global_4'), W_BytesObject('int glob[10][5];')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: > w_result = activation._run(space, scope_w) interpreter\gateway.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinActivation_UwS_ObjSpace_text_text_text_W_Root_W_Root_W_Root_int_W_Root object at 0x000002791c13af38> space = StdObjSpace scope_w = [W_BytesObject('int glob[...][...];'), W_BytesObject('test_unspecified_size_of_global_4'), W_BytesObject('int glob[10][5];'), None, None, None, ...] def _run(self, space, scope_w): > return self.behavior(space, space.text_w(scope_w[0]), space.text_w(scope_w[1]), space.text_w(scope_w[2]), scope_w[3], scope_w[4], scope_w[5], space.gateway_int_w(scope_w[6]), scope_w[7]) <3152-codegen d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\rpython\tool\sourcetools.py:200>:3: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace, cdef = 'int glob[...][...];' module_name = '_CFFI_test_unspecified_size_of_global_4' source = 'int glob[10][5];', w_includes = None, w_extra_source = None w_min_version = None, packed = 0, w_extra_compile_args = None @unwrap_spec(cdef='text', module_name='text', source='text', packed=int) def prepare(space, cdef, module_name, source, w_includes=None, w_extra_source=None, w_min_version=None, packed=False, w_extra_compile_args=None): try: import cffi from cffi import FFI # <== the system one, which from cffi import recompiler # needs to be at least cffi 1.0.4 from cffi import ffiplatform except ImportError: pytest.skip("system cffi module not found or older than 1.0.0") if w_min_version is None: min_version = (1, 4, 0) else: min_version = tuple(space.unwrap(w_min_version)) if cffi.__version_info__ < min_version: pytest.skip("system cffi module needs to be at least %s, got %s" % ( min_version, cffi.__version_info__)) space.appexec([], """(): import _cffi_backend # force it to be initialized """) includes = [] if w_includes: includes += space.unpackiterable(w_includes) assert module_name.startswith('test_') module_name = '_CFFI_' + module_name rdir = udir.ensure('recompiler', dir=1) rdir.join('Python.h').write( '#include <stdio.h>\n' '#define PYPY_VERSION XX\n' '#define PyMODINIT_FUNC /*exported*/ void\n' ) path = module_name.replace('.', os.sep) if '.' in module_name: subrdir = rdir.join(module_name[:module_name.index('.')]) os.mkdir(str(subrdir)) else: subrdir = rdir c_file = str(rdir.join('%s.c' % path)) ffi = FFI() for include_ffi_object in includes: ffi.include(include_ffi_object._test_recompiler_source_ffi) ffi.cdef(cdef, packed=packed) ffi.set_source(module_name, source) ffi.emit_c_code(c_file) base_module_name = module_name.split('.')[-1] sources = [] if w_extra_source is not None: sources.append(space.str_w(w_extra_source)) kwargs = {} # GCC 14 promotes -Wincompatible-pointer-types from a warning to an error # by default, which breaks cffi's intentionally-mismatched field-check # probes (e.g. test_misdeclared_field_1). Keep it a warning so the module # compiles and cffi's runtime checks can run. extra = ['-Wno-error=incompatible-pointer-types'] if w_extra_compile_args is not None: extra = extra + space.unwrap(w_extra_compile_args) kwargs['extra_compile_args'] = extra ext = ffiplatform.get_extension(c_file, module_name, include_dirs=[str(rdir)], export_symbols=['_cffi_pypyinit_' + base_module_name], sources=sources, **kwargs) > ffiplatform.compile(str(rdir), ext) module\_cffi_backend\test\test_recompiler.py:86: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x0000027927f4be60> compiler_verbose = 0, debug = None def compile(tmpdir, ext, compiler_verbose=0, debug=None): """Compile a C extension module using distutils.""" saved_environ = os.environ.copy() try: > outputfilename = _build(tmpdir, ext, compiler_verbose, debug) d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x0000027927f4be60> compiler_verbose = 0, debug = 0 def _build(tmpdir, ext, compiler_verbose=0, debug=None): # XXX compact but horrible :-( from cffi._shimmed_dist_utils import Distribution, CompileError, LinkError, set_threshold, set_verbosity dist = Distribution({'ext_modules': [ext]}) dist.parse_config_files() options = dist.get_option_dict('build_ext') if debug is None: debug = sys.flags.debug options['debug'] = ('ffiplatform', debug) options['force'] = ('ffiplatform', True) options['build_lib'] = ('ffiplatform', tmpdir) options['build_temp'] = ('ffiplatform', tmpdir) # try: old_level = set_threshold(0) or 0 try: set_verbosity(compiler_verbose) dist.run_command('build_ext') cmd_obj = dist.get_command_obj('build_ext') [soname] = cmd_obj.get_outputs() finally: set_threshold(old_level) except (CompileError, LinkError) as e: > raise VerificationError('%s: %s' % (e.__class__.__name__, e)) E VerificationError: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2 d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:54: VerificationError ---------------------------- Captured stdout call ----------------------------- generating d:\systemtemp\pytest\usession-main-595\recompiler\_CFFI_test_unspecified_size_of_global_4.c ---------------------------- Captured stderr call ----------------------------- cl : Command line error D8021 : invalid numeric argument '/Wno-error=incompatible-pointer-types' ______________________ AppTestRecompiler.test_include_1 _______________________ self = <CallInfo when='call' exception: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2> func = <function <lambda> at 0x000002792a7d3790>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ..\_pytest\runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ..\_pytest\runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_include_1'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_include_1'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ..\_pytest\vendored_packages\pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00000279153616a8> hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_include_1'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_include_1'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ..\_pytest\vendored_packages\pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_include_1'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_include_1'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ..\_pytest\vendored_packages\pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_include_1'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002792a586700> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i..._include_1'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002791b51aa20> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002791b51aa20> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i..._include_1'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_include_1'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002792a5866b0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i..._include_1'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002791b51a9e0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002791b51a9e0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i..._include_1'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_include_1'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ..\_pytest\vendored_packages\pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_include_1'> def pytest_runtest_call(item): try: > item.runtest() ..\_pytest\runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_include_1'> def runtest(self): target = self.obj if self.config.option.runappdirect: return target() space = target.im_self.space filename = self._getdynfilename(target) func = app2interp_temp(target.im_func, filename=filename) w_instance = self.parent.w_instance > self.execute_appex(space, func, space, w_instance) tool\pytest\apptest.py:89: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_include_1'>, space = StdObjSpace target = <function test_include_1 at 0x000002792a7d3880> args = (StdObjSpace, <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>) def execute_appex(self, space, target, *args): self.space = space try: > target(*args) tool\pytest\apptest.py:30: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) w_func = <Function test_include_1> args = <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8> def appcaller(space, *args_w): if not isinstance(space, ObjSpace): raise TypeError("first argument must be a space instance.") # the last argument can be an Arguments w_func = self.wget(space, name) if not args_w: return space.call_function(w_func) else: args = args_w[-1] assert args is not None if not isinstance(args, Arguments): > return space.call_function(w_func, *args_w) interpreter\gateway.py:1227: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <Function test_include_1> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) nargs = 1, Function = <class 'pypy.interpreter.function.Function'> Method = <class 'pypy.interpreter.function.Method'> def call_function(self, w_func, *args_w): nargs = len(args_w) # used for pruning funccall versions if not self.config.objspace.disable_call_speedhacks and nargs < 5: # start of hack for performance from pypy.interpreter.function import Function, Method if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: if nargs < 4: func = w_func.w_function if isinstance(func, Function): return func.funccall(w_inst, *args_w) elif args_w and ( self.abstract_isinstance_w(args_w[0], w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): > return w_func.funccall(*args_w) interpreter\baseobjspace.py:1210: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <Function test_include_1> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) gateway = <module 'pypy.interpreter.gateway' from 'd:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\interpreter\\gateway.pyc'> PyCode = <class 'pypy.interpreter.pycode.PyCode'> code = <code object test_include_1, file '[d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:579]', line 1> def funccall(self, *args_w): # speed hack from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit nargs = len(args_w) fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, args_w[0]) elif nargs == 2: assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, args_w[0], args_w[1]) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) return code.fastcall_3(self.space, self, args_w[0], args_w[1], args_w[2]) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) return code.fastcall_4(self.space, self, args_w[0], args_w[1], args_w[2], args_w[3]) elif (nargs | PyCode.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) if nargs < 5: new_frame = self.space.createframe(code, self.w_func_globals, self) for i in funccallunrolling: if i < nargs: new_frame.locals_cells_stack_w[i] = args_w[i] > return new_frame.run() interpreter\function.py:118: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_include_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:579]', line 1> at line 5 def run(self): """Start this frame's execution.""" if self.getcode().co_flags & pycode.CO_GENERATOR: from pypy.interpreter.generator import GeneratorIterator return GeneratorIterator(self) else: > return self.execute_frame() interpreter\pyframe.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_include_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:579]', line 1> at line 5 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, executioncontext) except OperationError: raise except Exception as e: # general fall-back > raise self._convert_unexpected_exception(e) interpreter\pyframe.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_include_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:579]', line 1> at line 5 e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def _convert_unexpected_exception(self, e): from pypy.interpreter import error > operr = error.get_converted_unexpected_exception(self.space, e) interpreter\pyframe.py:943: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_include_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:579]', line 1> at line 5 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, > executioncontext) interpreter\pyframe.py:286: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_include_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:579]', line 1> at line 5 pycode = <code object test_include_1, file '[d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:579]', line 1> next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def dispatch(self, pycode, next_instr, ec): # For the sequel, force 'next_instr' to be unsigned for performance next_instr = r_uint(next_instr) co_code = pycode.co_code try: while True: > next_instr = self.handle_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:64: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_include_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:579]', line 1> at line 5 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x01\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00|\x00\x00\xc9\x00\x00d\x03\x0...x00o\x92\x00|\x03\x00\xc9\x03\x00d\n\x00\xca\x01\x00k\x08\x00n\x02\x00\x02\x01s\x9d\x00t\x02\x00\x82\x01\x00d\x00\x00S' next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def handle_bytecode(self, co_code, next_instr, ec): try: > next_instr = self.dispatch_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:71: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_include_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:579]', line 1> at line 5 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x01\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00|\x00\x00\xc9\x00\x00d\x03\x0...x00o\x92\x00|\x03\x00\xc9\x03\x00d\n\x00\xca\x01\x00k\x08\x00n\x02\x00\x02\x01s\x9d\x00t\x02\x00\x82\x01\x00d\x00\x00S' next_instr = 18L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> @jit.unroll_safe def dispatch_bytecode(self, co_code, next_instr, ec): while True: self.last_instr = intmask(next_instr) if jit.we_are_jitted(): if self.debugdata: ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) else: # Only reload next_instr from last_instr when something that # can modify it actually ran (trace function or action # dispatcher). In the common case (no trace, positive ticker) # next_instr is unchanged and the round-trip is skipped. _d = self.debugdata if ec.space.reverse_debugging or ( _d is not None and _d.w_f_trace is not None) or ( not we_are_translated() and 'bytecode_only_trace' in ec.__dict__): ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) actionflag = ec.space.actionflag if actionflag.decrement_ticker(TICK_COUNTER_STEP) < 0: actionflag.action_dispatcher(ec, self) next_instr = r_uint(self.last_instr) opcode = ord(co_code[next_instr]) next_instr += 1 if opcode >= HAVE_ARGUMENT: lo = ord(co_code[next_instr]) hi = ord(co_code[next_instr+1]) next_instr += 2 oparg = (hi * 256) | lo else: oparg = 0 # note: the structure of the code here is such that it makes # (after translation) a big "if/elif" chain, which is then # turned into a switch(). while opcode == opcodedesc.EXTENDED_ARG.index: opcode = ord(co_code[next_instr]) if opcode < HAVE_ARGUMENT: raise BytecodeCorruption lo = ord(co_code[next_instr+1]) hi = ord(co_code[next_instr+2]) next_instr += 3 oparg = (oparg * 65536) | (hi * 256) | lo if opcode == opcodedesc.RETURN_VALUE.index: if not self.blockstack_non_empty(): self.frame_finished_execution = True # for generators raise Return w_returnvalue = self.popvalue() block = self.unrollstack(SReturnValue.kind) if block is None: self.pushvalue(w_returnvalue) raise Return else: unroller = SReturnValue(w_returnvalue) next_instr = block.handle(self, unroller) return next_instr # now inside a 'finally' block elif opcode == opcodedesc.END_FINALLY.index: unroller = self.end_finally() if isinstance(unroller, SuspendedUnroller): # go on unrolling the stack block = self.unrollstack(unroller.kind) if block is None: w_result = unroller.nomoreblocks() self.pushvalue(w_result) raise Return else: next_instr = block.handle(self, unroller) return next_instr elif opcode == opcodedesc.JUMP_ABSOLUTE.index: return self.jump_absolute(oparg, ec) elif opcode == opcodedesc.BREAK_LOOP.index: next_instr = self.BREAK_LOOP(oparg, next_instr) elif opcode == opcodedesc.CONTINUE_LOOP.index: return self.CONTINUE_LOOP(oparg, next_instr) elif opcode == opcodedesc.FOR_ITER.index: next_instr = self.FOR_ITER(oparg, next_instr) elif opcode == opcodedesc.JUMP_FORWARD.index: next_instr = self.JUMP_FORWARD(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_FALSE_OR_POP.index: next_instr = self.JUMP_IF_FALSE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_NOT_DEBUG.index: next_instr = self.JUMP_IF_NOT_DEBUG(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_TRUE_OR_POP.index: next_instr = self.JUMP_IF_TRUE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_FALSE.index: next_instr = self.POP_JUMP_IF_FALSE(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_TRUE.index: next_instr = self.POP_JUMP_IF_TRUE(oparg, next_instr) elif opcode == opcodedesc.BINARY_ADD.index: self.BINARY_ADD(oparg, next_instr) elif opcode == opcodedesc.BINARY_AND.index: self.BINARY_AND(oparg, next_instr) elif opcode == opcodedesc.BINARY_DIVIDE.index: self.BINARY_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_FLOOR_DIVIDE.index: self.BINARY_FLOOR_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_LSHIFT.index: self.BINARY_LSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_MODULO.index: self.BINARY_MODULO(oparg, next_instr) elif opcode == opcodedesc.BINARY_MULTIPLY.index: self.BINARY_MULTIPLY(oparg, next_instr) elif opcode == opcodedesc.BINARY_OR.index: self.BINARY_OR(oparg, next_instr) elif opcode == opcodedesc.BINARY_POWER.index: self.BINARY_POWER(oparg, next_instr) elif opcode == opcodedesc.BINARY_RSHIFT.index: self.BINARY_RSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBSCR.index: self.BINARY_SUBSCR(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBTRACT.index: self.BINARY_SUBTRACT(oparg, next_instr) elif opcode == opcodedesc.BINARY_TRUE_DIVIDE.index: self.BINARY_TRUE_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_XOR.index: self.BINARY_XOR(oparg, next_instr) elif opcode == opcodedesc.BUILD_CLASS.index: self.BUILD_CLASS(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST.index: self.BUILD_LIST(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST_FROM_ARG.index: self.BUILD_LIST_FROM_ARG(oparg, next_instr) elif opcode == opcodedesc.BUILD_MAP.index: self.BUILD_MAP(oparg, next_instr) elif opcode == opcodedesc.BUILD_SET.index: self.BUILD_SET(oparg, next_instr) elif opcode == opcodedesc.BUILD_SLICE.index: self.BUILD_SLICE(oparg, next_instr) elif opcode == opcodedesc.BUILD_TUPLE.index: self.BUILD_TUPLE(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION.index: self.CALL_FUNCTION(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_KW.index: self.CALL_FUNCTION_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR.index: self.CALL_FUNCTION_VAR(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR_KW.index: self.CALL_FUNCTION_VAR_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_METHOD.index: > self.CALL_METHOD(oparg, next_instr) interpreter\pyopcode.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ f = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_include_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:579]', line 1> at line 5 oparg = 3, ignored = (18L,), n_args = 3, n_kwargs = 0, w_self = None @jit.unroll_safe def CALL_METHOD(f, oparg, *ignored): # opargs contains the arg, and kwarg count, excluding the implicit 'self' n_args = oparg & 0xff n_kwargs = (oparg >> 8) & 0xff w_self = f.peekvalue_maybe_none(n_args + (2 * n_kwargs)) n = n_args + (w_self is not None) if not n_kwargs: w_callable = f.peekvalue(n_args + (2 * n_kwargs) + 1) w_result = f.space.call_valuestack( > w_callable, n, f, methodcall=w_self is not None, dropvalues=n_args + 2) objspace\std\callmethod.py:96: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_include_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:579]', line 1> at line 5 dropvalues = 5, methodcall = False def call_valuestack(self, w_func, nargs, frame, dropvalues, methodcall=False): # methodcall is only used for better error messages in argument.py from pypy.interpreter.function import Function, Method, is_builtin_code if frame.get_is_being_profiled() and is_builtin_code(w_func): # XXX: this code is copied&pasted :-( from the slow path below # call_valuestack(). args = frame.make_arguments(nargs) frame.dropvalues(dropvalues) return self.call_args_and_c_profile(frame, w_func, args) if not self.config.objspace.disable_call_speedhacks: # start of hack for performance if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: w_func = w_func.w_function # reuse callable stack place for w_inst frame.settopvalue(w_inst, nargs) nargs += 1 methodcall = True elif nargs > 0 and ( self.abstract_isinstance_w(frame.peekvalue(nargs-1), # :-( w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): return w_func.funccall_valuestack( > nargs, frame, methodcall=methodcall, dropvalues=dropvalues) interpreter\baseobjspace.py:1243: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_include_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:579]', line 1> at line 5 dropvalues = 5, methodcall = False def funccall_valuestack(self, nargs, frame, dropvalues, methodcall=False): # speed hack # methodcall is only for better error messages from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit # if (jit.we_are_jitted() and code is self.space._code_of_sys_exc_info and nargs == 0): frame.dropvalues(dropvalues) from pypy.module.sys.vm import exc_info_direct return exc_info_direct(self.space, frame) # fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: f_0 = frame.peekvalue(0) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, f_0) elif nargs == 2: f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, f_1, f_0) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) frame.dropvalues(dropvalues) return code.fastcall_3(self.space, self, f_2, f_1, f_0) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) f_3 = frame.peekvalue(3) frame.dropvalues(dropvalues) return code.fastcall_4(self.space, self, f_3, f_2, f_1, f_0) elif (nargs | Code.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) return self._flat_pycall(code, nargs, frame, dropvalues) elif fast_natural_arity & Code.FLATPYCALL: natural_arity = fast_natural_arity & 0xff if natural_arity > nargs >= natural_arity - len(self.defs_w): assert isinstance(code, PyCode) return self._flat_pycall_defaults(code, nargs, frame, natural_arity - nargs, dropvalues) elif fast_natural_arity == Code.PASSTHROUGHARGS1 and nargs >= 1: assert isinstance(code, gateway.BuiltinCodePassThroughArguments1) w_obj = frame.peekvalue(nargs-1) args = frame.make_arguments(nargs-1) frame.dropvalues(dropvalues) return code.funcrun_obj(self, w_obj, args) args = frame.make_arguments(nargs, methodcall=methodcall) frame.dropvalues(dropvalues) > return self.call_args(args) interpreter\function.py:190: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('typedef double foo_t;'), W_BytesObject('test_include_1_parent'), W_BytesObject('typedef double foo_t;')]) def call_args(self, args): # delegate activation to code > w_res = self.getcode().funcrun(self, args) interpreter\function.py:68: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('typedef double foo_t;'), W_BytesObject('test_include_1_parent'), W_BytesObject('typedef double foo_t;')]) def funcrun(self, func, args): > return BuiltinCode.funcrun_obj(self, func, None, args) interpreter\gateway.py:781: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('typedef double foo_t;'), W_BytesObject('test_include_1_parent'), W_BytesObject('typedef double foo_t;')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: w_result = activation._run(space, scope_w) except DescrMismatch: if w_obj is not None: args = args.prepend(w_obj) return self._type_unwrap_mismatch(space, args) except Exception as e: > self.handle_exception(space, e) interpreter\gateway.py:795: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> space = StdObjSpace e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def handle_exception(self, space, e): try: if not we_are_translated(): raise raise e except OperationError: raise except Exception as e: # general fall-back from pypy.interpreter import error > raise error.get_converted_unexpected_exception(space, e) interpreter\gateway.py:819: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('typedef double foo_t;'), W_BytesObject('test_include_1_parent'), W_BytesObject('typedef double foo_t;')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: > w_result = activation._run(space, scope_w) interpreter\gateway.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinActivation_UwS_ObjSpace_text_text_text_W_Root_W_Root_W_Root_int_W_Root object at 0x000002791c13af38> space = StdObjSpace scope_w = [W_BytesObject('typedef double foo_t;'), W_BytesObject('test_include_1_parent'), W_BytesObject('typedef double foo_t;'), None, None, None, ...] def _run(self, space, scope_w): > return self.behavior(space, space.text_w(scope_w[0]), space.text_w(scope_w[1]), space.text_w(scope_w[2]), scope_w[3], scope_w[4], scope_w[5], space.gateway_int_w(scope_w[6]), scope_w[7]) <3152-codegen d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\rpython\tool\sourcetools.py:200>:3: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace, cdef = 'typedef double foo_t;' module_name = '_CFFI_test_include_1_parent', source = 'typedef double foo_t;' w_includes = None, w_extra_source = None, w_min_version = None, packed = 0 w_extra_compile_args = None @unwrap_spec(cdef='text', module_name='text', source='text', packed=int) def prepare(space, cdef, module_name, source, w_includes=None, w_extra_source=None, w_min_version=None, packed=False, w_extra_compile_args=None): try: import cffi from cffi import FFI # <== the system one, which from cffi import recompiler # needs to be at least cffi 1.0.4 from cffi import ffiplatform except ImportError: pytest.skip("system cffi module not found or older than 1.0.0") if w_min_version is None: min_version = (1, 4, 0) else: min_version = tuple(space.unwrap(w_min_version)) if cffi.__version_info__ < min_version: pytest.skip("system cffi module needs to be at least %s, got %s" % ( min_version, cffi.__version_info__)) space.appexec([], """(): import _cffi_backend # force it to be initialized """) includes = [] if w_includes: includes += space.unpackiterable(w_includes) assert module_name.startswith('test_') module_name = '_CFFI_' + module_name rdir = udir.ensure('recompiler', dir=1) rdir.join('Python.h').write( '#include <stdio.h>\n' '#define PYPY_VERSION XX\n' '#define PyMODINIT_FUNC /*exported*/ void\n' ) path = module_name.replace('.', os.sep) if '.' in module_name: subrdir = rdir.join(module_name[:module_name.index('.')]) os.mkdir(str(subrdir)) else: subrdir = rdir c_file = str(rdir.join('%s.c' % path)) ffi = FFI() for include_ffi_object in includes: ffi.include(include_ffi_object._test_recompiler_source_ffi) ffi.cdef(cdef, packed=packed) ffi.set_source(module_name, source) ffi.emit_c_code(c_file) base_module_name = module_name.split('.')[-1] sources = [] if w_extra_source is not None: sources.append(space.str_w(w_extra_source)) kwargs = {} # GCC 14 promotes -Wincompatible-pointer-types from a warning to an error # by default, which breaks cffi's intentionally-mismatched field-check # probes (e.g. test_misdeclared_field_1). Keep it a warning so the module # compiles and cffi's runtime checks can run. extra = ['-Wno-error=incompatible-pointer-types'] if w_extra_compile_args is not None: extra = extra + space.unwrap(w_extra_compile_args) kwargs['extra_compile_args'] = extra ext = ffiplatform.get_extension(c_file, module_name, include_dirs=[str(rdir)], export_symbols=['_cffi_pypyinit_' + base_module_name], sources=sources, **kwargs) > ffiplatform.compile(str(rdir), ext) module\_cffi_backend\test\test_recompiler.py:86: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x000002791b9e6860> compiler_verbose = 0, debug = None def compile(tmpdir, ext, compiler_verbose=0, debug=None): """Compile a C extension module using distutils.""" saved_environ = os.environ.copy() try: > outputfilename = _build(tmpdir, ext, compiler_verbose, debug) d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x000002791b9e6860> compiler_verbose = 0, debug = 0 def _build(tmpdir, ext, compiler_verbose=0, debug=None): # XXX compact but horrible :-( from cffi._shimmed_dist_utils import Distribution, CompileError, LinkError, set_threshold, set_verbosity dist = Distribution({'ext_modules': [ext]}) dist.parse_config_files() options = dist.get_option_dict('build_ext') if debug is None: debug = sys.flags.debug options['debug'] = ('ffiplatform', debug) options['force'] = ('ffiplatform', True) options['build_lib'] = ('ffiplatform', tmpdir) options['build_temp'] = ('ffiplatform', tmpdir) # try: old_level = set_threshold(0) or 0 try: set_verbosity(compiler_verbose) dist.run_command('build_ext') cmd_obj = dist.get_command_obj('build_ext') [soname] = cmd_obj.get_outputs() finally: set_threshold(old_level) except (CompileError, LinkError) as e: > raise VerificationError('%s: %s' % (e.__class__.__name__, e)) E VerificationError: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2 d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:54: VerificationError ---------------------------- Captured stdout call ----------------------------- generating d:\systemtemp\pytest\usession-main-595\recompiler\_CFFI_test_include_1_parent.c ---------------------------- Captured stderr call ----------------------------- cl : Command line error D8021 : invalid numeric argument '/Wno-error=incompatible-pointer-types' ______________________ AppTestRecompiler.test_include_1b ______________________ self = <CallInfo when='call' exception: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2> func = <function <lambda> at 0x000002792c977da8>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ..\_pytest\runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ..\_pytest\runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_include_1b'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_include_1b'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ..\_pytest\vendored_packages\pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00000279153616a8> hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_include_1b'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_include_1b'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ..\_pytest\vendored_packages\pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_include_1b'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_include_1b'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ..\_pytest\vendored_packages\pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_include_1b'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791ab5fe48> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...include_1b'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00000279281ca760> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00000279281ca760> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...include_1b'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_include_1b'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791ab5fdf8> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...include_1b'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00000279281ca720> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00000279281ca720> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...include_1b'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_include_1b'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ..\_pytest\vendored_packages\pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_include_1b'> def pytest_runtest_call(item): try: > item.runtest() ..\_pytest\runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_include_1b'> def runtest(self): target = self.obj if self.config.option.runappdirect: return target() space = target.im_self.space filename = self._getdynfilename(target) func = app2interp_temp(target.im_func, filename=filename) w_instance = self.parent.w_instance > self.execute_appex(space, func, space, w_instance) tool\pytest\apptest.py:89: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_include_1b'>, space = StdObjSpace target = <function test_include_1b at 0x000002792c977e20> args = (StdObjSpace, <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>) def execute_appex(self, space, target, *args): self.space = space try: > target(*args) tool\pytest\apptest.py:30: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) w_func = <Function test_include_1b> args = <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8> def appcaller(space, *args_w): if not isinstance(space, ObjSpace): raise TypeError("first argument must be a space instance.") # the last argument can be an Arguments w_func = self.wget(space, name) if not args_w: return space.call_function(w_func) else: args = args_w[-1] assert args is not None if not isinstance(args, Arguments): > return space.call_function(w_func, *args_w) interpreter\gateway.py:1227: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <Function test_include_1b> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) nargs = 1, Function = <class 'pypy.interpreter.function.Function'> Method = <class 'pypy.interpreter.function.Method'> def call_function(self, w_func, *args_w): nargs = len(args_w) # used for pruning funccall versions if not self.config.objspace.disable_call_speedhacks and nargs < 5: # start of hack for performance from pypy.interpreter.function import Function, Method if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: if nargs < 4: func = w_func.w_function if isinstance(func, Function): return func.funccall(w_inst, *args_w) elif args_w and ( self.abstract_isinstance_w(args_w[0], w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): > return w_func.funccall(*args_w) interpreter\baseobjspace.py:1210: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <Function test_include_1b> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) gateway = <module 'pypy.interpreter.gateway' from 'd:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\interpreter\\gateway.pyc'> PyCode = <class 'pypy.interpreter.pycode.PyCode'> code = <code object test_include_1b, file '[d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:593]', line 1> def funccall(self, *args_w): # speed hack from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit nargs = len(args_w) fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, args_w[0]) elif nargs == 2: assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, args_w[0], args_w[1]) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) return code.fastcall_3(self.space, self, args_w[0], args_w[1], args_w[2]) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) return code.fastcall_4(self.space, self, args_w[0], args_w[1], args_w[2], args_w[3]) elif (nargs | PyCode.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) if nargs < 5: new_frame = self.space.createframe(code, self.w_func_globals, self) for i in funccallunrolling: if i < nargs: new_frame.locals_cells_stack_w[i] = args_w[i] > return new_frame.run() interpreter\function.py:118: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_include_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:593]', line 1> at line 5 def run(self): """Start this frame's execution.""" if self.getcode().co_flags & pycode.CO_GENERATOR: from pypy.interpreter.generator import GeneratorIterator return GeneratorIterator(self) else: > return self.execute_frame() interpreter\pyframe.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_include_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:593]', line 1> at line 5 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, executioncontext) except OperationError: raise except Exception as e: # general fall-back > raise self._convert_unexpected_exception(e) interpreter\pyframe.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_include_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:593]', line 1> at line 5 e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def _convert_unexpected_exception(self, e): from pypy.interpreter import error > operr = error.get_converted_unexpected_exception(self.space, e) interpreter\pyframe.py:943: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_include_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:593]', line 1> at line 5 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, > executioncontext) interpreter\pyframe.py:286: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_include_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:593]', line 1> at line 5 pycode = <code object test_include_1b, file '[d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:593]', line 1> next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def dispatch(self, pycode, next_instr, ec): # For the sequel, force 'next_instr' to be unsigned for performance next_instr = r_uint(next_instr) co_code = pycode.co_code try: while True: > next_instr = self.handle_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:64: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_include_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:593]', line 1> at line 5 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00|\x00\x00\xc9\x00\x00d\x04\x0...t\x02\x00\x82\x01\x00\xcc\x18\x00|\x04\x00j\x03\x00|\x02\x00j\x03\x00k\x08\x00s\x96\x00t\x02\x00\x82\x01\x00d\x00\x00S' next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def handle_bytecode(self, co_code, next_instr, ec): try: > next_instr = self.dispatch_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:71: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_include_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:593]', line 1> at line 5 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00|\x00\x00\xc9\x00\x00d\x04\x0...t\x02\x00\x82\x01\x00\xcc\x18\x00|\x04\x00j\x03\x00|\x02\x00j\x03\x00k\x08\x00s\x96\x00t\x02\x00\x82\x01\x00d\x00\x00S' next_instr = 18L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> @jit.unroll_safe def dispatch_bytecode(self, co_code, next_instr, ec): while True: self.last_instr = intmask(next_instr) if jit.we_are_jitted(): if self.debugdata: ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) else: # Only reload next_instr from last_instr when something that # can modify it actually ran (trace function or action # dispatcher). In the common case (no trace, positive ticker) # next_instr is unchanged and the round-trip is skipped. _d = self.debugdata if ec.space.reverse_debugging or ( _d is not None and _d.w_f_trace is not None) or ( not we_are_translated() and 'bytecode_only_trace' in ec.__dict__): ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) actionflag = ec.space.actionflag if actionflag.decrement_ticker(TICK_COUNTER_STEP) < 0: actionflag.action_dispatcher(ec, self) next_instr = r_uint(self.last_instr) opcode = ord(co_code[next_instr]) next_instr += 1 if opcode >= HAVE_ARGUMENT: lo = ord(co_code[next_instr]) hi = ord(co_code[next_instr+1]) next_instr += 2 oparg = (hi * 256) | lo else: oparg = 0 # note: the structure of the code here is such that it makes # (after translation) a big "if/elif" chain, which is then # turned into a switch(). while opcode == opcodedesc.EXTENDED_ARG.index: opcode = ord(co_code[next_instr]) if opcode < HAVE_ARGUMENT: raise BytecodeCorruption lo = ord(co_code[next_instr+1]) hi = ord(co_code[next_instr+2]) next_instr += 3 oparg = (oparg * 65536) | (hi * 256) | lo if opcode == opcodedesc.RETURN_VALUE.index: if not self.blockstack_non_empty(): self.frame_finished_execution = True # for generators raise Return w_returnvalue = self.popvalue() block = self.unrollstack(SReturnValue.kind) if block is None: self.pushvalue(w_returnvalue) raise Return else: unroller = SReturnValue(w_returnvalue) next_instr = block.handle(self, unroller) return next_instr # now inside a 'finally' block elif opcode == opcodedesc.END_FINALLY.index: unroller = self.end_finally() if isinstance(unroller, SuspendedUnroller): # go on unrolling the stack block = self.unrollstack(unroller.kind) if block is None: w_result = unroller.nomoreblocks() self.pushvalue(w_result) raise Return else: next_instr = block.handle(self, unroller) return next_instr elif opcode == opcodedesc.JUMP_ABSOLUTE.index: return self.jump_absolute(oparg, ec) elif opcode == opcodedesc.BREAK_LOOP.index: next_instr = self.BREAK_LOOP(oparg, next_instr) elif opcode == opcodedesc.CONTINUE_LOOP.index: return self.CONTINUE_LOOP(oparg, next_instr) elif opcode == opcodedesc.FOR_ITER.index: next_instr = self.FOR_ITER(oparg, next_instr) elif opcode == opcodedesc.JUMP_FORWARD.index: next_instr = self.JUMP_FORWARD(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_FALSE_OR_POP.index: next_instr = self.JUMP_IF_FALSE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_NOT_DEBUG.index: next_instr = self.JUMP_IF_NOT_DEBUG(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_TRUE_OR_POP.index: next_instr = self.JUMP_IF_TRUE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_FALSE.index: next_instr = self.POP_JUMP_IF_FALSE(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_TRUE.index: next_instr = self.POP_JUMP_IF_TRUE(oparg, next_instr) elif opcode == opcodedesc.BINARY_ADD.index: self.BINARY_ADD(oparg, next_instr) elif opcode == opcodedesc.BINARY_AND.index: self.BINARY_AND(oparg, next_instr) elif opcode == opcodedesc.BINARY_DIVIDE.index: self.BINARY_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_FLOOR_DIVIDE.index: self.BINARY_FLOOR_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_LSHIFT.index: self.BINARY_LSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_MODULO.index: self.BINARY_MODULO(oparg, next_instr) elif opcode == opcodedesc.BINARY_MULTIPLY.index: self.BINARY_MULTIPLY(oparg, next_instr) elif opcode == opcodedesc.BINARY_OR.index: self.BINARY_OR(oparg, next_instr) elif opcode == opcodedesc.BINARY_POWER.index: self.BINARY_POWER(oparg, next_instr) elif opcode == opcodedesc.BINARY_RSHIFT.index: self.BINARY_RSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBSCR.index: self.BINARY_SUBSCR(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBTRACT.index: self.BINARY_SUBTRACT(oparg, next_instr) elif opcode == opcodedesc.BINARY_TRUE_DIVIDE.index: self.BINARY_TRUE_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_XOR.index: self.BINARY_XOR(oparg, next_instr) elif opcode == opcodedesc.BUILD_CLASS.index: self.BUILD_CLASS(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST.index: self.BUILD_LIST(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST_FROM_ARG.index: self.BUILD_LIST_FROM_ARG(oparg, next_instr) elif opcode == opcodedesc.BUILD_MAP.index: self.BUILD_MAP(oparg, next_instr) elif opcode == opcodedesc.BUILD_SET.index: self.BUILD_SET(oparg, next_instr) elif opcode == opcodedesc.BUILD_SLICE.index: self.BUILD_SLICE(oparg, next_instr) elif opcode == opcodedesc.BUILD_TUPLE.index: self.BUILD_TUPLE(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION.index: self.CALL_FUNCTION(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_KW.index: self.CALL_FUNCTION_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR.index: self.CALL_FUNCTION_VAR(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR_KW.index: self.CALL_FUNCTION_VAR_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_METHOD.index: > self.CALL_METHOD(oparg, next_instr) interpreter\pyopcode.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ f = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_include_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:593]', line 1> at line 5 oparg = 3, ignored = (18L,), n_args = 3, n_kwargs = 0, w_self = None @jit.unroll_safe def CALL_METHOD(f, oparg, *ignored): # opargs contains the arg, and kwarg count, excluding the implicit 'self' n_args = oparg & 0xff n_kwargs = (oparg >> 8) & 0xff w_self = f.peekvalue_maybe_none(n_args + (2 * n_kwargs)) n = n_args + (w_self is not None) if not n_kwargs: w_callable = f.peekvalue(n_args + (2 * n_kwargs) + 1) w_result = f.space.call_valuestack( > w_callable, n, f, methodcall=w_self is not None, dropvalues=n_args + 2) objspace\std\callmethod.py:96: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_include_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:593]', line 1> at line 5 dropvalues = 5, methodcall = False def call_valuestack(self, w_func, nargs, frame, dropvalues, methodcall=False): # methodcall is only used for better error messages in argument.py from pypy.interpreter.function import Function, Method, is_builtin_code if frame.get_is_being_profiled() and is_builtin_code(w_func): # XXX: this code is copied&pasted :-( from the slow path below # call_valuestack(). args = frame.make_arguments(nargs) frame.dropvalues(dropvalues) return self.call_args_and_c_profile(frame, w_func, args) if not self.config.objspace.disable_call_speedhacks: # start of hack for performance if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: w_func = w_func.w_function # reuse callable stack place for w_inst frame.settopvalue(w_inst, nargs) nargs += 1 methodcall = True elif nargs > 0 and ( self.abstract_isinstance_w(frame.peekvalue(nargs-1), # :-( w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): return w_func.funccall_valuestack( > nargs, frame, methodcall=methodcall, dropvalues=dropvalues) interpreter\baseobjspace.py:1243: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_include_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:593]', line 1> at line 5 dropvalues = 5, methodcall = False def funccall_valuestack(self, nargs, frame, dropvalues, methodcall=False): # speed hack # methodcall is only for better error messages from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit # if (jit.we_are_jitted() and code is self.space._code_of_sys_exc_info and nargs == 0): frame.dropvalues(dropvalues) from pypy.module.sys.vm import exc_info_direct return exc_info_direct(self.space, frame) # fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: f_0 = frame.peekvalue(0) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, f_0) elif nargs == 2: f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, f_1, f_0) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) frame.dropvalues(dropvalues) return code.fastcall_3(self.space, self, f_2, f_1, f_0) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) f_3 = frame.peekvalue(3) frame.dropvalues(dropvalues) return code.fastcall_4(self.space, self, f_3, f_2, f_1, f_0) elif (nargs | Code.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) return self._flat_pycall(code, nargs, frame, dropvalues) elif fast_natural_arity & Code.FLATPYCALL: natural_arity = fast_natural_arity & 0xff if natural_arity > nargs >= natural_arity - len(self.defs_w): assert isinstance(code, PyCode) return self._flat_pycall_defaults(code, nargs, frame, natural_arity - nargs, dropvalues) elif fast_natural_arity == Code.PASSTHROUGHARGS1 and nargs >= 1: assert isinstance(code, gateway.BuiltinCodePassThroughArguments1) w_obj = frame.peekvalue(nargs-1) args = frame.make_arguments(nargs-1) frame.dropvalues(dropvalues) return code.funcrun_obj(self, w_obj, args) args = frame.make_arguments(nargs, methodcall=methodcall) frame.dropvalues(dropvalues) > return self.call_args(args) interpreter\function.py:190: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('int foo1(int);'), W_BytesObject('test_include_1b_parent'), W_BytesObject('int foo1(int x) { return x + 10; }')]) def call_args(self, args): # delegate activation to code > w_res = self.getcode().funcrun(self, args) interpreter\function.py:68: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('int foo1(int);'), W_BytesObject('test_include_1b_parent'), W_BytesObject('int foo1(int x) { return x + 10; }')]) def funcrun(self, func, args): > return BuiltinCode.funcrun_obj(self, func, None, args) interpreter\gateway.py:781: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('int foo1(int);'), W_BytesObject('test_include_1b_parent'), W_BytesObject('int foo1(int x) { return x + 10; }')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: w_result = activation._run(space, scope_w) except DescrMismatch: if w_obj is not None: args = args.prepend(w_obj) return self._type_unwrap_mismatch(space, args) except Exception as e: > self.handle_exception(space, e) interpreter\gateway.py:795: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> space = StdObjSpace e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def handle_exception(self, space, e): try: if not we_are_translated(): raise raise e except OperationError: raise except Exception as e: # general fall-back from pypy.interpreter import error > raise error.get_converted_unexpected_exception(space, e) interpreter\gateway.py:819: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('int foo1(int);'), W_BytesObject('test_include_1b_parent'), W_BytesObject('int foo1(int x) { return x + 10; }')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: > w_result = activation._run(space, scope_w) interpreter\gateway.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinActivation_UwS_ObjSpace_text_text_text_W_Root_W_Root_W_Root_int_W_Root object at 0x000002791c13af38> space = StdObjSpace scope_w = [W_BytesObject('int foo1(int);'), W_BytesObject('test_include_1b_parent'), W_BytesObject('int foo1(int x) { return x + 10; }'), None, None, None, ...] def _run(self, space, scope_w): > return self.behavior(space, space.text_w(scope_w[0]), space.text_w(scope_w[1]), space.text_w(scope_w[2]), scope_w[3], scope_w[4], scope_w[5], space.gateway_int_w(scope_w[6]), scope_w[7]) <3152-codegen d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\rpython\tool\sourcetools.py:200>:3: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace, cdef = 'int foo1(int);' module_name = '_CFFI_test_include_1b_parent' source = 'int foo1(int x) { return x + 10; }', w_includes = None w_extra_source = None, w_min_version = None, packed = 0 w_extra_compile_args = None @unwrap_spec(cdef='text', module_name='text', source='text', packed=int) def prepare(space, cdef, module_name, source, w_includes=None, w_extra_source=None, w_min_version=None, packed=False, w_extra_compile_args=None): try: import cffi from cffi import FFI # <== the system one, which from cffi import recompiler # needs to be at least cffi 1.0.4 from cffi import ffiplatform except ImportError: pytest.skip("system cffi module not found or older than 1.0.0") if w_min_version is None: min_version = (1, 4, 0) else: min_version = tuple(space.unwrap(w_min_version)) if cffi.__version_info__ < min_version: pytest.skip("system cffi module needs to be at least %s, got %s" % ( min_version, cffi.__version_info__)) space.appexec([], """(): import _cffi_backend # force it to be initialized """) includes = [] if w_includes: includes += space.unpackiterable(w_includes) assert module_name.startswith('test_') module_name = '_CFFI_' + module_name rdir = udir.ensure('recompiler', dir=1) rdir.join('Python.h').write( '#include <stdio.h>\n' '#define PYPY_VERSION XX\n' '#define PyMODINIT_FUNC /*exported*/ void\n' ) path = module_name.replace('.', os.sep) if '.' in module_name: subrdir = rdir.join(module_name[:module_name.index('.')]) os.mkdir(str(subrdir)) else: subrdir = rdir c_file = str(rdir.join('%s.c' % path)) ffi = FFI() for include_ffi_object in includes: ffi.include(include_ffi_object._test_recompiler_source_ffi) ffi.cdef(cdef, packed=packed) ffi.set_source(module_name, source) ffi.emit_c_code(c_file) base_module_name = module_name.split('.')[-1] sources = [] if w_extra_source is not None: sources.append(space.str_w(w_extra_source)) kwargs = {} # GCC 14 promotes -Wincompatible-pointer-types from a warning to an error # by default, which breaks cffi's intentionally-mismatched field-check # probes (e.g. test_misdeclared_field_1). Keep it a warning so the module # compiles and cffi's runtime checks can run. extra = ['-Wno-error=incompatible-pointer-types'] if w_extra_compile_args is not None: extra = extra + space.unwrap(w_extra_compile_args) kwargs['extra_compile_args'] = extra ext = ffiplatform.get_extension(c_file, module_name, include_dirs=[str(rdir)], export_symbols=['_cffi_pypyinit_' + base_module_name], sources=sources, **kwargs) > ffiplatform.compile(str(rdir), ext) module\_cffi_backend\test\test_recompiler.py:86: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x00000279281cbd60> compiler_verbose = 0, debug = None def compile(tmpdir, ext, compiler_verbose=0, debug=None): """Compile a C extension module using distutils.""" saved_environ = os.environ.copy() try: > outputfilename = _build(tmpdir, ext, compiler_verbose, debug) d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x00000279281cbd60> compiler_verbose = 0, debug = 0 def _build(tmpdir, ext, compiler_verbose=0, debug=None): # XXX compact but horrible :-( from cffi._shimmed_dist_utils import Distribution, CompileError, LinkError, set_threshold, set_verbosity dist = Distribution({'ext_modules': [ext]}) dist.parse_config_files() options = dist.get_option_dict('build_ext') if debug is None: debug = sys.flags.debug options['debug'] = ('ffiplatform', debug) options['force'] = ('ffiplatform', True) options['build_lib'] = ('ffiplatform', tmpdir) options['build_temp'] = ('ffiplatform', tmpdir) # try: old_level = set_threshold(0) or 0 try: set_verbosity(compiler_verbose) dist.run_command('build_ext') cmd_obj = dist.get_command_obj('build_ext') [soname] = cmd_obj.get_outputs() finally: set_threshold(old_level) except (CompileError, LinkError) as e: > raise VerificationError('%s: %s' % (e.__class__.__name__, e)) E VerificationError: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2 d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:54: VerificationError ---------------------------- Captured stdout call ----------------------------- generating d:\systemtemp\pytest\usession-main-595\recompiler\_CFFI_test_include_1b_parent.c ---------------------------- Captured stderr call ----------------------------- cl : Command line error D8021 : invalid numeric argument '/Wno-error=incompatible-pointer-types' ______________________ AppTestRecompiler.test_include_2 _______________________ self = <CallInfo when='call' exception: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2> func = <function <lambda> at 0x00000279270c5a60>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ..\_pytest\runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ..\_pytest\runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_include_2'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_include_2'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ..\_pytest\vendored_packages\pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00000279153616a8> hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_include_2'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_include_2'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ..\_pytest\vendored_packages\pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_include_2'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_include_2'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ..\_pytest\vendored_packages\pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_include_2'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791a9cb8d0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i..._include_2'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027925659b20> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027925659b20> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i..._include_2'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_include_2'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791a9cb880> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i..._include_2'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027925659ae0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027925659ae0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i..._include_2'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_include_2'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ..\_pytest\vendored_packages\pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_include_2'> def pytest_runtest_call(item): try: > item.runtest() ..\_pytest\runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_include_2'> def runtest(self): target = self.obj if self.config.option.runappdirect: return target() space = target.im_self.space filename = self._getdynfilename(target) func = app2interp_temp(target.im_func, filename=filename) w_instance = self.parent.w_instance > self.execute_appex(space, func, space, w_instance) tool\pytest\apptest.py:89: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_include_2'>, space = StdObjSpace target = <function test_include_2 at 0x00000279270c5c40> args = (StdObjSpace, <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>) def execute_appex(self, space, target, *args): self.space = space try: > target(*args) tool\pytest\apptest.py:30: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) w_func = <Function test_include_2> args = <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8> def appcaller(space, *args_w): if not isinstance(space, ObjSpace): raise TypeError("first argument must be a space instance.") # the last argument can be an Arguments w_func = self.wget(space, name) if not args_w: return space.call_function(w_func) else: args = args_w[-1] assert args is not None if not isinstance(args, Arguments): > return space.call_function(w_func, *args_w) interpreter\gateway.py:1227: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <Function test_include_2> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) nargs = 1, Function = <class 'pypy.interpreter.function.Function'> Method = <class 'pypy.interpreter.function.Method'> def call_function(self, w_func, *args_w): nargs = len(args_w) # used for pruning funccall versions if not self.config.objspace.disable_call_speedhacks and nargs < 5: # start of hack for performance from pypy.interpreter.function import Function, Method if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: if nargs < 4: func = w_func.w_function if isinstance(func, Function): return func.funccall(w_inst, *args_w) elif args_w and ( self.abstract_isinstance_w(args_w[0], w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): > return w_func.funccall(*args_w) interpreter\baseobjspace.py:1210: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <Function test_include_2> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) gateway = <module 'pypy.interpreter.gateway' from 'd:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\interpreter\\gateway.pyc'> PyCode = <class 'pypy.interpreter.pycode.PyCode'> code = <code object test_include_2, file '[d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:607]', line 1> def funccall(self, *args_w): # speed hack from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit nargs = len(args_w) fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, args_w[0]) elif nargs == 2: assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, args_w[0], args_w[1]) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) return code.fastcall_3(self.space, self, args_w[0], args_w[1], args_w[2]) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) return code.fastcall_4(self.space, self, args_w[0], args_w[1], args_w[2], args_w[3]) elif (nargs | PyCode.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) if nargs < 5: new_frame = self.space.createframe(code, self.w_func_globals, self) for i in funccallunrolling: if i < nargs: new_frame.locals_cells_stack_w[i] = args_w[i] > return new_frame.run() interpreter\function.py:118: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_include_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:607]', line 1> at line 5 def run(self): """Start this frame's execution.""" if self.getcode().co_flags & pycode.CO_GENERATOR: from pypy.interpreter.generator import GeneratorIterator return GeneratorIterator(self) else: > return self.execute_frame() interpreter\pyframe.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_include_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:607]', line 1> at line 5 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, executioncontext) except OperationError: raise except Exception as e: # general fall-back > raise self._convert_unexpected_exception(e) interpreter\pyframe.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_include_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:607]', line 1> at line 5 e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def _convert_unexpected_exception(self, e): from pypy.interpreter import error > operr = error.get_converted_unexpected_exception(self.space, e) interpreter\pyframe.py:943: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_include_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:607]', line 1> at line 5 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, > executioncontext) interpreter\pyframe.py:286: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_include_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:607]', line 1> at line 5 pycode = <code object test_include_2, file '[d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:607]', line 1> next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def dispatch(self, pycode, next_instr, ec): # For the sequel, force 'next_instr' to be unsigned for performance next_instr = r_uint(next_instr) co_code = pycode.co_code try: while True: > next_instr = self.handle_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:64: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_include_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:607]', line 1> at line 5 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x01\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00|\x00\x00\xc9\x00\x00d\x03\x0...c9\x05\x00d\n\x00\xca\x01\x00|\x03\x00\xc9\x05\x00d\n\x00\xca\x01\x00k\x08\x00s\xba\x00t\x04\x00\x82\x01\x00d\x00\x00S' next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def handle_bytecode(self, co_code, next_instr, ec): try: > next_instr = self.dispatch_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:71: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_include_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:607]', line 1> at line 5 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x01\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00|\x00\x00\xc9\x00\x00d\x03\x0...c9\x05\x00d\n\x00\xca\x01\x00|\x03\x00\xc9\x05\x00d\n\x00\xca\x01\x00k\x08\x00s\xba\x00t\x04\x00\x82\x01\x00d\x00\x00S' next_instr = 18L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> @jit.unroll_safe def dispatch_bytecode(self, co_code, next_instr, ec): while True: self.last_instr = intmask(next_instr) if jit.we_are_jitted(): if self.debugdata: ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) else: # Only reload next_instr from last_instr when something that # can modify it actually ran (trace function or action # dispatcher). In the common case (no trace, positive ticker) # next_instr is unchanged and the round-trip is skipped. _d = self.debugdata if ec.space.reverse_debugging or ( _d is not None and _d.w_f_trace is not None) or ( not we_are_translated() and 'bytecode_only_trace' in ec.__dict__): ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) actionflag = ec.space.actionflag if actionflag.decrement_ticker(TICK_COUNTER_STEP) < 0: actionflag.action_dispatcher(ec, self) next_instr = r_uint(self.last_instr) opcode = ord(co_code[next_instr]) next_instr += 1 if opcode >= HAVE_ARGUMENT: lo = ord(co_code[next_instr]) hi = ord(co_code[next_instr+1]) next_instr += 2 oparg = (hi * 256) | lo else: oparg = 0 # note: the structure of the code here is such that it makes # (after translation) a big "if/elif" chain, which is then # turned into a switch(). while opcode == opcodedesc.EXTENDED_ARG.index: opcode = ord(co_code[next_instr]) if opcode < HAVE_ARGUMENT: raise BytecodeCorruption lo = ord(co_code[next_instr+1]) hi = ord(co_code[next_instr+2]) next_instr += 3 oparg = (oparg * 65536) | (hi * 256) | lo if opcode == opcodedesc.RETURN_VALUE.index: if not self.blockstack_non_empty(): self.frame_finished_execution = True # for generators raise Return w_returnvalue = self.popvalue() block = self.unrollstack(SReturnValue.kind) if block is None: self.pushvalue(w_returnvalue) raise Return else: unroller = SReturnValue(w_returnvalue) next_instr = block.handle(self, unroller) return next_instr # now inside a 'finally' block elif opcode == opcodedesc.END_FINALLY.index: unroller = self.end_finally() if isinstance(unroller, SuspendedUnroller): # go on unrolling the stack block = self.unrollstack(unroller.kind) if block is None: w_result = unroller.nomoreblocks() self.pushvalue(w_result) raise Return else: next_instr = block.handle(self, unroller) return next_instr elif opcode == opcodedesc.JUMP_ABSOLUTE.index: return self.jump_absolute(oparg, ec) elif opcode == opcodedesc.BREAK_LOOP.index: next_instr = self.BREAK_LOOP(oparg, next_instr) elif opcode == opcodedesc.CONTINUE_LOOP.index: return self.CONTINUE_LOOP(oparg, next_instr) elif opcode == opcodedesc.FOR_ITER.index: next_instr = self.FOR_ITER(oparg, next_instr) elif opcode == opcodedesc.JUMP_FORWARD.index: next_instr = self.JUMP_FORWARD(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_FALSE_OR_POP.index: next_instr = self.JUMP_IF_FALSE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_NOT_DEBUG.index: next_instr = self.JUMP_IF_NOT_DEBUG(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_TRUE_OR_POP.index: next_instr = self.JUMP_IF_TRUE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_FALSE.index: next_instr = self.POP_JUMP_IF_FALSE(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_TRUE.index: next_instr = self.POP_JUMP_IF_TRUE(oparg, next_instr) elif opcode == opcodedesc.BINARY_ADD.index: self.BINARY_ADD(oparg, next_instr) elif opcode == opcodedesc.BINARY_AND.index: self.BINARY_AND(oparg, next_instr) elif opcode == opcodedesc.BINARY_DIVIDE.index: self.BINARY_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_FLOOR_DIVIDE.index: self.BINARY_FLOOR_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_LSHIFT.index: self.BINARY_LSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_MODULO.index: self.BINARY_MODULO(oparg, next_instr) elif opcode == opcodedesc.BINARY_MULTIPLY.index: self.BINARY_MULTIPLY(oparg, next_instr) elif opcode == opcodedesc.BINARY_OR.index: self.BINARY_OR(oparg, next_instr) elif opcode == opcodedesc.BINARY_POWER.index: self.BINARY_POWER(oparg, next_instr) elif opcode == opcodedesc.BINARY_RSHIFT.index: self.BINARY_RSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBSCR.index: self.BINARY_SUBSCR(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBTRACT.index: self.BINARY_SUBTRACT(oparg, next_instr) elif opcode == opcodedesc.BINARY_TRUE_DIVIDE.index: self.BINARY_TRUE_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_XOR.index: self.BINARY_XOR(oparg, next_instr) elif opcode == opcodedesc.BUILD_CLASS.index: self.BUILD_CLASS(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST.index: self.BUILD_LIST(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST_FROM_ARG.index: self.BUILD_LIST_FROM_ARG(oparg, next_instr) elif opcode == opcodedesc.BUILD_MAP.index: self.BUILD_MAP(oparg, next_instr) elif opcode == opcodedesc.BUILD_SET.index: self.BUILD_SET(oparg, next_instr) elif opcode == opcodedesc.BUILD_SLICE.index: self.BUILD_SLICE(oparg, next_instr) elif opcode == opcodedesc.BUILD_TUPLE.index: self.BUILD_TUPLE(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION.index: self.CALL_FUNCTION(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_KW.index: self.CALL_FUNCTION_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR.index: self.CALL_FUNCTION_VAR(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR_KW.index: self.CALL_FUNCTION_VAR_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_METHOD.index: > self.CALL_METHOD(oparg, next_instr) interpreter\pyopcode.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ f = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_include_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:607]', line 1> at line 5 oparg = 3, ignored = (18L,), n_args = 3, n_kwargs = 0, w_self = None @jit.unroll_safe def CALL_METHOD(f, oparg, *ignored): # opargs contains the arg, and kwarg count, excluding the implicit 'self' n_args = oparg & 0xff n_kwargs = (oparg >> 8) & 0xff w_self = f.peekvalue_maybe_none(n_args + (2 * n_kwargs)) n = n_args + (w_self is not None) if not n_kwargs: w_callable = f.peekvalue(n_args + (2 * n_kwargs) + 1) w_result = f.space.call_valuestack( > w_callable, n, f, methodcall=w_self is not None, dropvalues=n_args + 2) objspace\std\callmethod.py:96: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_include_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:607]', line 1> at line 5 dropvalues = 5, methodcall = False def call_valuestack(self, w_func, nargs, frame, dropvalues, methodcall=False): # methodcall is only used for better error messages in argument.py from pypy.interpreter.function import Function, Method, is_builtin_code if frame.get_is_being_profiled() and is_builtin_code(w_func): # XXX: this code is copied&pasted :-( from the slow path below # call_valuestack(). args = frame.make_arguments(nargs) frame.dropvalues(dropvalues) return self.call_args_and_c_profile(frame, w_func, args) if not self.config.objspace.disable_call_speedhacks: # start of hack for performance if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: w_func = w_func.w_function # reuse callable stack place for w_inst frame.settopvalue(w_inst, nargs) nargs += 1 methodcall = True elif nargs > 0 and ( self.abstract_isinstance_w(frame.peekvalue(nargs-1), # :-( w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): return w_func.funccall_valuestack( > nargs, frame, methodcall=methodcall, dropvalues=dropvalues) interpreter\baseobjspace.py:1243: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_include_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:607]', line 1> at line 5 dropvalues = 5, methodcall = False def funccall_valuestack(self, nargs, frame, dropvalues, methodcall=False): # speed hack # methodcall is only for better error messages from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit # if (jit.we_are_jitted() and code is self.space._code_of_sys_exc_info and nargs == 0): frame.dropvalues(dropvalues) from pypy.module.sys.vm import exc_info_direct return exc_info_direct(self.space, frame) # fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: f_0 = frame.peekvalue(0) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, f_0) elif nargs == 2: f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, f_1, f_0) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) frame.dropvalues(dropvalues) return code.fastcall_3(self.space, self, f_2, f_1, f_0) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) f_3 = frame.peekvalue(3) frame.dropvalues(dropvalues) return code.fastcall_4(self.space, self, f_3, f_2, f_1, f_0) elif (nargs | Code.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) return self._flat_pycall(code, nargs, frame, dropvalues) elif fast_natural_arity & Code.FLATPYCALL: natural_arity = fast_natural_arity & 0xff if natural_arity > nargs >= natural_arity - len(self.defs_w): assert isinstance(code, PyCode) return self._flat_pycall_defaults(code, nargs, frame, natural_arity - nargs, dropvalues) elif fast_natural_arity == Code.PASSTHROUGHARGS1 and nargs >= 1: assert isinstance(code, gateway.BuiltinCodePassThroughArguments1) w_obj = frame.peekvalue(nargs-1) args = frame.make_arguments(nargs-1) frame.dropvalues(dropvalues) return code.funcrun_obj(self, w_obj, args) args = frame.make_arguments(nargs, methodcall=methodcall) frame.dropvalues(dropvalues) > return self.call_args(args) interpreter\function.py:190: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('struct foo_s { int x, y; };'), W_BytesObject('test_include_2_parent'), W_BytesObject('struct foo_s { int x, y; };')]) def call_args(self, args): # delegate activation to code > w_res = self.getcode().funcrun(self, args) interpreter\function.py:68: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('struct foo_s { int x, y; };'), W_BytesObject('test_include_2_parent'), W_BytesObject('struct foo_s { int x, y; };')]) def funcrun(self, func, args): > return BuiltinCode.funcrun_obj(self, func, None, args) interpreter\gateway.py:781: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('struct foo_s { int x, y; };'), W_BytesObject('test_include_2_parent'), W_BytesObject('struct foo_s { int x, y; };')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: w_result = activation._run(space, scope_w) except DescrMismatch: if w_obj is not None: args = args.prepend(w_obj) return self._type_unwrap_mismatch(space, args) except Exception as e: > self.handle_exception(space, e) interpreter\gateway.py:795: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> space = StdObjSpace e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def handle_exception(self, space, e): try: if not we_are_translated(): raise raise e except OperationError: raise except Exception as e: # general fall-back from pypy.interpreter import error > raise error.get_converted_unexpected_exception(space, e) interpreter\gateway.py:819: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('struct foo_s { int x, y; };'), W_BytesObject('test_include_2_parent'), W_BytesObject('struct foo_s { int x, y; };')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: > w_result = activation._run(space, scope_w) interpreter\gateway.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinActivation_UwS_ObjSpace_text_text_text_W_Root_W_Root_W_Root_int_W_Root object at 0x000002791c13af38> space = StdObjSpace scope_w = [W_BytesObject('struct foo_s { int x, y; };'), W_BytesObject('test_include_2_parent'), W_BytesObject('struct foo_s { int x, y; };'), None, None, None, ...] def _run(self, space, scope_w): > return self.behavior(space, space.text_w(scope_w[0]), space.text_w(scope_w[1]), space.text_w(scope_w[2]), scope_w[3], scope_w[4], scope_w[5], space.gateway_int_w(scope_w[6]), scope_w[7]) <3152-codegen d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\rpython\tool\sourcetools.py:200>:3: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace, cdef = 'struct foo_s { int x, y; };' module_name = '_CFFI_test_include_2_parent' source = 'struct foo_s { int x, y; };', w_includes = None, w_extra_source = None w_min_version = None, packed = 0, w_extra_compile_args = None @unwrap_spec(cdef='text', module_name='text', source='text', packed=int) def prepare(space, cdef, module_name, source, w_includes=None, w_extra_source=None, w_min_version=None, packed=False, w_extra_compile_args=None): try: import cffi from cffi import FFI # <== the system one, which from cffi import recompiler # needs to be at least cffi 1.0.4 from cffi import ffiplatform except ImportError: pytest.skip("system cffi module not found or older than 1.0.0") if w_min_version is None: min_version = (1, 4, 0) else: min_version = tuple(space.unwrap(w_min_version)) if cffi.__version_info__ < min_version: pytest.skip("system cffi module needs to be at least %s, got %s" % ( min_version, cffi.__version_info__)) space.appexec([], """(): import _cffi_backend # force it to be initialized """) includes = [] if w_includes: includes += space.unpackiterable(w_includes) assert module_name.startswith('test_') module_name = '_CFFI_' + module_name rdir = udir.ensure('recompiler', dir=1) rdir.join('Python.h').write( '#include <stdio.h>\n' '#define PYPY_VERSION XX\n' '#define PyMODINIT_FUNC /*exported*/ void\n' ) path = module_name.replace('.', os.sep) if '.' in module_name: subrdir = rdir.join(module_name[:module_name.index('.')]) os.mkdir(str(subrdir)) else: subrdir = rdir c_file = str(rdir.join('%s.c' % path)) ffi = FFI() for include_ffi_object in includes: ffi.include(include_ffi_object._test_recompiler_source_ffi) ffi.cdef(cdef, packed=packed) ffi.set_source(module_name, source) ffi.emit_c_code(c_file) base_module_name = module_name.split('.')[-1] sources = [] if w_extra_source is not None: sources.append(space.str_w(w_extra_source)) kwargs = {} # GCC 14 promotes -Wincompatible-pointer-types from a warning to an error # by default, which breaks cffi's intentionally-mismatched field-check # probes (e.g. test_misdeclared_field_1). Keep it a warning so the module # compiles and cffi's runtime checks can run. extra = ['-Wno-error=incompatible-pointer-types'] if w_extra_compile_args is not None: extra = extra + space.unwrap(w_extra_compile_args) kwargs['extra_compile_args'] = extra ext = ffiplatform.get_extension(c_file, module_name, include_dirs=[str(rdir)], export_symbols=['_cffi_pypyinit_' + base_module_name], sources=sources, **kwargs) > ffiplatform.compile(str(rdir), ext) module\_cffi_backend\test\test_recompiler.py:86: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x000002792564b2a0> compiler_verbose = 0, debug = None def compile(tmpdir, ext, compiler_verbose=0, debug=None): """Compile a C extension module using distutils.""" saved_environ = os.environ.copy() try: > outputfilename = _build(tmpdir, ext, compiler_verbose, debug) d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x000002792564b2a0> compiler_verbose = 0, debug = 0 def _build(tmpdir, ext, compiler_verbose=0, debug=None): # XXX compact but horrible :-( from cffi._shimmed_dist_utils import Distribution, CompileError, LinkError, set_threshold, set_verbosity dist = Distribution({'ext_modules': [ext]}) dist.parse_config_files() options = dist.get_option_dict('build_ext') if debug is None: debug = sys.flags.debug options['debug'] = ('ffiplatform', debug) options['force'] = ('ffiplatform', True) options['build_lib'] = ('ffiplatform', tmpdir) options['build_temp'] = ('ffiplatform', tmpdir) # try: old_level = set_threshold(0) or 0 try: set_verbosity(compiler_verbose) dist.run_command('build_ext') cmd_obj = dist.get_command_obj('build_ext') [soname] = cmd_obj.get_outputs() finally: set_threshold(old_level) except (CompileError, LinkError) as e: > raise VerificationError('%s: %s' % (e.__class__.__name__, e)) E VerificationError: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2 d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:54: VerificationError ---------------------------- Captured stdout call ----------------------------- generating d:\systemtemp\pytest\usession-main-595\recompiler\_CFFI_test_include_2_parent.c ---------------------------- Captured stderr call ----------------------------- cl : Command line error D8021 : invalid numeric argument '/Wno-error=incompatible-pointer-types' ______________________ AppTestRecompiler.test_include_3 _______________________ self = <CallInfo when='call' exception: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2> func = <function <lambda> at 0x000002791b36c200>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ..\_pytest\runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ..\_pytest\runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_include_3'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_include_3'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ..\_pytest\vendored_packages\pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00000279153616a8> hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_include_3'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_include_3'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ..\_pytest\vendored_packages\pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_include_3'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_include_3'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ..\_pytest\vendored_packages\pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_include_3'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791e2b4cf0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i..._include_3'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027924b080e0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027924b080e0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i..._include_3'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_include_3'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791e2b4c00> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i..._include_3'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027924b080a0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027924b080a0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i..._include_3'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_include_3'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ..\_pytest\vendored_packages\pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_include_3'> def pytest_runtest_call(item): try: > item.runtest() ..\_pytest\runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_include_3'> def runtest(self): target = self.obj if self.config.option.runappdirect: return target() space = target.im_self.space filename = self._getdynfilename(target) func = app2interp_temp(target.im_func, filename=filename) w_instance = self.parent.w_instance > self.execute_appex(space, func, space, w_instance) tool\pytest\apptest.py:89: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_include_3'>, space = StdObjSpace target = <function test_include_3 at 0x000002791b36ca70> args = (StdObjSpace, <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>) def execute_appex(self, space, target, *args): self.space = space try: > target(*args) tool\pytest\apptest.py:30: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) w_func = <Function test_include_3> args = <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8> def appcaller(space, *args_w): if not isinstance(space, ObjSpace): raise TypeError("first argument must be a space instance.") # the last argument can be an Arguments w_func = self.wget(space, name) if not args_w: return space.call_function(w_func) else: args = args_w[-1] assert args is not None if not isinstance(args, Arguments): > return space.call_function(w_func, *args_w) interpreter\gateway.py:1227: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <Function test_include_3> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) nargs = 1, Function = <class 'pypy.interpreter.function.Function'> Method = <class 'pypy.interpreter.function.Method'> def call_function(self, w_func, *args_w): nargs = len(args_w) # used for pruning funccall versions if not self.config.objspace.disable_call_speedhacks and nargs < 5: # start of hack for performance from pypy.interpreter.function import Function, Method if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: if nargs < 4: func = w_func.w_function if isinstance(func, Function): return func.funccall(w_inst, *args_w) elif args_w and ( self.abstract_isinstance_w(args_w[0], w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): > return w_func.funccall(*args_w) interpreter\baseobjspace.py:1210: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <Function test_include_3> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) gateway = <module 'pypy.interpreter.gateway' from 'd:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\interpreter\\gateway.pyc'> PyCode = <class 'pypy.interpreter.pycode.PyCode'> code = <code object test_include_3, file '[d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:625]', line 1> def funccall(self, *args_w): # speed hack from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit nargs = len(args_w) fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, args_w[0]) elif nargs == 2: assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, args_w[0], args_w[1]) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) return code.fastcall_3(self.space, self, args_w[0], args_w[1], args_w[2]) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) return code.fastcall_4(self.space, self, args_w[0], args_w[1], args_w[2], args_w[3]) elif (nargs | PyCode.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) if nargs < 5: new_frame = self.space.createframe(code, self.w_func_globals, self) for i in funccallunrolling: if i < nargs: new_frame.locals_cells_stack_w[i] = args_w[i] > return new_frame.run() interpreter\function.py:118: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_include_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:625]', line 1> at line 5 def run(self): """Start this frame's execution.""" if self.getcode().co_flags & pycode.CO_GENERATOR: from pypy.interpreter.generator import GeneratorIterator return GeneratorIterator(self) else: > return self.execute_frame() interpreter\pyframe.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_include_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:625]', line 1> at line 5 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, executioncontext) except OperationError: raise except Exception as e: # general fall-back > raise self._convert_unexpected_exception(e) interpreter\pyframe.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_include_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:625]', line 1> at line 5 e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def _convert_unexpected_exception(self, e): from pypy.interpreter import error > operr = error.get_converted_unexpected_exception(self.space, e) interpreter\pyframe.py:943: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_include_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:625]', line 1> at line 5 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, > executioncontext) interpreter\pyframe.py:286: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_include_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:625]', line 1> at line 5 pycode = <code object test_include_3, file '[d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:625]', line 1> next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def dispatch(self, pycode, next_instr, ec): # For the sequel, force 'next_instr' to be unsigned for performance next_instr = r_uint(next_instr) co_code = pycode.co_code try: while True: > next_instr = self.handle_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:64: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_include_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:625]', line 1> at line 5 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x01\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00|\x00\x00\xc9\x00\x00d\x03\x0...c9\x03\x00d\t\x00\xca\x01\x00|\x03\x00\xc9\x03\x00d\t\x00\xca\x01\x00k\x08\x00s\xb7\x00t\x02\x00\x82\x01\x00d\x00\x00S' next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def handle_bytecode(self, co_code, next_instr, ec): try: > next_instr = self.dispatch_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:71: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_include_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:625]', line 1> at line 5 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x01\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00|\x00\x00\xc9\x00\x00d\x03\x0...c9\x03\x00d\t\x00\xca\x01\x00|\x03\x00\xc9\x03\x00d\t\x00\xca\x01\x00k\x08\x00s\xb7\x00t\x02\x00\x82\x01\x00d\x00\x00S' next_instr = 18L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> @jit.unroll_safe def dispatch_bytecode(self, co_code, next_instr, ec): while True: self.last_instr = intmask(next_instr) if jit.we_are_jitted(): if self.debugdata: ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) else: # Only reload next_instr from last_instr when something that # can modify it actually ran (trace function or action # dispatcher). In the common case (no trace, positive ticker) # next_instr is unchanged and the round-trip is skipped. _d = self.debugdata if ec.space.reverse_debugging or ( _d is not None and _d.w_f_trace is not None) or ( not we_are_translated() and 'bytecode_only_trace' in ec.__dict__): ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) actionflag = ec.space.actionflag if actionflag.decrement_ticker(TICK_COUNTER_STEP) < 0: actionflag.action_dispatcher(ec, self) next_instr = r_uint(self.last_instr) opcode = ord(co_code[next_instr]) next_instr += 1 if opcode >= HAVE_ARGUMENT: lo = ord(co_code[next_instr]) hi = ord(co_code[next_instr+1]) next_instr += 2 oparg = (hi * 256) | lo else: oparg = 0 # note: the structure of the code here is such that it makes # (after translation) a big "if/elif" chain, which is then # turned into a switch(). while opcode == opcodedesc.EXTENDED_ARG.index: opcode = ord(co_code[next_instr]) if opcode < HAVE_ARGUMENT: raise BytecodeCorruption lo = ord(co_code[next_instr+1]) hi = ord(co_code[next_instr+2]) next_instr += 3 oparg = (oparg * 65536) | (hi * 256) | lo if opcode == opcodedesc.RETURN_VALUE.index: if not self.blockstack_non_empty(): self.frame_finished_execution = True # for generators raise Return w_returnvalue = self.popvalue() block = self.unrollstack(SReturnValue.kind) if block is None: self.pushvalue(w_returnvalue) raise Return else: unroller = SReturnValue(w_returnvalue) next_instr = block.handle(self, unroller) return next_instr # now inside a 'finally' block elif opcode == opcodedesc.END_FINALLY.index: unroller = self.end_finally() if isinstance(unroller, SuspendedUnroller): # go on unrolling the stack block = self.unrollstack(unroller.kind) if block is None: w_result = unroller.nomoreblocks() self.pushvalue(w_result) raise Return else: next_instr = block.handle(self, unroller) return next_instr elif opcode == opcodedesc.JUMP_ABSOLUTE.index: return self.jump_absolute(oparg, ec) elif opcode == opcodedesc.BREAK_LOOP.index: next_instr = self.BREAK_LOOP(oparg, next_instr) elif opcode == opcodedesc.CONTINUE_LOOP.index: return self.CONTINUE_LOOP(oparg, next_instr) elif opcode == opcodedesc.FOR_ITER.index: next_instr = self.FOR_ITER(oparg, next_instr) elif opcode == opcodedesc.JUMP_FORWARD.index: next_instr = self.JUMP_FORWARD(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_FALSE_OR_POP.index: next_instr = self.JUMP_IF_FALSE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_NOT_DEBUG.index: next_instr = self.JUMP_IF_NOT_DEBUG(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_TRUE_OR_POP.index: next_instr = self.JUMP_IF_TRUE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_FALSE.index: next_instr = self.POP_JUMP_IF_FALSE(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_TRUE.index: next_instr = self.POP_JUMP_IF_TRUE(oparg, next_instr) elif opcode == opcodedesc.BINARY_ADD.index: self.BINARY_ADD(oparg, next_instr) elif opcode == opcodedesc.BINARY_AND.index: self.BINARY_AND(oparg, next_instr) elif opcode == opcodedesc.BINARY_DIVIDE.index: self.BINARY_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_FLOOR_DIVIDE.index: self.BINARY_FLOOR_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_LSHIFT.index: self.BINARY_LSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_MODULO.index: self.BINARY_MODULO(oparg, next_instr) elif opcode == opcodedesc.BINARY_MULTIPLY.index: self.BINARY_MULTIPLY(oparg, next_instr) elif opcode == opcodedesc.BINARY_OR.index: self.BINARY_OR(oparg, next_instr) elif opcode == opcodedesc.BINARY_POWER.index: self.BINARY_POWER(oparg, next_instr) elif opcode == opcodedesc.BINARY_RSHIFT.index: self.BINARY_RSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBSCR.index: self.BINARY_SUBSCR(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBTRACT.index: self.BINARY_SUBTRACT(oparg, next_instr) elif opcode == opcodedesc.BINARY_TRUE_DIVIDE.index: self.BINARY_TRUE_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_XOR.index: self.BINARY_XOR(oparg, next_instr) elif opcode == opcodedesc.BUILD_CLASS.index: self.BUILD_CLASS(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST.index: self.BUILD_LIST(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST_FROM_ARG.index: self.BUILD_LIST_FROM_ARG(oparg, next_instr) elif opcode == opcodedesc.BUILD_MAP.index: self.BUILD_MAP(oparg, next_instr) elif opcode == opcodedesc.BUILD_SET.index: self.BUILD_SET(oparg, next_instr) elif opcode == opcodedesc.BUILD_SLICE.index: self.BUILD_SLICE(oparg, next_instr) elif opcode == opcodedesc.BUILD_TUPLE.index: self.BUILD_TUPLE(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION.index: self.CALL_FUNCTION(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_KW.index: self.CALL_FUNCTION_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR.index: self.CALL_FUNCTION_VAR(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR_KW.index: self.CALL_FUNCTION_VAR_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_METHOD.index: > self.CALL_METHOD(oparg, next_instr) interpreter\pyopcode.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ f = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_include_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:625]', line 1> at line 5 oparg = 3, ignored = (18L,), n_args = 3, n_kwargs = 0, w_self = None @jit.unroll_safe def CALL_METHOD(f, oparg, *ignored): # opargs contains the arg, and kwarg count, excluding the implicit 'self' n_args = oparg & 0xff n_kwargs = (oparg >> 8) & 0xff w_self = f.peekvalue_maybe_none(n_args + (2 * n_kwargs)) n = n_args + (w_self is not None) if not n_kwargs: w_callable = f.peekvalue(n_args + (2 * n_kwargs) + 1) w_result = f.space.call_valuestack( > w_callable, n, f, methodcall=w_self is not None, dropvalues=n_args + 2) objspace\std\callmethod.py:96: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_include_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:625]', line 1> at line 5 dropvalues = 5, methodcall = False def call_valuestack(self, w_func, nargs, frame, dropvalues, methodcall=False): # methodcall is only used for better error messages in argument.py from pypy.interpreter.function import Function, Method, is_builtin_code if frame.get_is_being_profiled() and is_builtin_code(w_func): # XXX: this code is copied&pasted :-( from the slow path below # call_valuestack(). args = frame.make_arguments(nargs) frame.dropvalues(dropvalues) return self.call_args_and_c_profile(frame, w_func, args) if not self.config.objspace.disable_call_speedhacks: # start of hack for performance if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: w_func = w_func.w_function # reuse callable stack place for w_inst frame.settopvalue(w_inst, nargs) nargs += 1 methodcall = True elif nargs > 0 and ( self.abstract_isinstance_w(frame.peekvalue(nargs-1), # :-( w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): return w_func.funccall_valuestack( > nargs, frame, methodcall=methodcall, dropvalues=dropvalues) interpreter\baseobjspace.py:1243: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_include_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:625]', line 1> at line 5 dropvalues = 5, methodcall = False def funccall_valuestack(self, nargs, frame, dropvalues, methodcall=False): # speed hack # methodcall is only for better error messages from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit # if (jit.we_are_jitted() and code is self.space._code_of_sys_exc_info and nargs == 0): frame.dropvalues(dropvalues) from pypy.module.sys.vm import exc_info_direct return exc_info_direct(self.space, frame) # fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: f_0 = frame.peekvalue(0) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, f_0) elif nargs == 2: f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, f_1, f_0) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) frame.dropvalues(dropvalues) return code.fastcall_3(self.space, self, f_2, f_1, f_0) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) f_3 = frame.peekvalue(3) frame.dropvalues(dropvalues) return code.fastcall_4(self.space, self, f_3, f_2, f_1, f_0) elif (nargs | Code.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) return self._flat_pycall(code, nargs, frame, dropvalues) elif fast_natural_arity & Code.FLATPYCALL: natural_arity = fast_natural_arity & 0xff if natural_arity > nargs >= natural_arity - len(self.defs_w): assert isinstance(code, PyCode) return self._flat_pycall_defaults(code, nargs, frame, natural_arity - nargs, dropvalues) elif fast_natural_arity == Code.PASSTHROUGHARGS1 and nargs >= 1: assert isinstance(code, gateway.BuiltinCodePassThroughArguments1) w_obj = frame.peekvalue(nargs-1) args = frame.make_arguments(nargs-1) frame.dropvalues(dropvalues) return code.funcrun_obj(self, w_obj, args) args = frame.make_arguments(nargs, methodcall=methodcall) frame.dropvalues(dropvalues) > return self.call_args(args) interpreter\function.py:190: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('typedef short sshort_t;'), W_BytesObject('test_include_3_parent'), W_BytesObject('typedef short sshort_t;')]) def call_args(self, args): # delegate activation to code > w_res = self.getcode().funcrun(self, args) interpreter\function.py:68: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('typedef short sshort_t;'), W_BytesObject('test_include_3_parent'), W_BytesObject('typedef short sshort_t;')]) def funcrun(self, func, args): > return BuiltinCode.funcrun_obj(self, func, None, args) interpreter\gateway.py:781: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('typedef short sshort_t;'), W_BytesObject('test_include_3_parent'), W_BytesObject('typedef short sshort_t;')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: w_result = activation._run(space, scope_w) except DescrMismatch: if w_obj is not None: args = args.prepend(w_obj) return self._type_unwrap_mismatch(space, args) except Exception as e: > self.handle_exception(space, e) interpreter\gateway.py:795: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> space = StdObjSpace e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def handle_exception(self, space, e): try: if not we_are_translated(): raise raise e except OperationError: raise except Exception as e: # general fall-back from pypy.interpreter import error > raise error.get_converted_unexpected_exception(space, e) interpreter\gateway.py:819: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('typedef short sshort_t;'), W_BytesObject('test_include_3_parent'), W_BytesObject('typedef short sshort_t;')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: > w_result = activation._run(space, scope_w) interpreter\gateway.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinActivation_UwS_ObjSpace_text_text_text_W_Root_W_Root_W_Root_int_W_Root object at 0x000002791c13af38> space = StdObjSpace scope_w = [W_BytesObject('typedef short sshort_t;'), W_BytesObject('test_include_3_parent'), W_BytesObject('typedef short sshort_t;'), None, None, None, ...] def _run(self, space, scope_w): > return self.behavior(space, space.text_w(scope_w[0]), space.text_w(scope_w[1]), space.text_w(scope_w[2]), scope_w[3], scope_w[4], scope_w[5], space.gateway_int_w(scope_w[6]), scope_w[7]) <3152-codegen d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\rpython\tool\sourcetools.py:200>:3: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace, cdef = 'typedef short sshort_t;' module_name = '_CFFI_test_include_3_parent', source = 'typedef short sshort_t;' w_includes = None, w_extra_source = None, w_min_version = None, packed = 0 w_extra_compile_args = None @unwrap_spec(cdef='text', module_name='text', source='text', packed=int) def prepare(space, cdef, module_name, source, w_includes=None, w_extra_source=None, w_min_version=None, packed=False, w_extra_compile_args=None): try: import cffi from cffi import FFI # <== the system one, which from cffi import recompiler # needs to be at least cffi 1.0.4 from cffi import ffiplatform except ImportError: pytest.skip("system cffi module not found or older than 1.0.0") if w_min_version is None: min_version = (1, 4, 0) else: min_version = tuple(space.unwrap(w_min_version)) if cffi.__version_info__ < min_version: pytest.skip("system cffi module needs to be at least %s, got %s" % ( min_version, cffi.__version_info__)) space.appexec([], """(): import _cffi_backend # force it to be initialized """) includes = [] if w_includes: includes += space.unpackiterable(w_includes) assert module_name.startswith('test_') module_name = '_CFFI_' + module_name rdir = udir.ensure('recompiler', dir=1) rdir.join('Python.h').write( '#include <stdio.h>\n' '#define PYPY_VERSION XX\n' '#define PyMODINIT_FUNC /*exported*/ void\n' ) path = module_name.replace('.', os.sep) if '.' in module_name: subrdir = rdir.join(module_name[:module_name.index('.')]) os.mkdir(str(subrdir)) else: subrdir = rdir c_file = str(rdir.join('%s.c' % path)) ffi = FFI() for include_ffi_object in includes: ffi.include(include_ffi_object._test_recompiler_source_ffi) ffi.cdef(cdef, packed=packed) ffi.set_source(module_name, source) ffi.emit_c_code(c_file) base_module_name = module_name.split('.')[-1] sources = [] if w_extra_source is not None: sources.append(space.str_w(w_extra_source)) kwargs = {} # GCC 14 promotes -Wincompatible-pointer-types from a warning to an error # by default, which breaks cffi's intentionally-mismatched field-check # probes (e.g. test_misdeclared_field_1). Keep it a warning so the module # compiles and cffi's runtime checks can run. extra = ['-Wno-error=incompatible-pointer-types'] if w_extra_compile_args is not None: extra = extra + space.unwrap(w_extra_compile_args) kwargs['extra_compile_args'] = extra ext = ffiplatform.get_extension(c_file, module_name, include_dirs=[str(rdir)], export_symbols=['_cffi_pypyinit_' + base_module_name], sources=sources, **kwargs) > ffiplatform.compile(str(rdir), ext) module\_cffi_backend\test\test_recompiler.py:86: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x0000027924b097a0> compiler_verbose = 0, debug = None def compile(tmpdir, ext, compiler_verbose=0, debug=None): """Compile a C extension module using distutils.""" saved_environ = os.environ.copy() try: > outputfilename = _build(tmpdir, ext, compiler_verbose, debug) d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x0000027924b097a0> compiler_verbose = 0, debug = 0 def _build(tmpdir, ext, compiler_verbose=0, debug=None): # XXX compact but horrible :-( from cffi._shimmed_dist_utils import Distribution, CompileError, LinkError, set_threshold, set_verbosity dist = Distribution({'ext_modules': [ext]}) dist.parse_config_files() options = dist.get_option_dict('build_ext') if debug is None: debug = sys.flags.debug options['debug'] = ('ffiplatform', debug) options['force'] = ('ffiplatform', True) options['build_lib'] = ('ffiplatform', tmpdir) options['build_temp'] = ('ffiplatform', tmpdir) # try: old_level = set_threshold(0) or 0 try: set_verbosity(compiler_verbose) dist.run_command('build_ext') cmd_obj = dist.get_command_obj('build_ext') [soname] = cmd_obj.get_outputs() finally: set_threshold(old_level) except (CompileError, LinkError) as e: > raise VerificationError('%s: %s' % (e.__class__.__name__, e)) E VerificationError: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2 d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:54: VerificationError ---------------------------- Captured stdout call ----------------------------- generating d:\systemtemp\pytest\usession-main-595\recompiler\_CFFI_test_include_3_parent.c ---------------------------- Captured stderr call ----------------------------- cl : Command line error D8021 : invalid numeric argument '/Wno-error=incompatible-pointer-types' ______________________ AppTestRecompiler.test_include_4 _______________________ self = <CallInfo when='call' exception: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2> func = <function <lambda> at 0x000002791c62cd40>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ..\_pytest\runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ..\_pytest\runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_include_4'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_include_4'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ..\_pytest\vendored_packages\pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00000279153616a8> hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_include_4'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_include_4'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ..\_pytest\vendored_packages\pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_include_4'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_include_4'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ..\_pytest\vendored_packages\pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_include_4'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002792ba45b00> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i..._include_4'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027928cff5a0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027928cff5a0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i..._include_4'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_include_4'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002792ba45ab0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i..._include_4'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027928cff560> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027928cff560> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i..._include_4'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_include_4'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ..\_pytest\vendored_packages\pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_include_4'> def pytest_runtest_call(item): try: > item.runtest() ..\_pytest\runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_include_4'> def runtest(self): target = self.obj if self.config.option.runappdirect: return target() space = target.im_self.space filename = self._getdynfilename(target) func = app2interp_temp(target.im_func, filename=filename) w_instance = self.parent.w_instance > self.execute_appex(space, func, space, w_instance) tool\pytest\apptest.py:89: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_include_4'>, space = StdObjSpace target = <function test_include_4 at 0x000002791c62d8f8> args = (StdObjSpace, <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>) def execute_appex(self, space, target, *args): self.space = space try: > target(*args) tool\pytest\apptest.py:30: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) w_func = <Function test_include_4> args = <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8> def appcaller(space, *args_w): if not isinstance(space, ObjSpace): raise TypeError("first argument must be a space instance.") # the last argument can be an Arguments w_func = self.wget(space, name) if not args_w: return space.call_function(w_func) else: args = args_w[-1] assert args is not None if not isinstance(args, Arguments): > return space.call_function(w_func, *args_w) interpreter\gateway.py:1227: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <Function test_include_4> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) nargs = 1, Function = <class 'pypy.interpreter.function.Function'> Method = <class 'pypy.interpreter.function.Method'> def call_function(self, w_func, *args_w): nargs = len(args_w) # used for pruning funccall versions if not self.config.objspace.disable_call_speedhacks and nargs < 5: # start of hack for performance from pypy.interpreter.function import Function, Method if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: if nargs < 4: func = w_func.w_function if isinstance(func, Function): return func.funccall(w_inst, *args_w) elif args_w and ( self.abstract_isinstance_w(args_w[0], w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): > return w_func.funccall(*args_w) interpreter\baseobjspace.py:1210: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <Function test_include_4> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) gateway = <module 'pypy.interpreter.gateway' from 'd:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\interpreter\\gateway.pyc'> PyCode = <class 'pypy.interpreter.pycode.PyCode'> code = <code object test_include_4, file '[d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:640]', line 1> def funccall(self, *args_w): # speed hack from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit nargs = len(args_w) fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, args_w[0]) elif nargs == 2: assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, args_w[0], args_w[1]) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) return code.fastcall_3(self.space, self, args_w[0], args_w[1], args_w[2]) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) return code.fastcall_4(self.space, self, args_w[0], args_w[1], args_w[2], args_w[3]) elif (nargs | PyCode.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) if nargs < 5: new_frame = self.space.createframe(code, self.w_func_globals, self) for i in funccallunrolling: if i < nargs: new_frame.locals_cells_stack_w[i] = args_w[i] > return new_frame.run() interpreter\function.py:118: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_include_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:640]', line 1> at line 5 def run(self): """Start this frame's execution.""" if self.getcode().co_flags & pycode.CO_GENERATOR: from pypy.interpreter.generator import GeneratorIterator return GeneratorIterator(self) else: > return self.execute_frame() interpreter\pyframe.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_include_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:640]', line 1> at line 5 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, executioncontext) except OperationError: raise except Exception as e: # general fall-back > raise self._convert_unexpected_exception(e) interpreter\pyframe.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_include_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:640]', line 1> at line 5 e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def _convert_unexpected_exception(self, e): from pypy.interpreter import error > operr = error.get_converted_unexpected_exception(self.space, e) interpreter\pyframe.py:943: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_include_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:640]', line 1> at line 5 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, > executioncontext) interpreter\pyframe.py:286: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_include_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:640]', line 1> at line 5 pycode = <code object test_include_4, file '[d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:640]', line 1> next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def dispatch(self, pycode, next_instr, ec): # For the sequel, force 'next_instr' to be unsigned for performance next_instr = r_uint(next_instr) co_code = pycode.co_code try: while True: > next_instr = self.handle_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:64: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_include_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:640]', line 1> at line 5 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x01\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00|\x00\x00\xc9\x00\x00d\x03\x0...c9\x05\x00d\n\x00\xca\x01\x00|\x03\x00\xc9\x05\x00d\n\x00\xca\x01\x00k\x08\x00s\xb7\x00t\x03\x00\x82\x01\x00d\x00\x00S' next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def handle_bytecode(self, co_code, next_instr, ec): try: > next_instr = self.dispatch_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:71: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_include_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:640]', line 1> at line 5 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x01\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00|\x00\x00\xc9\x00\x00d\x03\x0...c9\x05\x00d\n\x00\xca\x01\x00|\x03\x00\xc9\x05\x00d\n\x00\xca\x01\x00k\x08\x00s\xb7\x00t\x03\x00\x82\x01\x00d\x00\x00S' next_instr = 18L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> @jit.unroll_safe def dispatch_bytecode(self, co_code, next_instr, ec): while True: self.last_instr = intmask(next_instr) if jit.we_are_jitted(): if self.debugdata: ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) else: # Only reload next_instr from last_instr when something that # can modify it actually ran (trace function or action # dispatcher). In the common case (no trace, positive ticker) # next_instr is unchanged and the round-trip is skipped. _d = self.debugdata if ec.space.reverse_debugging or ( _d is not None and _d.w_f_trace is not None) or ( not we_are_translated() and 'bytecode_only_trace' in ec.__dict__): ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) actionflag = ec.space.actionflag if actionflag.decrement_ticker(TICK_COUNTER_STEP) < 0: actionflag.action_dispatcher(ec, self) next_instr = r_uint(self.last_instr) opcode = ord(co_code[next_instr]) next_instr += 1 if opcode >= HAVE_ARGUMENT: lo = ord(co_code[next_instr]) hi = ord(co_code[next_instr+1]) next_instr += 2 oparg = (hi * 256) | lo else: oparg = 0 # note: the structure of the code here is such that it makes # (after translation) a big "if/elif" chain, which is then # turned into a switch(). while opcode == opcodedesc.EXTENDED_ARG.index: opcode = ord(co_code[next_instr]) if opcode < HAVE_ARGUMENT: raise BytecodeCorruption lo = ord(co_code[next_instr+1]) hi = ord(co_code[next_instr+2]) next_instr += 3 oparg = (oparg * 65536) | (hi * 256) | lo if opcode == opcodedesc.RETURN_VALUE.index: if not self.blockstack_non_empty(): self.frame_finished_execution = True # for generators raise Return w_returnvalue = self.popvalue() block = self.unrollstack(SReturnValue.kind) if block is None: self.pushvalue(w_returnvalue) raise Return else: unroller = SReturnValue(w_returnvalue) next_instr = block.handle(self, unroller) return next_instr # now inside a 'finally' block elif opcode == opcodedesc.END_FINALLY.index: unroller = self.end_finally() if isinstance(unroller, SuspendedUnroller): # go on unrolling the stack block = self.unrollstack(unroller.kind) if block is None: w_result = unroller.nomoreblocks() self.pushvalue(w_result) raise Return else: next_instr = block.handle(self, unroller) return next_instr elif opcode == opcodedesc.JUMP_ABSOLUTE.index: return self.jump_absolute(oparg, ec) elif opcode == opcodedesc.BREAK_LOOP.index: next_instr = self.BREAK_LOOP(oparg, next_instr) elif opcode == opcodedesc.CONTINUE_LOOP.index: return self.CONTINUE_LOOP(oparg, next_instr) elif opcode == opcodedesc.FOR_ITER.index: next_instr = self.FOR_ITER(oparg, next_instr) elif opcode == opcodedesc.JUMP_FORWARD.index: next_instr = self.JUMP_FORWARD(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_FALSE_OR_POP.index: next_instr = self.JUMP_IF_FALSE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_NOT_DEBUG.index: next_instr = self.JUMP_IF_NOT_DEBUG(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_TRUE_OR_POP.index: next_instr = self.JUMP_IF_TRUE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_FALSE.index: next_instr = self.POP_JUMP_IF_FALSE(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_TRUE.index: next_instr = self.POP_JUMP_IF_TRUE(oparg, next_instr) elif opcode == opcodedesc.BINARY_ADD.index: self.BINARY_ADD(oparg, next_instr) elif opcode == opcodedesc.BINARY_AND.index: self.BINARY_AND(oparg, next_instr) elif opcode == opcodedesc.BINARY_DIVIDE.index: self.BINARY_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_FLOOR_DIVIDE.index: self.BINARY_FLOOR_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_LSHIFT.index: self.BINARY_LSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_MODULO.index: self.BINARY_MODULO(oparg, next_instr) elif opcode == opcodedesc.BINARY_MULTIPLY.index: self.BINARY_MULTIPLY(oparg, next_instr) elif opcode == opcodedesc.BINARY_OR.index: self.BINARY_OR(oparg, next_instr) elif opcode == opcodedesc.BINARY_POWER.index: self.BINARY_POWER(oparg, next_instr) elif opcode == opcodedesc.BINARY_RSHIFT.index: self.BINARY_RSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBSCR.index: self.BINARY_SUBSCR(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBTRACT.index: self.BINARY_SUBTRACT(oparg, next_instr) elif opcode == opcodedesc.BINARY_TRUE_DIVIDE.index: self.BINARY_TRUE_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_XOR.index: self.BINARY_XOR(oparg, next_instr) elif opcode == opcodedesc.BUILD_CLASS.index: self.BUILD_CLASS(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST.index: self.BUILD_LIST(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST_FROM_ARG.index: self.BUILD_LIST_FROM_ARG(oparg, next_instr) elif opcode == opcodedesc.BUILD_MAP.index: self.BUILD_MAP(oparg, next_instr) elif opcode == opcodedesc.BUILD_SET.index: self.BUILD_SET(oparg, next_instr) elif opcode == opcodedesc.BUILD_SLICE.index: self.BUILD_SLICE(oparg, next_instr) elif opcode == opcodedesc.BUILD_TUPLE.index: self.BUILD_TUPLE(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION.index: self.CALL_FUNCTION(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_KW.index: self.CALL_FUNCTION_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR.index: self.CALL_FUNCTION_VAR(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR_KW.index: self.CALL_FUNCTION_VAR_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_METHOD.index: > self.CALL_METHOD(oparg, next_instr) interpreter\pyopcode.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ f = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_include_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:640]', line 1> at line 5 oparg = 3, ignored = (18L,), n_args = 3, n_kwargs = 0, w_self = None @jit.unroll_safe def CALL_METHOD(f, oparg, *ignored): # opargs contains the arg, and kwarg count, excluding the implicit 'self' n_args = oparg & 0xff n_kwargs = (oparg >> 8) & 0xff w_self = f.peekvalue_maybe_none(n_args + (2 * n_kwargs)) n = n_args + (w_self is not None) if not n_kwargs: w_callable = f.peekvalue(n_args + (2 * n_kwargs) + 1) w_result = f.space.call_valuestack( > w_callable, n, f, methodcall=w_self is not None, dropvalues=n_args + 2) objspace\std\callmethod.py:96: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_include_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:640]', line 1> at line 5 dropvalues = 5, methodcall = False def call_valuestack(self, w_func, nargs, frame, dropvalues, methodcall=False): # methodcall is only used for better error messages in argument.py from pypy.interpreter.function import Function, Method, is_builtin_code if frame.get_is_being_profiled() and is_builtin_code(w_func): # XXX: this code is copied&pasted :-( from the slow path below # call_valuestack(). args = frame.make_arguments(nargs) frame.dropvalues(dropvalues) return self.call_args_and_c_profile(frame, w_func, args) if not self.config.objspace.disable_call_speedhacks: # start of hack for performance if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: w_func = w_func.w_function # reuse callable stack place for w_inst frame.settopvalue(w_inst, nargs) nargs += 1 methodcall = True elif nargs > 0 and ( self.abstract_isinstance_w(frame.peekvalue(nargs-1), # :-( w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): return w_func.funccall_valuestack( > nargs, frame, methodcall=methodcall, dropvalues=dropvalues) interpreter\baseobjspace.py:1243: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_include_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:640]', line 1> at line 5 dropvalues = 5, methodcall = False def funccall_valuestack(self, nargs, frame, dropvalues, methodcall=False): # speed hack # methodcall is only for better error messages from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit # if (jit.we_are_jitted() and code is self.space._code_of_sys_exc_info and nargs == 0): frame.dropvalues(dropvalues) from pypy.module.sys.vm import exc_info_direct return exc_info_direct(self.space, frame) # fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: f_0 = frame.peekvalue(0) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, f_0) elif nargs == 2: f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, f_1, f_0) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) frame.dropvalues(dropvalues) return code.fastcall_3(self.space, self, f_2, f_1, f_0) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) f_3 = frame.peekvalue(3) frame.dropvalues(dropvalues) return code.fastcall_4(self.space, self, f_3, f_2, f_1, f_0) elif (nargs | Code.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) return self._flat_pycall(code, nargs, frame, dropvalues) elif fast_natural_arity & Code.FLATPYCALL: natural_arity = fast_natural_arity & 0xff if natural_arity > nargs >= natural_arity - len(self.defs_w): assert isinstance(code, PyCode) return self._flat_pycall_defaults(code, nargs, frame, natural_arity - nargs, dropvalues) elif fast_natural_arity == Code.PASSTHROUGHARGS1 and nargs >= 1: assert isinstance(code, gateway.BuiltinCodePassThroughArguments1) w_obj = frame.peekvalue(nargs-1) args = frame.make_arguments(nargs-1) frame.dropvalues(dropvalues) return code.funcrun_obj(self, w_obj, args) args = frame.make_arguments(nargs, methodcall=methodcall) frame.dropvalues(dropvalues) > return self.call_args(args) interpreter\function.py:190: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('typedef struct { int x; } mystruct_t;'), W_BytesObje...st_include_4_parent'), W_BytesObject('typedef struct { int x; } mystruct_t;')]) def call_args(self, args): # delegate activation to code > w_res = self.getcode().funcrun(self, args) interpreter\function.py:68: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('typedef struct { int x; } mystruct_t;'), W_BytesObje...st_include_4_parent'), W_BytesObject('typedef struct { int x; } mystruct_t;')]) def funcrun(self, func, args): > return BuiltinCode.funcrun_obj(self, func, None, args) interpreter\gateway.py:781: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('typedef struct { int x; } mystruct_t;'), W_BytesObje...st_include_4_parent'), W_BytesObject('typedef struct { int x; } mystruct_t;')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: w_result = activation._run(space, scope_w) except DescrMismatch: if w_obj is not None: args = args.prepend(w_obj) return self._type_unwrap_mismatch(space, args) except Exception as e: > self.handle_exception(space, e) interpreter\gateway.py:795: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> space = StdObjSpace e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def handle_exception(self, space, e): try: if not we_are_translated(): raise raise e except OperationError: raise except Exception as e: # general fall-back from pypy.interpreter import error > raise error.get_converted_unexpected_exception(space, e) interpreter\gateway.py:819: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('typedef struct { int x; } mystruct_t;'), W_BytesObje...st_include_4_parent'), W_BytesObject('typedef struct { int x; } mystruct_t;')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: > w_result = activation._run(space, scope_w) interpreter\gateway.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinActivation_UwS_ObjSpace_text_text_text_W_Root_W_Root_W_Root_int_W_Root object at 0x000002791c13af38> space = StdObjSpace scope_w = [W_BytesObject('typedef struct { int x; } mystruct_t;'), W_BytesObject('test_include_4_parent'), W_BytesObject('typedef struct { int x; } mystruct_t;'), None, None, None, ...] def _run(self, space, scope_w): > return self.behavior(space, space.text_w(scope_w[0]), space.text_w(scope_w[1]), space.text_w(scope_w[2]), scope_w[3], scope_w[4], scope_w[5], space.gateway_int_w(scope_w[6]), scope_w[7]) <3152-codegen d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\rpython\tool\sourcetools.py:200>:3: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace, cdef = 'typedef struct { int x; } mystruct_t;' module_name = '_CFFI_test_include_4_parent' source = 'typedef struct { int x; } mystruct_t;', w_includes = None w_extra_source = None, w_min_version = None, packed = 0 w_extra_compile_args = None @unwrap_spec(cdef='text', module_name='text', source='text', packed=int) def prepare(space, cdef, module_name, source, w_includes=None, w_extra_source=None, w_min_version=None, packed=False, w_extra_compile_args=None): try: import cffi from cffi import FFI # <== the system one, which from cffi import recompiler # needs to be at least cffi 1.0.4 from cffi import ffiplatform except ImportError: pytest.skip("system cffi module not found or older than 1.0.0") if w_min_version is None: min_version = (1, 4, 0) else: min_version = tuple(space.unwrap(w_min_version)) if cffi.__version_info__ < min_version: pytest.skip("system cffi module needs to be at least %s, got %s" % ( min_version, cffi.__version_info__)) space.appexec([], """(): import _cffi_backend # force it to be initialized """) includes = [] if w_includes: includes += space.unpackiterable(w_includes) assert module_name.startswith('test_') module_name = '_CFFI_' + module_name rdir = udir.ensure('recompiler', dir=1) rdir.join('Python.h').write( '#include <stdio.h>\n' '#define PYPY_VERSION XX\n' '#define PyMODINIT_FUNC /*exported*/ void\n' ) path = module_name.replace('.', os.sep) if '.' in module_name: subrdir = rdir.join(module_name[:module_name.index('.')]) os.mkdir(str(subrdir)) else: subrdir = rdir c_file = str(rdir.join('%s.c' % path)) ffi = FFI() for include_ffi_object in includes: ffi.include(include_ffi_object._test_recompiler_source_ffi) ffi.cdef(cdef, packed=packed) ffi.set_source(module_name, source) ffi.emit_c_code(c_file) base_module_name = module_name.split('.')[-1] sources = [] if w_extra_source is not None: sources.append(space.str_w(w_extra_source)) kwargs = {} # GCC 14 promotes -Wincompatible-pointer-types from a warning to an error # by default, which breaks cffi's intentionally-mismatched field-check # probes (e.g. test_misdeclared_field_1). Keep it a warning so the module # compiles and cffi's runtime checks can run. extra = ['-Wno-error=incompatible-pointer-types'] if w_extra_compile_args is not None: extra = extra + space.unwrap(w_extra_compile_args) kwargs['extra_compile_args'] = extra ext = ffiplatform.get_extension(c_file, module_name, include_dirs=[str(rdir)], export_symbols=['_cffi_pypyinit_' + base_module_name], sources=sources, **kwargs) > ffiplatform.compile(str(rdir), ext) module\_cffi_backend\test\test_recompiler.py:86: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x0000027928d107a0> compiler_verbose = 0, debug = None def compile(tmpdir, ext, compiler_verbose=0, debug=None): """Compile a C extension module using distutils.""" saved_environ = os.environ.copy() try: > outputfilename = _build(tmpdir, ext, compiler_verbose, debug) d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x0000027928d107a0> compiler_verbose = 0, debug = 0 def _build(tmpdir, ext, compiler_verbose=0, debug=None): # XXX compact but horrible :-( from cffi._shimmed_dist_utils import Distribution, CompileError, LinkError, set_threshold, set_verbosity dist = Distribution({'ext_modules': [ext]}) dist.parse_config_files() options = dist.get_option_dict('build_ext') if debug is None: debug = sys.flags.debug options['debug'] = ('ffiplatform', debug) options['force'] = ('ffiplatform', True) options['build_lib'] = ('ffiplatform', tmpdir) options['build_temp'] = ('ffiplatform', tmpdir) # try: old_level = set_threshold(0) or 0 try: set_verbosity(compiler_verbose) dist.run_command('build_ext') cmd_obj = dist.get_command_obj('build_ext') [soname] = cmd_obj.get_outputs() finally: set_threshold(old_level) except (CompileError, LinkError) as e: > raise VerificationError('%s: %s' % (e.__class__.__name__, e)) E VerificationError: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2 d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:54: VerificationError ---------------------------- Captured stdout call ----------------------------- generating d:\systemtemp\pytest\usession-main-595\recompiler\_CFFI_test_include_4_parent.c ---------------------------- Captured stderr call ----------------------------- cl : Command line error D8021 : invalid numeric argument '/Wno-error=incompatible-pointer-types' ______________________ AppTestRecompiler.test_include_5 _______________________ self = <CallInfo when='call' exception: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2> func = <function <lambda> at 0x0000027927823790>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ..\_pytest\runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ..\_pytest\runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_include_5'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_include_5'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ..\_pytest\vendored_packages\pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00000279153616a8> hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_include_5'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_include_5'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ..\_pytest\vendored_packages\pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_include_5'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_include_5'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ..\_pytest\vendored_packages\pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_include_5'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791feabe20> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i..._include_5'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792785a3a0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792785a3a0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i..._include_5'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_include_5'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791feabdd0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i..._include_5'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792785a360> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792785a360> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i..._include_5'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_include_5'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ..\_pytest\vendored_packages\pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_include_5'> def pytest_runtest_call(item): try: > item.runtest() ..\_pytest\runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_include_5'> def runtest(self): target = self.obj if self.config.option.runappdirect: return target() space = target.im_self.space filename = self._getdynfilename(target) func = app2interp_temp(target.im_func, filename=filename) w_instance = self.parent.w_instance > self.execute_appex(space, func, space, w_instance) tool\pytest\apptest.py:89: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_include_5'>, space = StdObjSpace target = <function test_include_5 at 0x0000027927823808> args = (StdObjSpace, <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>) def execute_appex(self, space, target, *args): self.space = space try: > target(*args) tool\pytest\apptest.py:30: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) w_func = <Function test_include_5> args = <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8> def appcaller(space, *args_w): if not isinstance(space, ObjSpace): raise TypeError("first argument must be a space instance.") # the last argument can be an Arguments w_func = self.wget(space, name) if not args_w: return space.call_function(w_func) else: args = args_w[-1] assert args is not None if not isinstance(args, Arguments): > return space.call_function(w_func, *args_w) interpreter\gateway.py:1227: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <Function test_include_5> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) nargs = 1, Function = <class 'pypy.interpreter.function.Function'> Method = <class 'pypy.interpreter.function.Method'> def call_function(self, w_func, *args_w): nargs = len(args_w) # used for pruning funccall versions if not self.config.objspace.disable_call_speedhacks and nargs < 5: # start of hack for performance from pypy.interpreter.function import Function, Method if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: if nargs < 4: func = w_func.w_function if isinstance(func, Function): return func.funccall(w_inst, *args_w) elif args_w and ( self.abstract_isinstance_w(args_w[0], w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): > return w_func.funccall(*args_w) interpreter\baseobjspace.py:1210: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <Function test_include_5> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) gateway = <module 'pypy.interpreter.gateway' from 'd:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\interpreter\\gateway.pyc'> PyCode = <class 'pypy.interpreter.pycode.PyCode'> code = <code object test_include_5, file '[d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:657]', line 1> def funccall(self, *args_w): # speed hack from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit nargs = len(args_w) fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, args_w[0]) elif nargs == 2: assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, args_w[0], args_w[1]) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) return code.fastcall_3(self.space, self, args_w[0], args_w[1], args_w[2]) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) return code.fastcall_4(self.space, self, args_w[0], args_w[1], args_w[2], args_w[3]) elif (nargs | PyCode.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) if nargs < 5: new_frame = self.space.createframe(code, self.w_func_globals, self) for i in funccallunrolling: if i < nargs: new_frame.locals_cells_stack_w[i] = args_w[i] > return new_frame.run() interpreter\function.py:118: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_include_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:657]', line 1> at line 5 def run(self): """Start this frame's execution.""" if self.getcode().co_flags & pycode.CO_GENERATOR: from pypy.interpreter.generator import GeneratorIterator return GeneratorIterator(self) else: > return self.execute_frame() interpreter\pyframe.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_include_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:657]', line 1> at line 5 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, executioncontext) except OperationError: raise except Exception as e: # general fall-back > raise self._convert_unexpected_exception(e) interpreter\pyframe.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_include_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:657]', line 1> at line 5 e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def _convert_unexpected_exception(self, e): from pypy.interpreter import error > operr = error.get_converted_unexpected_exception(self.space, e) interpreter\pyframe.py:943: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_include_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:657]', line 1> at line 5 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, > executioncontext) interpreter\pyframe.py:286: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_include_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:657]', line 1> at line 5 pycode = <code object test_include_5, file '[d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:657]', line 1> next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def dispatch(self, pycode, next_instr, ec): # For the sequel, force 'next_instr' to be unsigned for performance next_instr = r_uint(next_instr) co_code = pycode.co_code try: while True: > next_instr = self.handle_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:64: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_include_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:657]', line 1> at line 5 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x01\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00|\x00\x00\xc9\x00\x00d\x03\x0...3\x00\xc9\x02\x00|\x05\x00d\x0c\x00\x19\xca\x01\x00\xca\x01\x00d\x08\x00k\x02\x00sM\x01t\x04\x00\x82\x01\x00d\x00\x00S' next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def handle_bytecode(self, co_code, next_instr, ec): try: > next_instr = self.dispatch_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:71: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_include_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:657]', line 1> at line 5 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x01\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00|\x00\x00\xc9\x00\x00d\x03\x0...3\x00\xc9\x02\x00|\x05\x00d\x0c\x00\x19\xca\x01\x00\xca\x01\x00d\x08\x00k\x02\x00sM\x01t\x04\x00\x82\x01\x00d\x00\x00S' next_instr = 18L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> @jit.unroll_safe def dispatch_bytecode(self, co_code, next_instr, ec): while True: self.last_instr = intmask(next_instr) if jit.we_are_jitted(): if self.debugdata: ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) else: # Only reload next_instr from last_instr when something that # can modify it actually ran (trace function or action # dispatcher). In the common case (no trace, positive ticker) # next_instr is unchanged and the round-trip is skipped. _d = self.debugdata if ec.space.reverse_debugging or ( _d is not None and _d.w_f_trace is not None) or ( not we_are_translated() and 'bytecode_only_trace' in ec.__dict__): ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) actionflag = ec.space.actionflag if actionflag.decrement_ticker(TICK_COUNTER_STEP) < 0: actionflag.action_dispatcher(ec, self) next_instr = r_uint(self.last_instr) opcode = ord(co_code[next_instr]) next_instr += 1 if opcode >= HAVE_ARGUMENT: lo = ord(co_code[next_instr]) hi = ord(co_code[next_instr+1]) next_instr += 2 oparg = (hi * 256) | lo else: oparg = 0 # note: the structure of the code here is such that it makes # (after translation) a big "if/elif" chain, which is then # turned into a switch(). while opcode == opcodedesc.EXTENDED_ARG.index: opcode = ord(co_code[next_instr]) if opcode < HAVE_ARGUMENT: raise BytecodeCorruption lo = ord(co_code[next_instr+1]) hi = ord(co_code[next_instr+2]) next_instr += 3 oparg = (oparg * 65536) | (hi * 256) | lo if opcode == opcodedesc.RETURN_VALUE.index: if not self.blockstack_non_empty(): self.frame_finished_execution = True # for generators raise Return w_returnvalue = self.popvalue() block = self.unrollstack(SReturnValue.kind) if block is None: self.pushvalue(w_returnvalue) raise Return else: unroller = SReturnValue(w_returnvalue) next_instr = block.handle(self, unroller) return next_instr # now inside a 'finally' block elif opcode == opcodedesc.END_FINALLY.index: unroller = self.end_finally() if isinstance(unroller, SuspendedUnroller): # go on unrolling the stack block = self.unrollstack(unroller.kind) if block is None: w_result = unroller.nomoreblocks() self.pushvalue(w_result) raise Return else: next_instr = block.handle(self, unroller) return next_instr elif opcode == opcodedesc.JUMP_ABSOLUTE.index: return self.jump_absolute(oparg, ec) elif opcode == opcodedesc.BREAK_LOOP.index: next_instr = self.BREAK_LOOP(oparg, next_instr) elif opcode == opcodedesc.CONTINUE_LOOP.index: return self.CONTINUE_LOOP(oparg, next_instr) elif opcode == opcodedesc.FOR_ITER.index: next_instr = self.FOR_ITER(oparg, next_instr) elif opcode == opcodedesc.JUMP_FORWARD.index: next_instr = self.JUMP_FORWARD(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_FALSE_OR_POP.index: next_instr = self.JUMP_IF_FALSE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_NOT_DEBUG.index: next_instr = self.JUMP_IF_NOT_DEBUG(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_TRUE_OR_POP.index: next_instr = self.JUMP_IF_TRUE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_FALSE.index: next_instr = self.POP_JUMP_IF_FALSE(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_TRUE.index: next_instr = self.POP_JUMP_IF_TRUE(oparg, next_instr) elif opcode == opcodedesc.BINARY_ADD.index: self.BINARY_ADD(oparg, next_instr) elif opcode == opcodedesc.BINARY_AND.index: self.BINARY_AND(oparg, next_instr) elif opcode == opcodedesc.BINARY_DIVIDE.index: self.BINARY_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_FLOOR_DIVIDE.index: self.BINARY_FLOOR_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_LSHIFT.index: self.BINARY_LSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_MODULO.index: self.BINARY_MODULO(oparg, next_instr) elif opcode == opcodedesc.BINARY_MULTIPLY.index: self.BINARY_MULTIPLY(oparg, next_instr) elif opcode == opcodedesc.BINARY_OR.index: self.BINARY_OR(oparg, next_instr) elif opcode == opcodedesc.BINARY_POWER.index: self.BINARY_POWER(oparg, next_instr) elif opcode == opcodedesc.BINARY_RSHIFT.index: self.BINARY_RSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBSCR.index: self.BINARY_SUBSCR(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBTRACT.index: self.BINARY_SUBTRACT(oparg, next_instr) elif opcode == opcodedesc.BINARY_TRUE_DIVIDE.index: self.BINARY_TRUE_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_XOR.index: self.BINARY_XOR(oparg, next_instr) elif opcode == opcodedesc.BUILD_CLASS.index: self.BUILD_CLASS(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST.index: self.BUILD_LIST(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST_FROM_ARG.index: self.BUILD_LIST_FROM_ARG(oparg, next_instr) elif opcode == opcodedesc.BUILD_MAP.index: self.BUILD_MAP(oparg, next_instr) elif opcode == opcodedesc.BUILD_SET.index: self.BUILD_SET(oparg, next_instr) elif opcode == opcodedesc.BUILD_SLICE.index: self.BUILD_SLICE(oparg, next_instr) elif opcode == opcodedesc.BUILD_TUPLE.index: self.BUILD_TUPLE(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION.index: self.CALL_FUNCTION(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_KW.index: self.CALL_FUNCTION_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR.index: self.CALL_FUNCTION_VAR(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR_KW.index: self.CALL_FUNCTION_VAR_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_METHOD.index: > self.CALL_METHOD(oparg, next_instr) interpreter\pyopcode.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ f = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_include_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:657]', line 1> at line 5 oparg = 3, ignored = (18L,), n_args = 3, n_kwargs = 0, w_self = None @jit.unroll_safe def CALL_METHOD(f, oparg, *ignored): # opargs contains the arg, and kwarg count, excluding the implicit 'self' n_args = oparg & 0xff n_kwargs = (oparg >> 8) & 0xff w_self = f.peekvalue_maybe_none(n_args + (2 * n_kwargs)) n = n_args + (w_self is not None) if not n_kwargs: w_callable = f.peekvalue(n_args + (2 * n_kwargs) + 1) w_result = f.space.call_valuestack( > w_callable, n, f, methodcall=w_self is not None, dropvalues=n_args + 2) objspace\std\callmethod.py:96: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_include_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:657]', line 1> at line 5 dropvalues = 5, methodcall = False def call_valuestack(self, w_func, nargs, frame, dropvalues, methodcall=False): # methodcall is only used for better error messages in argument.py from pypy.interpreter.function import Function, Method, is_builtin_code if frame.get_is_being_profiled() and is_builtin_code(w_func): # XXX: this code is copied&pasted :-( from the slow path below # call_valuestack(). args = frame.make_arguments(nargs) frame.dropvalues(dropvalues) return self.call_args_and_c_profile(frame, w_func, args) if not self.config.objspace.disable_call_speedhacks: # start of hack for performance if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: w_func = w_func.w_function # reuse callable stack place for w_inst frame.settopvalue(w_inst, nargs) nargs += 1 methodcall = True elif nargs > 0 and ( self.abstract_isinstance_w(frame.peekvalue(nargs-1), # :-( w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): return w_func.funccall_valuestack( > nargs, frame, methodcall=methodcall, dropvalues=dropvalues) interpreter\baseobjspace.py:1243: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_include_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:657]', line 1> at line 5 dropvalues = 5, methodcall = False def funccall_valuestack(self, nargs, frame, dropvalues, methodcall=False): # speed hack # methodcall is only for better error messages from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit # if (jit.we_are_jitted() and code is self.space._code_of_sys_exc_info and nargs == 0): frame.dropvalues(dropvalues) from pypy.module.sys.vm import exc_info_direct return exc_info_direct(self.space, frame) # fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: f_0 = frame.peekvalue(0) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, f_0) elif nargs == 2: f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, f_1, f_0) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) frame.dropvalues(dropvalues) return code.fastcall_3(self.space, self, f_2, f_1, f_0) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) f_3 = frame.peekvalue(3) frame.dropvalues(dropvalues) return code.fastcall_4(self.space, self, f_3, f_2, f_1, f_0) elif (nargs | Code.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) return self._flat_pycall(code, nargs, frame, dropvalues) elif fast_natural_arity & Code.FLATPYCALL: natural_arity = fast_natural_arity & 0xff if natural_arity > nargs >= natural_arity - len(self.defs_w): assert isinstance(code, PyCode) return self._flat_pycall_defaults(code, nargs, frame, natural_arity - nargs, dropvalues) elif fast_natural_arity == Code.PASSTHROUGHARGS1 and nargs >= 1: assert isinstance(code, gateway.BuiltinCodePassThroughArguments1) w_obj = frame.peekvalue(nargs-1) args = frame.make_arguments(nargs-1) frame.dropvalues(dropvalues) return code.funcrun_obj(self, w_obj, args) args = frame.make_arguments(nargs, methodcall=methodcall) frame.dropvalues(dropvalues) > return self.call_args(args) interpreter\function.py:190: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('typedef struct { int x[2]; int y; } *mystruct_p;'), ...5_parent'), W_BytesObject('typedef struct { int x[2]; int y; } *mystruct_p;')]) def call_args(self, args): # delegate activation to code > w_res = self.getcode().funcrun(self, args) interpreter\function.py:68: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('typedef struct { int x[2]; int y; } *mystruct_p;'), ...5_parent'), W_BytesObject('typedef struct { int x[2]; int y; } *mystruct_p;')]) def funcrun(self, func, args): > return BuiltinCode.funcrun_obj(self, func, None, args) interpreter\gateway.py:781: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('typedef struct { int x[2]; int y; } *mystruct_p;'), ...5_parent'), W_BytesObject('typedef struct { int x[2]; int y; } *mystruct_p;')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: w_result = activation._run(space, scope_w) except DescrMismatch: if w_obj is not None: args = args.prepend(w_obj) return self._type_unwrap_mismatch(space, args) except Exception as e: > self.handle_exception(space, e) interpreter\gateway.py:795: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> space = StdObjSpace e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def handle_exception(self, space, e): try: if not we_are_translated(): raise raise e except OperationError: raise except Exception as e: # general fall-back from pypy.interpreter import error > raise error.get_converted_unexpected_exception(space, e) interpreter\gateway.py:819: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('typedef struct { int x[2]; int y; } *mystruct_p;'), ...5_parent'), W_BytesObject('typedef struct { int x[2]; int y; } *mystruct_p;')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: > w_result = activation._run(space, scope_w) interpreter\gateway.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinActivation_UwS_ObjSpace_text_text_text_W_Root_W_Root_W_Root_int_W_Root object at 0x000002791c13af38> space = StdObjSpace scope_w = [W_BytesObject('typedef struct { int x[2]; int y; } *mystruct_p;'), W_BytesObject('test_include_5_parent'), W_BytesObject('typedef struct { int x[2]; int y; } *mystruct_p;'), None, None, None, ...] def _run(self, space, scope_w): > return self.behavior(space, space.text_w(scope_w[0]), space.text_w(scope_w[1]), space.text_w(scope_w[2]), scope_w[3], scope_w[4], scope_w[5], space.gateway_int_w(scope_w[6]), scope_w[7]) <3152-codegen d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\rpython\tool\sourcetools.py:200>:3: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace, cdef = 'typedef struct { int x[2]; int y; } *mystruct_p;' module_name = '_CFFI_test_include_5_parent' source = 'typedef struct { int x[2]; int y; } *mystruct_p;', w_includes = None w_extra_source = None, w_min_version = None, packed = 0 w_extra_compile_args = None @unwrap_spec(cdef='text', module_name='text', source='text', packed=int) def prepare(space, cdef, module_name, source, w_includes=None, w_extra_source=None, w_min_version=None, packed=False, w_extra_compile_args=None): try: import cffi from cffi import FFI # <== the system one, which from cffi import recompiler # needs to be at least cffi 1.0.4 from cffi import ffiplatform except ImportError: pytest.skip("system cffi module not found or older than 1.0.0") if w_min_version is None: min_version = (1, 4, 0) else: min_version = tuple(space.unwrap(w_min_version)) if cffi.__version_info__ < min_version: pytest.skip("system cffi module needs to be at least %s, got %s" % ( min_version, cffi.__version_info__)) space.appexec([], """(): import _cffi_backend # force it to be initialized """) includes = [] if w_includes: includes += space.unpackiterable(w_includes) assert module_name.startswith('test_') module_name = '_CFFI_' + module_name rdir = udir.ensure('recompiler', dir=1) rdir.join('Python.h').write( '#include <stdio.h>\n' '#define PYPY_VERSION XX\n' '#define PyMODINIT_FUNC /*exported*/ void\n' ) path = module_name.replace('.', os.sep) if '.' in module_name: subrdir = rdir.join(module_name[:module_name.index('.')]) os.mkdir(str(subrdir)) else: subrdir = rdir c_file = str(rdir.join('%s.c' % path)) ffi = FFI() for include_ffi_object in includes: ffi.include(include_ffi_object._test_recompiler_source_ffi) ffi.cdef(cdef, packed=packed) ffi.set_source(module_name, source) ffi.emit_c_code(c_file) base_module_name = module_name.split('.')[-1] sources = [] if w_extra_source is not None: sources.append(space.str_w(w_extra_source)) kwargs = {} # GCC 14 promotes -Wincompatible-pointer-types from a warning to an error # by default, which breaks cffi's intentionally-mismatched field-check # probes (e.g. test_misdeclared_field_1). Keep it a warning so the module # compiles and cffi's runtime checks can run. extra = ['-Wno-error=incompatible-pointer-types'] if w_extra_compile_args is not None: extra = extra + space.unwrap(w_extra_compile_args) kwargs['extra_compile_args'] = extra ext = ffiplatform.get_extension(c_file, module_name, include_dirs=[str(rdir)], export_symbols=['_cffi_pypyinit_' + base_module_name], sources=sources, **kwargs) > ffiplatform.compile(str(rdir), ext) module\_cffi_backend\test\test_recompiler.py:86: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x0000027927836ae0> compiler_verbose = 0, debug = None def compile(tmpdir, ext, compiler_verbose=0, debug=None): """Compile a C extension module using distutils.""" saved_environ = os.environ.copy() try: > outputfilename = _build(tmpdir, ext, compiler_verbose, debug) d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x0000027927836ae0> compiler_verbose = 0, debug = 0 def _build(tmpdir, ext, compiler_verbose=0, debug=None): # XXX compact but horrible :-( from cffi._shimmed_dist_utils import Distribution, CompileError, LinkError, set_threshold, set_verbosity dist = Distribution({'ext_modules': [ext]}) dist.parse_config_files() options = dist.get_option_dict('build_ext') if debug is None: debug = sys.flags.debug options['debug'] = ('ffiplatform', debug) options['force'] = ('ffiplatform', True) options['build_lib'] = ('ffiplatform', tmpdir) options['build_temp'] = ('ffiplatform', tmpdir) # try: old_level = set_threshold(0) or 0 try: set_verbosity(compiler_verbose) dist.run_command('build_ext') cmd_obj = dist.get_command_obj('build_ext') [soname] = cmd_obj.get_outputs() finally: set_threshold(old_level) except (CompileError, LinkError) as e: > raise VerificationError('%s: %s' % (e.__class__.__name__, e)) E VerificationError: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2 d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:54: VerificationError ---------------------------- Captured stdout call ----------------------------- generating d:\systemtemp\pytest\usession-main-595\recompiler\_CFFI_test_include_5_parent.c ---------------------------- Captured stderr call ----------------------------- cl : Command line error D8021 : invalid numeric argument '/Wno-error=incompatible-pointer-types' ______________________ AppTestRecompiler.test_include_6 _______________________ self = <CallInfo when='call' exception: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2> func = <function <lambda> at 0x0000027921814c50>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ..\_pytest\runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ..\_pytest\runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_include_6'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_include_6'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ..\_pytest\vendored_packages\pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00000279153616a8> hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_include_6'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_include_6'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ..\_pytest\vendored_packages\pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_include_6'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_include_6'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ..\_pytest\vendored_packages\pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_include_6'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791a6ff808> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i..._include_6'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792bda6060> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792bda6060> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i..._include_6'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_include_6'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791a6ff790> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i..._include_6'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792bda6020> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792bda6020> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i..._include_6'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_include_6'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ..\_pytest\vendored_packages\pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_include_6'> def pytest_runtest_call(item): try: > item.runtest() ..\_pytest\runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_include_6'> def runtest(self): target = self.obj if self.config.option.runappdirect: return target() space = target.im_self.space filename = self._getdynfilename(target) func = app2interp_temp(target.im_func, filename=filename) w_instance = self.parent.w_instance > self.execute_appex(space, func, space, w_instance) tool\pytest\apptest.py:89: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_include_6'>, space = StdObjSpace target = <function test_include_6 at 0x0000027921835cb8> args = (StdObjSpace, <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>) def execute_appex(self, space, target, *args): self.space = space try: > target(*args) tool\pytest\apptest.py:30: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) w_func = <Function test_include_6> args = <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8> def appcaller(space, *args_w): if not isinstance(space, ObjSpace): raise TypeError("first argument must be a space instance.") # the last argument can be an Arguments w_func = self.wget(space, name) if not args_w: return space.call_function(w_func) else: args = args_w[-1] assert args is not None if not isinstance(args, Arguments): > return space.call_function(w_func, *args_w) interpreter\gateway.py:1227: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <Function test_include_6> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) nargs = 1, Function = <class 'pypy.interpreter.function.Function'> Method = <class 'pypy.interpreter.function.Method'> def call_function(self, w_func, *args_w): nargs = len(args_w) # used for pruning funccall versions if not self.config.objspace.disable_call_speedhacks and nargs < 5: # start of hack for performance from pypy.interpreter.function import Function, Method if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: if nargs < 4: func = w_func.w_function if isinstance(func, Function): return func.funccall(w_inst, *args_w) elif args_w and ( self.abstract_isinstance_w(args_w[0], w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): > return w_func.funccall(*args_w) interpreter\baseobjspace.py:1210: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <Function test_include_6> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) gateway = <module 'pypy.interpreter.gateway' from 'd:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\interpreter\\gateway.pyc'> PyCode = <class 'pypy.interpreter.pycode.PyCode'> code = <code object test_include_6, file '[d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:678]', line 1> def funccall(self, *args_w): # speed hack from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit nargs = len(args_w) fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, args_w[0]) elif nargs == 2: assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, args_w[0], args_w[1]) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) return code.fastcall_3(self.space, self, args_w[0], args_w[1], args_w[2]) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) return code.fastcall_4(self.space, self, args_w[0], args_w[1], args_w[2], args_w[3]) elif (nargs | PyCode.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) if nargs < 5: new_frame = self.space.createframe(code, self.w_func_globals, self) for i in funccallunrolling: if i < nargs: new_frame.locals_cells_stack_w[i] = args_w[i] > return new_frame.run() interpreter\function.py:118: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_include_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:678]', line 1> at line 5 def run(self): """Start this frame's execution.""" if self.getcode().co_flags & pycode.CO_GENERATOR: from pypy.interpreter.generator import GeneratorIterator return GeneratorIterator(self) else: > return self.execute_frame() interpreter\pyframe.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_include_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:678]', line 1> at line 5 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, executioncontext) except OperationError: raise except Exception as e: # general fall-back > raise self._convert_unexpected_exception(e) interpreter\pyframe.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_include_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:678]', line 1> at line 5 e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def _convert_unexpected_exception(self, e): from pypy.interpreter import error > operr = error.get_converted_unexpected_exception(self.space, e) interpreter\pyframe.py:943: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_include_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:678]', line 1> at line 5 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, > executioncontext) interpreter\pyframe.py:286: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_include_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:678]', line 1> at line 5 pycode = <code object test_include_6, file '[d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:678]', line 1> next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def dispatch(self, pycode, next_instr, ec): # For the sequel, force 'next_instr' to be unsigned for performance next_instr = r_uint(next_instr) co_code = pycode.co_code try: while True: > next_instr = self.handle_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:64: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_include_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:678]', line 1> at line 5 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00|\x00\x00\xc9\x00\x00d\x04\x0...\x01\x00\xcc\x1b\x00|\x04\x00\xc9\x04\x00|\x05\x00\xca\x01\x00d\n\x00k\x02\x00s\x8e\x00t\x03\x00\x82\x01\x00d\x00\x00S' next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def handle_bytecode(self, co_code, next_instr, ec): try: > next_instr = self.dispatch_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:71: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_include_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:678]', line 1> at line 5 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00|\x00\x00\xc9\x00\x00d\x04\x0...\x01\x00\xcc\x1b\x00|\x04\x00\xc9\x04\x00|\x05\x00\xca\x01\x00d\n\x00k\x02\x00s\x8e\x00t\x03\x00\x82\x01\x00d\x00\x00S' next_instr = 18L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> @jit.unroll_safe def dispatch_bytecode(self, co_code, next_instr, ec): while True: self.last_instr = intmask(next_instr) if jit.we_are_jitted(): if self.debugdata: ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) else: # Only reload next_instr from last_instr when something that # can modify it actually ran (trace function or action # dispatcher). In the common case (no trace, positive ticker) # next_instr is unchanged and the round-trip is skipped. _d = self.debugdata if ec.space.reverse_debugging or ( _d is not None and _d.w_f_trace is not None) or ( not we_are_translated() and 'bytecode_only_trace' in ec.__dict__): ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) actionflag = ec.space.actionflag if actionflag.decrement_ticker(TICK_COUNTER_STEP) < 0: actionflag.action_dispatcher(ec, self) next_instr = r_uint(self.last_instr) opcode = ord(co_code[next_instr]) next_instr += 1 if opcode >= HAVE_ARGUMENT: lo = ord(co_code[next_instr]) hi = ord(co_code[next_instr+1]) next_instr += 2 oparg = (hi * 256) | lo else: oparg = 0 # note: the structure of the code here is such that it makes # (after translation) a big "if/elif" chain, which is then # turned into a switch(). while opcode == opcodedesc.EXTENDED_ARG.index: opcode = ord(co_code[next_instr]) if opcode < HAVE_ARGUMENT: raise BytecodeCorruption lo = ord(co_code[next_instr+1]) hi = ord(co_code[next_instr+2]) next_instr += 3 oparg = (oparg * 65536) | (hi * 256) | lo if opcode == opcodedesc.RETURN_VALUE.index: if not self.blockstack_non_empty(): self.frame_finished_execution = True # for generators raise Return w_returnvalue = self.popvalue() block = self.unrollstack(SReturnValue.kind) if block is None: self.pushvalue(w_returnvalue) raise Return else: unroller = SReturnValue(w_returnvalue) next_instr = block.handle(self, unroller) return next_instr # now inside a 'finally' block elif opcode == opcodedesc.END_FINALLY.index: unroller = self.end_finally() if isinstance(unroller, SuspendedUnroller): # go on unrolling the stack block = self.unrollstack(unroller.kind) if block is None: w_result = unroller.nomoreblocks() self.pushvalue(w_result) raise Return else: next_instr = block.handle(self, unroller) return next_instr elif opcode == opcodedesc.JUMP_ABSOLUTE.index: return self.jump_absolute(oparg, ec) elif opcode == opcodedesc.BREAK_LOOP.index: next_instr = self.BREAK_LOOP(oparg, next_instr) elif opcode == opcodedesc.CONTINUE_LOOP.index: return self.CONTINUE_LOOP(oparg, next_instr) elif opcode == opcodedesc.FOR_ITER.index: next_instr = self.FOR_ITER(oparg, next_instr) elif opcode == opcodedesc.JUMP_FORWARD.index: next_instr = self.JUMP_FORWARD(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_FALSE_OR_POP.index: next_instr = self.JUMP_IF_FALSE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_NOT_DEBUG.index: next_instr = self.JUMP_IF_NOT_DEBUG(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_TRUE_OR_POP.index: next_instr = self.JUMP_IF_TRUE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_FALSE.index: next_instr = self.POP_JUMP_IF_FALSE(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_TRUE.index: next_instr = self.POP_JUMP_IF_TRUE(oparg, next_instr) elif opcode == opcodedesc.BINARY_ADD.index: self.BINARY_ADD(oparg, next_instr) elif opcode == opcodedesc.BINARY_AND.index: self.BINARY_AND(oparg, next_instr) elif opcode == opcodedesc.BINARY_DIVIDE.index: self.BINARY_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_FLOOR_DIVIDE.index: self.BINARY_FLOOR_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_LSHIFT.index: self.BINARY_LSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_MODULO.index: self.BINARY_MODULO(oparg, next_instr) elif opcode == opcodedesc.BINARY_MULTIPLY.index: self.BINARY_MULTIPLY(oparg, next_instr) elif opcode == opcodedesc.BINARY_OR.index: self.BINARY_OR(oparg, next_instr) elif opcode == opcodedesc.BINARY_POWER.index: self.BINARY_POWER(oparg, next_instr) elif opcode == opcodedesc.BINARY_RSHIFT.index: self.BINARY_RSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBSCR.index: self.BINARY_SUBSCR(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBTRACT.index: self.BINARY_SUBTRACT(oparg, next_instr) elif opcode == opcodedesc.BINARY_TRUE_DIVIDE.index: self.BINARY_TRUE_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_XOR.index: self.BINARY_XOR(oparg, next_instr) elif opcode == opcodedesc.BUILD_CLASS.index: self.BUILD_CLASS(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST.index: self.BUILD_LIST(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST_FROM_ARG.index: self.BUILD_LIST_FROM_ARG(oparg, next_instr) elif opcode == opcodedesc.BUILD_MAP.index: self.BUILD_MAP(oparg, next_instr) elif opcode == opcodedesc.BUILD_SET.index: self.BUILD_SET(oparg, next_instr) elif opcode == opcodedesc.BUILD_SLICE.index: self.BUILD_SLICE(oparg, next_instr) elif opcode == opcodedesc.BUILD_TUPLE.index: self.BUILD_TUPLE(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION.index: self.CALL_FUNCTION(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_KW.index: self.CALL_FUNCTION_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR.index: self.CALL_FUNCTION_VAR(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR_KW.index: self.CALL_FUNCTION_VAR_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_METHOD.index: > self.CALL_METHOD(oparg, next_instr) interpreter\pyopcode.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ f = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_include_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:678]', line 1> at line 5 oparg = 3, ignored = (18L,), n_args = 3, n_kwargs = 0, w_self = None @jit.unroll_safe def CALL_METHOD(f, oparg, *ignored): # opargs contains the arg, and kwarg count, excluding the implicit 'self' n_args = oparg & 0xff n_kwargs = (oparg >> 8) & 0xff w_self = f.peekvalue_maybe_none(n_args + (2 * n_kwargs)) n = n_args + (w_self is not None) if not n_kwargs: w_callable = f.peekvalue(n_args + (2 * n_kwargs) + 1) w_result = f.space.call_valuestack( > w_callable, n, f, methodcall=w_self is not None, dropvalues=n_args + 2) objspace\std\callmethod.py:96: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_include_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:678]', line 1> at line 5 dropvalues = 5, methodcall = False def call_valuestack(self, w_func, nargs, frame, dropvalues, methodcall=False): # methodcall is only used for better error messages in argument.py from pypy.interpreter.function import Function, Method, is_builtin_code if frame.get_is_being_profiled() and is_builtin_code(w_func): # XXX: this code is copied&pasted :-( from the slow path below # call_valuestack(). args = frame.make_arguments(nargs) frame.dropvalues(dropvalues) return self.call_args_and_c_profile(frame, w_func, args) if not self.config.objspace.disable_call_speedhacks: # start of hack for performance if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: w_func = w_func.w_function # reuse callable stack place for w_inst frame.settopvalue(w_inst, nargs) nargs += 1 methodcall = True elif nargs > 0 and ( self.abstract_isinstance_w(frame.peekvalue(nargs-1), # :-( w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): return w_func.funccall_valuestack( > nargs, frame, methodcall=methodcall, dropvalues=dropvalues) interpreter\baseobjspace.py:1243: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_include_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:678]', line 1> at line 5 dropvalues = 5, methodcall = False def funccall_valuestack(self, nargs, frame, dropvalues, methodcall=False): # speed hack # methodcall is only for better error messages from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit # if (jit.we_are_jitted() and code is self.space._code_of_sys_exc_info and nargs == 0): frame.dropvalues(dropvalues) from pypy.module.sys.vm import exc_info_direct return exc_info_direct(self.space, frame) # fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: f_0 = frame.peekvalue(0) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, f_0) elif nargs == 2: f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, f_1, f_0) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) frame.dropvalues(dropvalues) return code.fastcall_3(self.space, self, f_2, f_1, f_0) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) f_3 = frame.peekvalue(3) frame.dropvalues(dropvalues) return code.fastcall_4(self.space, self, f_3, f_2, f_1, f_0) elif (nargs | Code.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) return self._flat_pycall(code, nargs, frame, dropvalues) elif fast_natural_arity & Code.FLATPYCALL: natural_arity = fast_natural_arity & 0xff if natural_arity > nargs >= natural_arity - len(self.defs_w): assert isinstance(code, PyCode) return self._flat_pycall_defaults(code, nargs, frame, natural_arity - nargs, dropvalues) elif fast_natural_arity == Code.PASSTHROUGHARGS1 and nargs >= 1: assert isinstance(code, gateway.BuiltinCodePassThroughArguments1) w_obj = frame.peekvalue(nargs-1) args = frame.make_arguments(nargs-1) frame.dropvalues(dropvalues) return code.funcrun_obj(self, w_obj, args) args = frame.make_arguments(nargs, methodcall=methodcall) frame.dropvalues(dropvalues) > return self.call_args(args) interpreter\function.py:190: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('typedef ... mystruct_t;'), W_BytesObject('test_include_6_parent'), W_BytesObject('typedef struct _mystruct_s mystruct_t;')]) def call_args(self, args): # delegate activation to code > w_res = self.getcode().funcrun(self, args) interpreter\function.py:68: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('typedef ... mystruct_t;'), W_BytesObject('test_include_6_parent'), W_BytesObject('typedef struct _mystruct_s mystruct_t;')]) def funcrun(self, func, args): > return BuiltinCode.funcrun_obj(self, func, None, args) interpreter\gateway.py:781: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('typedef ... mystruct_t;'), W_BytesObject('test_include_6_parent'), W_BytesObject('typedef struct _mystruct_s mystruct_t;')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: w_result = activation._run(space, scope_w) except DescrMismatch: if w_obj is not None: args = args.prepend(w_obj) return self._type_unwrap_mismatch(space, args) except Exception as e: > self.handle_exception(space, e) interpreter\gateway.py:795: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> space = StdObjSpace e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def handle_exception(self, space, e): try: if not we_are_translated(): raise raise e except OperationError: raise except Exception as e: # general fall-back from pypy.interpreter import error > raise error.get_converted_unexpected_exception(space, e) interpreter\gateway.py:819: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('typedef ... mystruct_t;'), W_BytesObject('test_include_6_parent'), W_BytesObject('typedef struct _mystruct_s mystruct_t;')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: > w_result = activation._run(space, scope_w) interpreter\gateway.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinActivation_UwS_ObjSpace_text_text_text_W_Root_W_Root_W_Root_int_W_Root object at 0x000002791c13af38> space = StdObjSpace scope_w = [W_BytesObject('typedef ... mystruct_t;'), W_BytesObject('test_include_6_parent'), W_BytesObject('typedef struct _mystruct_s mystruct_t;'), None, None, None, ...] def _run(self, space, scope_w): > return self.behavior(space, space.text_w(scope_w[0]), space.text_w(scope_w[1]), space.text_w(scope_w[2]), scope_w[3], scope_w[4], scope_w[5], space.gateway_int_w(scope_w[6]), scope_w[7]) <3152-codegen d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\rpython\tool\sourcetools.py:200>:3: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace, cdef = 'typedef ... mystruct_t;' module_name = '_CFFI_test_include_6_parent' source = 'typedef struct _mystruct_s mystruct_t;', w_includes = None w_extra_source = None, w_min_version = None, packed = 0 w_extra_compile_args = None @unwrap_spec(cdef='text', module_name='text', source='text', packed=int) def prepare(space, cdef, module_name, source, w_includes=None, w_extra_source=None, w_min_version=None, packed=False, w_extra_compile_args=None): try: import cffi from cffi import FFI # <== the system one, which from cffi import recompiler # needs to be at least cffi 1.0.4 from cffi import ffiplatform except ImportError: pytest.skip("system cffi module not found or older than 1.0.0") if w_min_version is None: min_version = (1, 4, 0) else: min_version = tuple(space.unwrap(w_min_version)) if cffi.__version_info__ < min_version: pytest.skip("system cffi module needs to be at least %s, got %s" % ( min_version, cffi.__version_info__)) space.appexec([], """(): import _cffi_backend # force it to be initialized """) includes = [] if w_includes: includes += space.unpackiterable(w_includes) assert module_name.startswith('test_') module_name = '_CFFI_' + module_name rdir = udir.ensure('recompiler', dir=1) rdir.join('Python.h').write( '#include <stdio.h>\n' '#define PYPY_VERSION XX\n' '#define PyMODINIT_FUNC /*exported*/ void\n' ) path = module_name.replace('.', os.sep) if '.' in module_name: subrdir = rdir.join(module_name[:module_name.index('.')]) os.mkdir(str(subrdir)) else: subrdir = rdir c_file = str(rdir.join('%s.c' % path)) ffi = FFI() for include_ffi_object in includes: ffi.include(include_ffi_object._test_recompiler_source_ffi) ffi.cdef(cdef, packed=packed) ffi.set_source(module_name, source) ffi.emit_c_code(c_file) base_module_name = module_name.split('.')[-1] sources = [] if w_extra_source is not None: sources.append(space.str_w(w_extra_source)) kwargs = {} # GCC 14 promotes -Wincompatible-pointer-types from a warning to an error # by default, which breaks cffi's intentionally-mismatched field-check # probes (e.g. test_misdeclared_field_1). Keep it a warning so the module # compiles and cffi's runtime checks can run. extra = ['-Wno-error=incompatible-pointer-types'] if w_extra_compile_args is not None: extra = extra + space.unwrap(w_extra_compile_args) kwargs['extra_compile_args'] = extra ext = ffiplatform.get_extension(c_file, module_name, include_dirs=[str(rdir)], export_symbols=['_cffi_pypyinit_' + base_module_name], sources=sources, **kwargs) > ffiplatform.compile(str(rdir), ext) module\_cffi_backend\test\test_recompiler.py:86: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x000002792bda6920> compiler_verbose = 0, debug = None def compile(tmpdir, ext, compiler_verbose=0, debug=None): """Compile a C extension module using distutils.""" saved_environ = os.environ.copy() try: > outputfilename = _build(tmpdir, ext, compiler_verbose, debug) d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x000002792bda6920> compiler_verbose = 0, debug = 0 def _build(tmpdir, ext, compiler_verbose=0, debug=None): # XXX compact but horrible :-( from cffi._shimmed_dist_utils import Distribution, CompileError, LinkError, set_threshold, set_verbosity dist = Distribution({'ext_modules': [ext]}) dist.parse_config_files() options = dist.get_option_dict('build_ext') if debug is None: debug = sys.flags.debug options['debug'] = ('ffiplatform', debug) options['force'] = ('ffiplatform', True) options['build_lib'] = ('ffiplatform', tmpdir) options['build_temp'] = ('ffiplatform', tmpdir) # try: old_level = set_threshold(0) or 0 try: set_verbosity(compiler_verbose) dist.run_command('build_ext') cmd_obj = dist.get_command_obj('build_ext') [soname] = cmd_obj.get_outputs() finally: set_threshold(old_level) except (CompileError, LinkError) as e: > raise VerificationError('%s: %s' % (e.__class__.__name__, e)) E VerificationError: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2 d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:54: VerificationError ---------------------------- Captured stdout call ----------------------------- generating d:\systemtemp\pytest\usession-main-595\recompiler\_CFFI_test_include_6_parent.c ---------------------------- Captured stderr call ----------------------------- cl : Command line error D8021 : invalid numeric argument '/Wno-error=incompatible-pointer-types' ______________________ AppTestRecompiler.test_include_7 _______________________ self = <CallInfo when='call' exception: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2> func = <function <lambda> at 0x0000027921808458>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ..\_pytest\runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ..\_pytest\runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_include_7'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_include_7'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ..\_pytest\vendored_packages\pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00000279153616a8> hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_include_7'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_include_7'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ..\_pytest\vendored_packages\pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_include_7'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_include_7'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ..\_pytest\vendored_packages\pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_include_7'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002792ca45a10> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i..._include_7'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002791af5ef20> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002791af5ef20> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i..._include_7'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_include_7'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002792ca459c0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i..._include_7'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002791af5ede0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002791af5ede0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i..._include_7'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_include_7'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ..\_pytest\vendored_packages\pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_include_7'> def pytest_runtest_call(item): try: > item.runtest() ..\_pytest\runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_include_7'> def runtest(self): target = self.obj if self.config.option.runappdirect: return target() space = target.im_self.space filename = self._getdynfilename(target) func = app2interp_temp(target.im_func, filename=filename) w_instance = self.parent.w_instance > self.execute_appex(space, func, space, w_instance) tool\pytest\apptest.py:89: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_include_7'>, space = StdObjSpace target = <function test_include_7 at 0x000002791c190548> args = (StdObjSpace, <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>) def execute_appex(self, space, target, *args): self.space = space try: > target(*args) tool\pytest\apptest.py:30: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) w_func = <Function test_include_7> args = <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8> def appcaller(space, *args_w): if not isinstance(space, ObjSpace): raise TypeError("first argument must be a space instance.") # the last argument can be an Arguments w_func = self.wget(space, name) if not args_w: return space.call_function(w_func) else: args = args_w[-1] assert args is not None if not isinstance(args, Arguments): > return space.call_function(w_func, *args_w) interpreter\gateway.py:1227: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <Function test_include_7> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) nargs = 1, Function = <class 'pypy.interpreter.function.Function'> Method = <class 'pypy.interpreter.function.Method'> def call_function(self, w_func, *args_w): nargs = len(args_w) # used for pruning funccall versions if not self.config.objspace.disable_call_speedhacks and nargs < 5: # start of hack for performance from pypy.interpreter.function import Function, Method if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: if nargs < 4: func = w_func.w_function if isinstance(func, Function): return func.funccall(w_inst, *args_w) elif args_w and ( self.abstract_isinstance_w(args_w[0], w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): > return w_func.funccall(*args_w) interpreter\baseobjspace.py:1210: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <Function test_include_7> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) gateway = <module 'pypy.interpreter.gateway' from 'd:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\interpreter\\gateway.pyc'> PyCode = <class 'pypy.interpreter.pycode.PyCode'> code = <code object test_include_7, file '[d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:696]', line 1> def funccall(self, *args_w): # speed hack from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit nargs = len(args_w) fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, args_w[0]) elif nargs == 2: assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, args_w[0], args_w[1]) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) return code.fastcall_3(self.space, self, args_w[0], args_w[1], args_w[2]) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) return code.fastcall_4(self.space, self, args_w[0], args_w[1], args_w[2], args_w[3]) elif (nargs | PyCode.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) if nargs < 5: new_frame = self.space.createframe(code, self.w_func_globals, self) for i in funccallunrolling: if i < nargs: new_frame.locals_cells_stack_w[i] = args_w[i] > return new_frame.run() interpreter\function.py:118: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_include_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:696]', line 1> at line 5 def run(self): """Start this frame's execution.""" if self.getcode().co_flags & pycode.CO_GENERATOR: from pypy.interpreter.generator import GeneratorIterator return GeneratorIterator(self) else: > return self.execute_frame() interpreter\pyframe.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_include_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:696]', line 1> at line 5 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, executioncontext) except OperationError: raise except Exception as e: # general fall-back > raise self._convert_unexpected_exception(e) interpreter\pyframe.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_include_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:696]', line 1> at line 5 e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def _convert_unexpected_exception(self, e): from pypy.interpreter import error > operr = error.get_converted_unexpected_exception(self.space, e) interpreter\pyframe.py:943: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_include_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:696]', line 1> at line 5 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, > executioncontext) interpreter\pyframe.py:286: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_include_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:696]', line 1> at line 5 pycode = <code object test_include_7, file '[d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:696]', line 1> next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def dispatch(self, pycode, next_instr, ec): # For the sequel, force 'next_instr' to be unsigned for performance next_instr = r_uint(next_instr) co_code = pycode.co_code try: while True: > next_instr = self.handle_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:64: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_include_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:696]', line 1> at line 5 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00|\x00\x00\xc9\x00\x00d\x04\x0...\x01\x00\xcc\x1b\x00|\x04\x00\xc9\x04\x00|\x05\x00\xca\x01\x00d\n\x00k\x02\x00s\x8e\x00t\x03\x00\x82\x01\x00d\x00\x00S' next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def handle_bytecode(self, co_code, next_instr, ec): try: > next_instr = self.dispatch_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:71: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_include_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:696]', line 1> at line 5 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00|\x00\x00\xc9\x00\x00d\x04\x0...\x01\x00\xcc\x1b\x00|\x04\x00\xc9\x04\x00|\x05\x00\xca\x01\x00d\n\x00k\x02\x00s\x8e\x00t\x03\x00\x82\x01\x00d\x00\x00S' next_instr = 18L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> @jit.unroll_safe def dispatch_bytecode(self, co_code, next_instr, ec): while True: self.last_instr = intmask(next_instr) if jit.we_are_jitted(): if self.debugdata: ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) else: # Only reload next_instr from last_instr when something that # can modify it actually ran (trace function or action # dispatcher). In the common case (no trace, positive ticker) # next_instr is unchanged and the round-trip is skipped. _d = self.debugdata if ec.space.reverse_debugging or ( _d is not None and _d.w_f_trace is not None) or ( not we_are_translated() and 'bytecode_only_trace' in ec.__dict__): ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) actionflag = ec.space.actionflag if actionflag.decrement_ticker(TICK_COUNTER_STEP) < 0: actionflag.action_dispatcher(ec, self) next_instr = r_uint(self.last_instr) opcode = ord(co_code[next_instr]) next_instr += 1 if opcode >= HAVE_ARGUMENT: lo = ord(co_code[next_instr]) hi = ord(co_code[next_instr+1]) next_instr += 2 oparg = (hi * 256) | lo else: oparg = 0 # note: the structure of the code here is such that it makes # (after translation) a big "if/elif" chain, which is then # turned into a switch(). while opcode == opcodedesc.EXTENDED_ARG.index: opcode = ord(co_code[next_instr]) if opcode < HAVE_ARGUMENT: raise BytecodeCorruption lo = ord(co_code[next_instr+1]) hi = ord(co_code[next_instr+2]) next_instr += 3 oparg = (oparg * 65536) | (hi * 256) | lo if opcode == opcodedesc.RETURN_VALUE.index: if not self.blockstack_non_empty(): self.frame_finished_execution = True # for generators raise Return w_returnvalue = self.popvalue() block = self.unrollstack(SReturnValue.kind) if block is None: self.pushvalue(w_returnvalue) raise Return else: unroller = SReturnValue(w_returnvalue) next_instr = block.handle(self, unroller) return next_instr # now inside a 'finally' block elif opcode == opcodedesc.END_FINALLY.index: unroller = self.end_finally() if isinstance(unroller, SuspendedUnroller): # go on unrolling the stack block = self.unrollstack(unroller.kind) if block is None: w_result = unroller.nomoreblocks() self.pushvalue(w_result) raise Return else: next_instr = block.handle(self, unroller) return next_instr elif opcode == opcodedesc.JUMP_ABSOLUTE.index: return self.jump_absolute(oparg, ec) elif opcode == opcodedesc.BREAK_LOOP.index: next_instr = self.BREAK_LOOP(oparg, next_instr) elif opcode == opcodedesc.CONTINUE_LOOP.index: return self.CONTINUE_LOOP(oparg, next_instr) elif opcode == opcodedesc.FOR_ITER.index: next_instr = self.FOR_ITER(oparg, next_instr) elif opcode == opcodedesc.JUMP_FORWARD.index: next_instr = self.JUMP_FORWARD(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_FALSE_OR_POP.index: next_instr = self.JUMP_IF_FALSE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_NOT_DEBUG.index: next_instr = self.JUMP_IF_NOT_DEBUG(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_TRUE_OR_POP.index: next_instr = self.JUMP_IF_TRUE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_FALSE.index: next_instr = self.POP_JUMP_IF_FALSE(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_TRUE.index: next_instr = self.POP_JUMP_IF_TRUE(oparg, next_instr) elif opcode == opcodedesc.BINARY_ADD.index: self.BINARY_ADD(oparg, next_instr) elif opcode == opcodedesc.BINARY_AND.index: self.BINARY_AND(oparg, next_instr) elif opcode == opcodedesc.BINARY_DIVIDE.index: self.BINARY_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_FLOOR_DIVIDE.index: self.BINARY_FLOOR_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_LSHIFT.index: self.BINARY_LSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_MODULO.index: self.BINARY_MODULO(oparg, next_instr) elif opcode == opcodedesc.BINARY_MULTIPLY.index: self.BINARY_MULTIPLY(oparg, next_instr) elif opcode == opcodedesc.BINARY_OR.index: self.BINARY_OR(oparg, next_instr) elif opcode == opcodedesc.BINARY_POWER.index: self.BINARY_POWER(oparg, next_instr) elif opcode == opcodedesc.BINARY_RSHIFT.index: self.BINARY_RSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBSCR.index: self.BINARY_SUBSCR(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBTRACT.index: self.BINARY_SUBTRACT(oparg, next_instr) elif opcode == opcodedesc.BINARY_TRUE_DIVIDE.index: self.BINARY_TRUE_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_XOR.index: self.BINARY_XOR(oparg, next_instr) elif opcode == opcodedesc.BUILD_CLASS.index: self.BUILD_CLASS(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST.index: self.BUILD_LIST(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST_FROM_ARG.index: self.BUILD_LIST_FROM_ARG(oparg, next_instr) elif opcode == opcodedesc.BUILD_MAP.index: self.BUILD_MAP(oparg, next_instr) elif opcode == opcodedesc.BUILD_SET.index: self.BUILD_SET(oparg, next_instr) elif opcode == opcodedesc.BUILD_SLICE.index: self.BUILD_SLICE(oparg, next_instr) elif opcode == opcodedesc.BUILD_TUPLE.index: self.BUILD_TUPLE(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION.index: self.CALL_FUNCTION(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_KW.index: self.CALL_FUNCTION_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR.index: self.CALL_FUNCTION_VAR(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR_KW.index: self.CALL_FUNCTION_VAR_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_METHOD.index: > self.CALL_METHOD(oparg, next_instr) interpreter\pyopcode.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ f = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_include_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:696]', line 1> at line 5 oparg = 3, ignored = (18L,), n_args = 3, n_kwargs = 0, w_self = None @jit.unroll_safe def CALL_METHOD(f, oparg, *ignored): # opargs contains the arg, and kwarg count, excluding the implicit 'self' n_args = oparg & 0xff n_kwargs = (oparg >> 8) & 0xff w_self = f.peekvalue_maybe_none(n_args + (2 * n_kwargs)) n = n_args + (w_self is not None) if not n_kwargs: w_callable = f.peekvalue(n_args + (2 * n_kwargs) + 1) w_result = f.space.call_valuestack( > w_callable, n, f, methodcall=w_self is not None, dropvalues=n_args + 2) objspace\std\callmethod.py:96: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_include_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:696]', line 1> at line 5 dropvalues = 5, methodcall = False def call_valuestack(self, w_func, nargs, frame, dropvalues, methodcall=False): # methodcall is only used for better error messages in argument.py from pypy.interpreter.function import Function, Method, is_builtin_code if frame.get_is_being_profiled() and is_builtin_code(w_func): # XXX: this code is copied&pasted :-( from the slow path below # call_valuestack(). args = frame.make_arguments(nargs) frame.dropvalues(dropvalues) return self.call_args_and_c_profile(frame, w_func, args) if not self.config.objspace.disable_call_speedhacks: # start of hack for performance if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: w_func = w_func.w_function # reuse callable stack place for w_inst frame.settopvalue(w_inst, nargs) nargs += 1 methodcall = True elif nargs > 0 and ( self.abstract_isinstance_w(frame.peekvalue(nargs-1), # :-( w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): return w_func.funccall_valuestack( > nargs, frame, methodcall=methodcall, dropvalues=dropvalues) interpreter\baseobjspace.py:1243: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_include_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:696]', line 1> at line 5 dropvalues = 5, methodcall = False def funccall_valuestack(self, nargs, frame, dropvalues, methodcall=False): # speed hack # methodcall is only for better error messages from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit # if (jit.we_are_jitted() and code is self.space._code_of_sys_exc_info and nargs == 0): frame.dropvalues(dropvalues) from pypy.module.sys.vm import exc_info_direct return exc_info_direct(self.space, frame) # fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: f_0 = frame.peekvalue(0) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, f_0) elif nargs == 2: f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, f_1, f_0) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) frame.dropvalues(dropvalues) return code.fastcall_3(self.space, self, f_2, f_1, f_0) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) f_3 = frame.peekvalue(3) frame.dropvalues(dropvalues) return code.fastcall_4(self.space, self, f_3, f_2, f_1, f_0) elif (nargs | Code.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) return self._flat_pycall(code, nargs, frame, dropvalues) elif fast_natural_arity & Code.FLATPYCALL: natural_arity = fast_natural_arity & 0xff if natural_arity > nargs >= natural_arity - len(self.defs_w): assert isinstance(code, PyCode) return self._flat_pycall_defaults(code, nargs, frame, natural_arity - nargs, dropvalues) elif fast_natural_arity == Code.PASSTHROUGHARGS1 and nargs >= 1: assert isinstance(code, gateway.BuiltinCodePassThroughArguments1) w_obj = frame.peekvalue(nargs-1) args = frame.make_arguments(nargs-1) frame.dropvalues(dropvalues) return code.funcrun_obj(self, w_obj, args) args = frame.make_arguments(nargs, methodcall=methodcall) frame.dropvalues(dropvalues) > return self.call_args(args) interpreter\function.py:190: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('typedef ... mystruct_t; int ff7b(mystruct_t *);'), W...def struct { int x; } mystruct_t;\nint ff7b(mystruct_t *p) { return p->x; }')]) def call_args(self, args): # delegate activation to code > w_res = self.getcode().funcrun(self, args) interpreter\function.py:68: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('typedef ... mystruct_t; int ff7b(mystruct_t *);'), W...def struct { int x; } mystruct_t;\nint ff7b(mystruct_t *p) { return p->x; }')]) def funcrun(self, func, args): > return BuiltinCode.funcrun_obj(self, func, None, args) interpreter\gateway.py:781: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('typedef ... mystruct_t; int ff7b(mystruct_t *);'), W...def struct { int x; } mystruct_t;\nint ff7b(mystruct_t *p) { return p->x; }')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: w_result = activation._run(space, scope_w) except DescrMismatch: if w_obj is not None: args = args.prepend(w_obj) return self._type_unwrap_mismatch(space, args) except Exception as e: > self.handle_exception(space, e) interpreter\gateway.py:795: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> space = StdObjSpace e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def handle_exception(self, space, e): try: if not we_are_translated(): raise raise e except OperationError: raise except Exception as e: # general fall-back from pypy.interpreter import error > raise error.get_converted_unexpected_exception(space, e) interpreter\gateway.py:819: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('typedef ... mystruct_t; int ff7b(mystruct_t *);'), W...def struct { int x; } mystruct_t;\nint ff7b(mystruct_t *p) { return p->x; }')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: > w_result = activation._run(space, scope_w) interpreter\gateway.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinActivation_UwS_ObjSpace_text_text_text_W_Root_W_Root_W_Root_int_W_Root object at 0x000002791c13af38> space = StdObjSpace scope_w = [W_BytesObject('typedef ... mystruct_t; int ff7b(mystruct_t *);'), W_BytesObject('test_include_7_parent'), W_BytesObject('typedef struct { int x; } mystruct_t;\nint ff7b(mystruct_t *p) { return p->x; }'), None, None, None, ...] def _run(self, space, scope_w): > return self.behavior(space, space.text_w(scope_w[0]), space.text_w(scope_w[1]), space.text_w(scope_w[2]), scope_w[3], scope_w[4], scope_w[5], space.gateway_int_w(scope_w[6]), scope_w[7]) <3152-codegen d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\rpython\tool\sourcetools.py:200>:3: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace, cdef = 'typedef ... mystruct_t; int ff7b(mystruct_t *);' module_name = '_CFFI_test_include_7_parent' source = 'typedef struct { int x; } mystruct_t;\nint ff7b(mystruct_t *p) { return p->x; }' w_includes = None, w_extra_source = None, w_min_version = None, packed = 0 w_extra_compile_args = None @unwrap_spec(cdef='text', module_name='text', source='text', packed=int) def prepare(space, cdef, module_name, source, w_includes=None, w_extra_source=None, w_min_version=None, packed=False, w_extra_compile_args=None): try: import cffi from cffi import FFI # <== the system one, which from cffi import recompiler # needs to be at least cffi 1.0.4 from cffi import ffiplatform except ImportError: pytest.skip("system cffi module not found or older than 1.0.0") if w_min_version is None: min_version = (1, 4, 0) else: min_version = tuple(space.unwrap(w_min_version)) if cffi.__version_info__ < min_version: pytest.skip("system cffi module needs to be at least %s, got %s" % ( min_version, cffi.__version_info__)) space.appexec([], """(): import _cffi_backend # force it to be initialized """) includes = [] if w_includes: includes += space.unpackiterable(w_includes) assert module_name.startswith('test_') module_name = '_CFFI_' + module_name rdir = udir.ensure('recompiler', dir=1) rdir.join('Python.h').write( '#include <stdio.h>\n' '#define PYPY_VERSION XX\n' '#define PyMODINIT_FUNC /*exported*/ void\n' ) path = module_name.replace('.', os.sep) if '.' in module_name: subrdir = rdir.join(module_name[:module_name.index('.')]) os.mkdir(str(subrdir)) else: subrdir = rdir c_file = str(rdir.join('%s.c' % path)) ffi = FFI() for include_ffi_object in includes: ffi.include(include_ffi_object._test_recompiler_source_ffi) ffi.cdef(cdef, packed=packed) ffi.set_source(module_name, source) ffi.emit_c_code(c_file) base_module_name = module_name.split('.')[-1] sources = [] if w_extra_source is not None: sources.append(space.str_w(w_extra_source)) kwargs = {} # GCC 14 promotes -Wincompatible-pointer-types from a warning to an error # by default, which breaks cffi's intentionally-mismatched field-check # probes (e.g. test_misdeclared_field_1). Keep it a warning so the module # compiles and cffi's runtime checks can run. extra = ['-Wno-error=incompatible-pointer-types'] if w_extra_compile_args is not None: extra = extra + space.unwrap(w_extra_compile_args) kwargs['extra_compile_args'] = extra ext = ffiplatform.get_extension(c_file, module_name, include_dirs=[str(rdir)], export_symbols=['_cffi_pypyinit_' + base_module_name], sources=sources, **kwargs) > ffiplatform.compile(str(rdir), ext) module\_cffi_backend\test\test_recompiler.py:86: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x00000279204b78a0> compiler_verbose = 0, debug = None def compile(tmpdir, ext, compiler_verbose=0, debug=None): """Compile a C extension module using distutils.""" saved_environ = os.environ.copy() try: > outputfilename = _build(tmpdir, ext, compiler_verbose, debug) d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x00000279204b78a0> compiler_verbose = 0, debug = 0 def _build(tmpdir, ext, compiler_verbose=0, debug=None): # XXX compact but horrible :-( from cffi._shimmed_dist_utils import Distribution, CompileError, LinkError, set_threshold, set_verbosity dist = Distribution({'ext_modules': [ext]}) dist.parse_config_files() options = dist.get_option_dict('build_ext') if debug is None: debug = sys.flags.debug options['debug'] = ('ffiplatform', debug) options['force'] = ('ffiplatform', True) options['build_lib'] = ('ffiplatform', tmpdir) options['build_temp'] = ('ffiplatform', tmpdir) # try: old_level = set_threshold(0) or 0 try: set_verbosity(compiler_verbose) dist.run_command('build_ext') cmd_obj = dist.get_command_obj('build_ext') [soname] = cmd_obj.get_outputs() finally: set_threshold(old_level) except (CompileError, LinkError) as e: > raise VerificationError('%s: %s' % (e.__class__.__name__, e)) E VerificationError: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2 d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:54: VerificationError ---------------------------- Captured stdout call ----------------------------- generating d:\systemtemp\pytest\usession-main-595\recompiler\_CFFI_test_include_7_parent.c ---------------------------- Captured stderr call ----------------------------- cl : Command line error D8021 : invalid numeric argument '/Wno-error=incompatible-pointer-types' ______________________ AppTestRecompiler.test_include_8 _______________________ self = <CallInfo when='call' exception: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2> func = <function <lambda> at 0x000002792a7d34c0>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ..\_pytest\runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ..\_pytest\runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_include_8'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_include_8'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ..\_pytest\vendored_packages\pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00000279153616a8> hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_include_8'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_include_8'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ..\_pytest\vendored_packages\pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_include_8'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_include_8'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ..\_pytest\vendored_packages\pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_include_8'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00000279287903e0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i..._include_8'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00000279279172a0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00000279279172a0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i..._include_8'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_include_8'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x0000027928790390> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i..._include_8'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027927917260> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027927917260> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i..._include_8'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_include_8'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ..\_pytest\vendored_packages\pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_include_8'> def pytest_runtest_call(item): try: > item.runtest() ..\_pytest\runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_include_8'> def runtest(self): target = self.obj if self.config.option.runappdirect: return target() space = target.im_self.space filename = self._getdynfilename(target) func = app2interp_temp(target.im_func, filename=filename) w_instance = self.parent.w_instance > self.execute_appex(space, func, space, w_instance) tool\pytest\apptest.py:89: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_include_8'>, space = StdObjSpace target = <function test_include_8 at 0x000002792a7d3718> args = (StdObjSpace, <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>) def execute_appex(self, space, target, *args): self.space = space try: > target(*args) tool\pytest\apptest.py:30: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) w_func = <Function test_include_8> args = <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8> def appcaller(space, *args_w): if not isinstance(space, ObjSpace): raise TypeError("first argument must be a space instance.") # the last argument can be an Arguments w_func = self.wget(space, name) if not args_w: return space.call_function(w_func) else: args = args_w[-1] assert args is not None if not isinstance(args, Arguments): > return space.call_function(w_func, *args_w) interpreter\gateway.py:1227: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <Function test_include_8> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) nargs = 1, Function = <class 'pypy.interpreter.function.Function'> Method = <class 'pypy.interpreter.function.Method'> def call_function(self, w_func, *args_w): nargs = len(args_w) # used for pruning funccall versions if not self.config.objspace.disable_call_speedhacks and nargs < 5: # start of hack for performance from pypy.interpreter.function import Function, Method if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: if nargs < 4: func = w_func.w_function if isinstance(func, Function): return func.funccall(w_inst, *args_w) elif args_w and ( self.abstract_isinstance_w(args_w[0], w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): > return w_func.funccall(*args_w) interpreter\baseobjspace.py:1210: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <Function test_include_8> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) gateway = <module 'pypy.interpreter.gateway' from 'd:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\interpreter\\gateway.pyc'> PyCode = <class 'pypy.interpreter.pycode.PyCode'> code = <code object test_include_8, file '[d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:713]', line 1> def funccall(self, *args_w): # speed hack from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit nargs = len(args_w) fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, args_w[0]) elif nargs == 2: assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, args_w[0], args_w[1]) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) return code.fastcall_3(self.space, self, args_w[0], args_w[1], args_w[2]) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) return code.fastcall_4(self.space, self, args_w[0], args_w[1], args_w[2], args_w[3]) elif (nargs | PyCode.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) if nargs < 5: new_frame = self.space.createframe(code, self.w_func_globals, self) for i in funccallunrolling: if i < nargs: new_frame.locals_cells_stack_w[i] = args_w[i] > return new_frame.run() interpreter\function.py:118: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_include_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:713]', line 1> at line 5 def run(self): """Start this frame's execution.""" if self.getcode().co_flags & pycode.CO_GENERATOR: from pypy.interpreter.generator import GeneratorIterator return GeneratorIterator(self) else: > return self.execute_frame() interpreter\pyframe.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_include_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:713]', line 1> at line 5 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, executioncontext) except OperationError: raise except Exception as e: # general fall-back > raise self._convert_unexpected_exception(e) interpreter\pyframe.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_include_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:713]', line 1> at line 5 e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def _convert_unexpected_exception(self, e): from pypy.interpreter import error > operr = error.get_converted_unexpected_exception(self.space, e) interpreter\pyframe.py:943: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_include_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:713]', line 1> at line 5 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, > executioncontext) interpreter\pyframe.py:286: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_include_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:713]', line 1> at line 5 pycode = <code object test_include_8, file '[d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:713]', line 1> next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def dispatch(self, pycode, next_instr, ec): # For the sequel, force 'next_instr' to be unsigned for performance next_instr = r_uint(next_instr) co_code = pycode.co_code try: while True: > next_instr = self.handle_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:64: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_include_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:713]', line 1> at line 5 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x01\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00|\x00\x00\xc9\x00\x00d\x03\x0...00}\x05\x00\xcc\x1b\x00t\x04\x00|\x05\x00j\x05\x00\x83\x01\x00d\x07\x00k\x02\x00sr\x00t\x06\x00\x82\x01\x00d\x00\x00SS' next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def handle_bytecode(self, co_code, next_instr, ec): try: > next_instr = self.dispatch_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:71: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_include_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:713]', line 1> at line 5 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x01\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00|\x00\x00\xc9\x00\x00d\x03\x0...00}\x05\x00\xcc\x1b\x00t\x04\x00|\x05\x00j\x05\x00\x83\x01\x00d\x07\x00k\x02\x00sr\x00t\x06\x00\x82\x01\x00d\x00\x00SS' next_instr = 18L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> @jit.unroll_safe def dispatch_bytecode(self, co_code, next_instr, ec): while True: self.last_instr = intmask(next_instr) if jit.we_are_jitted(): if self.debugdata: ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) else: # Only reload next_instr from last_instr when something that # can modify it actually ran (trace function or action # dispatcher). In the common case (no trace, positive ticker) # next_instr is unchanged and the round-trip is skipped. _d = self.debugdata if ec.space.reverse_debugging or ( _d is not None and _d.w_f_trace is not None) or ( not we_are_translated() and 'bytecode_only_trace' in ec.__dict__): ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) actionflag = ec.space.actionflag if actionflag.decrement_ticker(TICK_COUNTER_STEP) < 0: actionflag.action_dispatcher(ec, self) next_instr = r_uint(self.last_instr) opcode = ord(co_code[next_instr]) next_instr += 1 if opcode >= HAVE_ARGUMENT: lo = ord(co_code[next_instr]) hi = ord(co_code[next_instr+1]) next_instr += 2 oparg = (hi * 256) | lo else: oparg = 0 # note: the structure of the code here is such that it makes # (after translation) a big "if/elif" chain, which is then # turned into a switch(). while opcode == opcodedesc.EXTENDED_ARG.index: opcode = ord(co_code[next_instr]) if opcode < HAVE_ARGUMENT: raise BytecodeCorruption lo = ord(co_code[next_instr+1]) hi = ord(co_code[next_instr+2]) next_instr += 3 oparg = (oparg * 65536) | (hi * 256) | lo if opcode == opcodedesc.RETURN_VALUE.index: if not self.blockstack_non_empty(): self.frame_finished_execution = True # for generators raise Return w_returnvalue = self.popvalue() block = self.unrollstack(SReturnValue.kind) if block is None: self.pushvalue(w_returnvalue) raise Return else: unroller = SReturnValue(w_returnvalue) next_instr = block.handle(self, unroller) return next_instr # now inside a 'finally' block elif opcode == opcodedesc.END_FINALLY.index: unroller = self.end_finally() if isinstance(unroller, SuspendedUnroller): # go on unrolling the stack block = self.unrollstack(unroller.kind) if block is None: w_result = unroller.nomoreblocks() self.pushvalue(w_result) raise Return else: next_instr = block.handle(self, unroller) return next_instr elif opcode == opcodedesc.JUMP_ABSOLUTE.index: return self.jump_absolute(oparg, ec) elif opcode == opcodedesc.BREAK_LOOP.index: next_instr = self.BREAK_LOOP(oparg, next_instr) elif opcode == opcodedesc.CONTINUE_LOOP.index: return self.CONTINUE_LOOP(oparg, next_instr) elif opcode == opcodedesc.FOR_ITER.index: next_instr = self.FOR_ITER(oparg, next_instr) elif opcode == opcodedesc.JUMP_FORWARD.index: next_instr = self.JUMP_FORWARD(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_FALSE_OR_POP.index: next_instr = self.JUMP_IF_FALSE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_NOT_DEBUG.index: next_instr = self.JUMP_IF_NOT_DEBUG(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_TRUE_OR_POP.index: next_instr = self.JUMP_IF_TRUE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_FALSE.index: next_instr = self.POP_JUMP_IF_FALSE(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_TRUE.index: next_instr = self.POP_JUMP_IF_TRUE(oparg, next_instr) elif opcode == opcodedesc.BINARY_ADD.index: self.BINARY_ADD(oparg, next_instr) elif opcode == opcodedesc.BINARY_AND.index: self.BINARY_AND(oparg, next_instr) elif opcode == opcodedesc.BINARY_DIVIDE.index: self.BINARY_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_FLOOR_DIVIDE.index: self.BINARY_FLOOR_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_LSHIFT.index: self.BINARY_LSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_MODULO.index: self.BINARY_MODULO(oparg, next_instr) elif opcode == opcodedesc.BINARY_MULTIPLY.index: self.BINARY_MULTIPLY(oparg, next_instr) elif opcode == opcodedesc.BINARY_OR.index: self.BINARY_OR(oparg, next_instr) elif opcode == opcodedesc.BINARY_POWER.index: self.BINARY_POWER(oparg, next_instr) elif opcode == opcodedesc.BINARY_RSHIFT.index: self.BINARY_RSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBSCR.index: self.BINARY_SUBSCR(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBTRACT.index: self.BINARY_SUBTRACT(oparg, next_instr) elif opcode == opcodedesc.BINARY_TRUE_DIVIDE.index: self.BINARY_TRUE_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_XOR.index: self.BINARY_XOR(oparg, next_instr) elif opcode == opcodedesc.BUILD_CLASS.index: self.BUILD_CLASS(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST.index: self.BUILD_LIST(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST_FROM_ARG.index: self.BUILD_LIST_FROM_ARG(oparg, next_instr) elif opcode == opcodedesc.BUILD_MAP.index: self.BUILD_MAP(oparg, next_instr) elif opcode == opcodedesc.BUILD_SET.index: self.BUILD_SET(oparg, next_instr) elif opcode == opcodedesc.BUILD_SLICE.index: self.BUILD_SLICE(oparg, next_instr) elif opcode == opcodedesc.BUILD_TUPLE.index: self.BUILD_TUPLE(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION.index: self.CALL_FUNCTION(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_KW.index: self.CALL_FUNCTION_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR.index: self.CALL_FUNCTION_VAR(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR_KW.index: self.CALL_FUNCTION_VAR_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_METHOD.index: > self.CALL_METHOD(oparg, next_instr) interpreter\pyopcode.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ f = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_include_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:713]', line 1> at line 5 oparg = 3, ignored = (18L,), n_args = 3, n_kwargs = 0, w_self = None @jit.unroll_safe def CALL_METHOD(f, oparg, *ignored): # opargs contains the arg, and kwarg count, excluding the implicit 'self' n_args = oparg & 0xff n_kwargs = (oparg >> 8) & 0xff w_self = f.peekvalue_maybe_none(n_args + (2 * n_kwargs)) n = n_args + (w_self is not None) if not n_kwargs: w_callable = f.peekvalue(n_args + (2 * n_kwargs) + 1) w_result = f.space.call_valuestack( > w_callable, n, f, methodcall=w_self is not None, dropvalues=n_args + 2) objspace\std\callmethod.py:96: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_include_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:713]', line 1> at line 5 dropvalues = 5, methodcall = False def call_valuestack(self, w_func, nargs, frame, dropvalues, methodcall=False): # methodcall is only used for better error messages in argument.py from pypy.interpreter.function import Function, Method, is_builtin_code if frame.get_is_being_profiled() and is_builtin_code(w_func): # XXX: this code is copied&pasted :-( from the slow path below # call_valuestack(). args = frame.make_arguments(nargs) frame.dropvalues(dropvalues) return self.call_args_and_c_profile(frame, w_func, args) if not self.config.objspace.disable_call_speedhacks: # start of hack for performance if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: w_func = w_func.w_function # reuse callable stack place for w_inst frame.settopvalue(w_inst, nargs) nargs += 1 methodcall = True elif nargs > 0 and ( self.abstract_isinstance_w(frame.peekvalue(nargs-1), # :-( w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): return w_func.funccall_valuestack( > nargs, frame, methodcall=methodcall, dropvalues=dropvalues) interpreter\baseobjspace.py:1243: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_include_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:713]', line 1> at line 5 dropvalues = 5, methodcall = False def funccall_valuestack(self, nargs, frame, dropvalues, methodcall=False): # speed hack # methodcall is only for better error messages from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit # if (jit.we_are_jitted() and code is self.space._code_of_sys_exc_info and nargs == 0): frame.dropvalues(dropvalues) from pypy.module.sys.vm import exc_info_direct return exc_info_direct(self.space, frame) # fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: f_0 = frame.peekvalue(0) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, f_0) elif nargs == 2: f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, f_1, f_0) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) frame.dropvalues(dropvalues) return code.fastcall_3(self.space, self, f_2, f_1, f_0) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) f_3 = frame.peekvalue(3) frame.dropvalues(dropvalues) return code.fastcall_4(self.space, self, f_3, f_2, f_1, f_0) elif (nargs | Code.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) return self._flat_pycall(code, nargs, frame, dropvalues) elif fast_natural_arity & Code.FLATPYCALL: natural_arity = fast_natural_arity & 0xff if natural_arity > nargs >= natural_arity - len(self.defs_w): assert isinstance(code, PyCode) return self._flat_pycall_defaults(code, nargs, frame, natural_arity - nargs, dropvalues) elif fast_natural_arity == Code.PASSTHROUGHARGS1 and nargs >= 1: assert isinstance(code, gateway.BuiltinCodePassThroughArguments1) w_obj = frame.peekvalue(nargs-1) args = frame.make_arguments(nargs-1) frame.dropvalues(dropvalues) return code.funcrun_obj(self, w_obj, args) args = frame.make_arguments(nargs, methodcall=methodcall) frame.dropvalues(dropvalues) > return self.call_args(args) interpreter\function.py:190: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('struct foo_s;'), W_BytesObject('test_include_8_parent'), W_BytesObject('struct foo_s;')]) def call_args(self, args): # delegate activation to code > w_res = self.getcode().funcrun(self, args) interpreter\function.py:68: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('struct foo_s;'), W_BytesObject('test_include_8_parent'), W_BytesObject('struct foo_s;')]) def funcrun(self, func, args): > return BuiltinCode.funcrun_obj(self, func, None, args) interpreter\gateway.py:781: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('struct foo_s;'), W_BytesObject('test_include_8_parent'), W_BytesObject('struct foo_s;')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: w_result = activation._run(space, scope_w) except DescrMismatch: if w_obj is not None: args = args.prepend(w_obj) return self._type_unwrap_mismatch(space, args) except Exception as e: > self.handle_exception(space, e) interpreter\gateway.py:795: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> space = StdObjSpace e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def handle_exception(self, space, e): try: if not we_are_translated(): raise raise e except OperationError: raise except Exception as e: # general fall-back from pypy.interpreter import error > raise error.get_converted_unexpected_exception(space, e) interpreter\gateway.py:819: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('struct foo_s;'), W_BytesObject('test_include_8_parent'), W_BytesObject('struct foo_s;')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: > w_result = activation._run(space, scope_w) interpreter\gateway.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinActivation_UwS_ObjSpace_text_text_text_W_Root_W_Root_W_Root_int_W_Root object at 0x000002791c13af38> space = StdObjSpace scope_w = [W_BytesObject('struct foo_s;'), W_BytesObject('test_include_8_parent'), W_BytesObject('struct foo_s;'), None, None, None, ...] def _run(self, space, scope_w): > return self.behavior(space, space.text_w(scope_w[0]), space.text_w(scope_w[1]), space.text_w(scope_w[2]), scope_w[3], scope_w[4], scope_w[5], space.gateway_int_w(scope_w[6]), scope_w[7]) <3152-codegen d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\rpython\tool\sourcetools.py:200>:3: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace, cdef = 'struct foo_s;' module_name = '_CFFI_test_include_8_parent', source = 'struct foo_s;' w_includes = None, w_extra_source = None, w_min_version = None, packed = 0 w_extra_compile_args = None @unwrap_spec(cdef='text', module_name='text', source='text', packed=int) def prepare(space, cdef, module_name, source, w_includes=None, w_extra_source=None, w_min_version=None, packed=False, w_extra_compile_args=None): try: import cffi from cffi import FFI # <== the system one, which from cffi import recompiler # needs to be at least cffi 1.0.4 from cffi import ffiplatform except ImportError: pytest.skip("system cffi module not found or older than 1.0.0") if w_min_version is None: min_version = (1, 4, 0) else: min_version = tuple(space.unwrap(w_min_version)) if cffi.__version_info__ < min_version: pytest.skip("system cffi module needs to be at least %s, got %s" % ( min_version, cffi.__version_info__)) space.appexec([], """(): import _cffi_backend # force it to be initialized """) includes = [] if w_includes: includes += space.unpackiterable(w_includes) assert module_name.startswith('test_') module_name = '_CFFI_' + module_name rdir = udir.ensure('recompiler', dir=1) rdir.join('Python.h').write( '#include <stdio.h>\n' '#define PYPY_VERSION XX\n' '#define PyMODINIT_FUNC /*exported*/ void\n' ) path = module_name.replace('.', os.sep) if '.' in module_name: subrdir = rdir.join(module_name[:module_name.index('.')]) os.mkdir(str(subrdir)) else: subrdir = rdir c_file = str(rdir.join('%s.c' % path)) ffi = FFI() for include_ffi_object in includes: ffi.include(include_ffi_object._test_recompiler_source_ffi) ffi.cdef(cdef, packed=packed) ffi.set_source(module_name, source) ffi.emit_c_code(c_file) base_module_name = module_name.split('.')[-1] sources = [] if w_extra_source is not None: sources.append(space.str_w(w_extra_source)) kwargs = {} # GCC 14 promotes -Wincompatible-pointer-types from a warning to an error # by default, which breaks cffi's intentionally-mismatched field-check # probes (e.g. test_misdeclared_field_1). Keep it a warning so the module # compiles and cffi's runtime checks can run. extra = ['-Wno-error=incompatible-pointer-types'] if w_extra_compile_args is not None: extra = extra + space.unwrap(w_extra_compile_args) kwargs['extra_compile_args'] = extra ext = ffiplatform.get_extension(c_file, module_name, include_dirs=[str(rdir)], export_symbols=['_cffi_pypyinit_' + base_module_name], sources=sources, **kwargs) > ffiplatform.compile(str(rdir), ext) module\_cffi_backend\test\test_recompiler.py:86: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x00000279279268e0> compiler_verbose = 0, debug = None def compile(tmpdir, ext, compiler_verbose=0, debug=None): """Compile a C extension module using distutils.""" saved_environ = os.environ.copy() try: > outputfilename = _build(tmpdir, ext, compiler_verbose, debug) d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x00000279279268e0> compiler_verbose = 0, debug = 0 def _build(tmpdir, ext, compiler_verbose=0, debug=None): # XXX compact but horrible :-( from cffi._shimmed_dist_utils import Distribution, CompileError, LinkError, set_threshold, set_verbosity dist = Distribution({'ext_modules': [ext]}) dist.parse_config_files() options = dist.get_option_dict('build_ext') if debug is None: debug = sys.flags.debug options['debug'] = ('ffiplatform', debug) options['force'] = ('ffiplatform', True) options['build_lib'] = ('ffiplatform', tmpdir) options['build_temp'] = ('ffiplatform', tmpdir) # try: old_level = set_threshold(0) or 0 try: set_verbosity(compiler_verbose) dist.run_command('build_ext') cmd_obj = dist.get_command_obj('build_ext') [soname] = cmd_obj.get_outputs() finally: set_threshold(old_level) except (CompileError, LinkError) as e: > raise VerificationError('%s: %s' % (e.__class__.__name__, e)) E VerificationError: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2 d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:54: VerificationError ---------------------------- Captured stdout call ----------------------------- generating d:\systemtemp\pytest\usession-main-595\recompiler\_CFFI_test_include_8_parent.c ---------------------------- Captured stderr call ----------------------------- cl : Command line error D8021 : invalid numeric argument '/Wno-error=incompatible-pointer-types' ____________________ AppTestRecompiler.test_bitfield_basic ____________________ self = <CallInfo when='call' exception: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2> func = <function <lambda> at 0x0000027927822d40>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ..\_pytest\runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ..\_pytest\runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_bitfield_basic'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_bitfield_basic'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ..\_pytest\vendored_packages\pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00000279153616a8> hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_bitfield_basic'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_bitfield_basic'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ..\_pytest\vendored_packages\pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_bitfield_basic'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_bitfield_basic'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ..\_pytest\vendored_packages\pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_bitfield_basic'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791fddf240> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...ield_basic'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027925ee7f20> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027925ee7f20> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...ield_basic'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_bitfield_basic'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791fddf1c8> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...ield_basic'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027925ee7ee0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027925ee7ee0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...ield_basic'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_bitfield_basic'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ..\_pytest\vendored_packages\pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_bitfield_basic'> def pytest_runtest_call(item): try: > item.runtest() ..\_pytest\runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_bitfield_basic'> def runtest(self): target = self.obj if self.config.option.runappdirect: return target() space = target.im_self.space filename = self._getdynfilename(target) func = app2interp_temp(target.im_func, filename=filename) w_instance = self.parent.w_instance > self.execute_appex(space, func, space, w_instance) tool\pytest\apptest.py:89: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_bitfield_basic'>, space = StdObjSpace target = <function test_bitfield_basic at 0x0000027927822db8> args = (StdObjSpace, <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>) def execute_appex(self, space, target, *args): self.space = space try: > target(*args) tool\pytest\apptest.py:30: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) w_func = <Function test_bitfield_basic> args = <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8> def appcaller(space, *args_w): if not isinstance(space, ObjSpace): raise TypeError("first argument must be a space instance.") # the last argument can be an Arguments w_func = self.wget(space, name) if not args_w: return space.call_function(w_func) else: args = args_w[-1] assert args is not None if not isinstance(args, Arguments): > return space.call_function(w_func, *args_w) interpreter\gateway.py:1227: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <Function test_bitfield_basic> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) nargs = 1, Function = <class 'pypy.interpreter.function.Function'> Method = <class 'pypy.interpreter.function.Method'> def call_function(self, w_func, *args_w): nargs = len(args_w) # used for pruning funccall versions if not self.config.objspace.disable_call_speedhacks and nargs < 5: # start of hack for performance from pypy.interpreter.function import Function, Method if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: if nargs < 4: func = w_func.w_function if isinstance(func, Function): return func.funccall(w_inst, *args_w) elif args_w and ( self.abstract_isinstance_w(args_w[0], w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): > return w_func.funccall(*args_w) interpreter\baseobjspace.py:1210: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <Function test_bitfield_basic> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) gateway = <module 'pypy.interpreter.gateway' from 'd:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\interpreter\\gateway.pyc'> PyCode = <class 'pypy.interpreter.pycode.PyCode'> code = <code object test_bitfield_basic, file '[d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:729]', line 1> def funccall(self, *args_w): # speed hack from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit nargs = len(args_w) fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, args_w[0]) elif nargs == 2: assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, args_w[0], args_w[1]) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) return code.fastcall_3(self.space, self, args_w[0], args_w[1], args_w[2]) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) return code.fastcall_4(self.space, self, args_w[0], args_w[1], args_w[2], args_w[3]) elif (nargs | PyCode.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) if nargs < 5: new_frame = self.space.createframe(code, self.w_func_globals, self) for i in funccallunrolling: if i < nargs: new_frame.locals_cells_stack_w[i] = args_w[i] > return new_frame.run() interpreter\function.py:118: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_bitfield...uild\pypy\module\_cffi_backend\test\test_recompiler.py:729]', line 1> at line 5 def run(self): """Start this frame's execution.""" if self.getcode().co_flags & pycode.CO_GENERATOR: from pypy.interpreter.generator import GeneratorIterator return GeneratorIterator(self) else: > return self.execute_frame() interpreter\pyframe.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_bitfield...uild\pypy\module\_cffi_backend\test\test_recompiler.py:729]', line 1> at line 5 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, executioncontext) except OperationError: raise except Exception as e: # general fall-back > raise self._convert_unexpected_exception(e) interpreter\pyframe.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_bitfield...uild\pypy\module\_cffi_backend\test\test_recompiler.py:729]', line 1> at line 5 e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def _convert_unexpected_exception(self, e): from pypy.interpreter import error > operr = error.get_converted_unexpected_exception(self.space, e) interpreter\pyframe.py:943: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_bitfield...uild\pypy\module\_cffi_backend\test\test_recompiler.py:729]', line 1> at line 5 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, > executioncontext) interpreter\pyframe.py:286: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_bitfield...uild\pypy\module\_cffi_backend\test\test_recompiler.py:729]', line 1> at line 5 pycode = <code object test_bitfield_basic, file '[d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:729]', line 1> next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def dispatch(self, pycode, next_instr, ec): # For the sequel, force 'next_instr' to be unsigned for performance next_instr = r_uint(next_instr) co_code = pycode.co_code try: while True: > next_instr = self.handle_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:64: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_bitfield...uild\pypy\module\_cffi_backend\test\test_recompiler.py:729]', line 1> at line 5 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x01\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00\xcc\x1b\x00|\x01\x00\xc9\x01...\x06\x00d\x07\x00\x83\x02\x00\x01\xcc\x15\x00|\x03\x00j\x04\x00d\x06\x00k\x02\x00sv\x00t\x02\x00\x82\x01\x00d\x00\x00S' next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def handle_bytecode(self, co_code, next_instr, ec): try: > next_instr = self.dispatch_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:71: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_bitfield...uild\pypy\module\_cffi_backend\test\test_recompiler.py:729]', line 1> at line 5 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x01\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00\xcc\x1b\x00|\x01\x00\xc9\x01...\x06\x00d\x07\x00\x83\x02\x00\x01\xcc\x15\x00|\x03\x00j\x04\x00d\x06\x00k\x02\x00sv\x00t\x02\x00\x82\x01\x00d\x00\x00S' next_instr = 18L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> @jit.unroll_safe def dispatch_bytecode(self, co_code, next_instr, ec): while True: self.last_instr = intmask(next_instr) if jit.we_are_jitted(): if self.debugdata: ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) else: # Only reload next_instr from last_instr when something that # can modify it actually ran (trace function or action # dispatcher). In the common case (no trace, positive ticker) # next_instr is unchanged and the round-trip is skipped. _d = self.debugdata if ec.space.reverse_debugging or ( _d is not None and _d.w_f_trace is not None) or ( not we_are_translated() and 'bytecode_only_trace' in ec.__dict__): ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) actionflag = ec.space.actionflag if actionflag.decrement_ticker(TICK_COUNTER_STEP) < 0: actionflag.action_dispatcher(ec, self) next_instr = r_uint(self.last_instr) opcode = ord(co_code[next_instr]) next_instr += 1 if opcode >= HAVE_ARGUMENT: lo = ord(co_code[next_instr]) hi = ord(co_code[next_instr+1]) next_instr += 2 oparg = (hi * 256) | lo else: oparg = 0 # note: the structure of the code here is such that it makes # (after translation) a big "if/elif" chain, which is then # turned into a switch(). while opcode == opcodedesc.EXTENDED_ARG.index: opcode = ord(co_code[next_instr]) if opcode < HAVE_ARGUMENT: raise BytecodeCorruption lo = ord(co_code[next_instr+1]) hi = ord(co_code[next_instr+2]) next_instr += 3 oparg = (oparg * 65536) | (hi * 256) | lo if opcode == opcodedesc.RETURN_VALUE.index: if not self.blockstack_non_empty(): self.frame_finished_execution = True # for generators raise Return w_returnvalue = self.popvalue() block = self.unrollstack(SReturnValue.kind) if block is None: self.pushvalue(w_returnvalue) raise Return else: unroller = SReturnValue(w_returnvalue) next_instr = block.handle(self, unroller) return next_instr # now inside a 'finally' block elif opcode == opcodedesc.END_FINALLY.index: unroller = self.end_finally() if isinstance(unroller, SuspendedUnroller): # go on unrolling the stack block = self.unrollstack(unroller.kind) if block is None: w_result = unroller.nomoreblocks() self.pushvalue(w_result) raise Return else: next_instr = block.handle(self, unroller) return next_instr elif opcode == opcodedesc.JUMP_ABSOLUTE.index: return self.jump_absolute(oparg, ec) elif opcode == opcodedesc.BREAK_LOOP.index: next_instr = self.BREAK_LOOP(oparg, next_instr) elif opcode == opcodedesc.CONTINUE_LOOP.index: return self.CONTINUE_LOOP(oparg, next_instr) elif opcode == opcodedesc.FOR_ITER.index: next_instr = self.FOR_ITER(oparg, next_instr) elif opcode == opcodedesc.JUMP_FORWARD.index: next_instr = self.JUMP_FORWARD(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_FALSE_OR_POP.index: next_instr = self.JUMP_IF_FALSE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_NOT_DEBUG.index: next_instr = self.JUMP_IF_NOT_DEBUG(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_TRUE_OR_POP.index: next_instr = self.JUMP_IF_TRUE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_FALSE.index: next_instr = self.POP_JUMP_IF_FALSE(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_TRUE.index: next_instr = self.POP_JUMP_IF_TRUE(oparg, next_instr) elif opcode == opcodedesc.BINARY_ADD.index: self.BINARY_ADD(oparg, next_instr) elif opcode == opcodedesc.BINARY_AND.index: self.BINARY_AND(oparg, next_instr) elif opcode == opcodedesc.BINARY_DIVIDE.index: self.BINARY_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_FLOOR_DIVIDE.index: self.BINARY_FLOOR_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_LSHIFT.index: self.BINARY_LSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_MODULO.index: self.BINARY_MODULO(oparg, next_instr) elif opcode == opcodedesc.BINARY_MULTIPLY.index: self.BINARY_MULTIPLY(oparg, next_instr) elif opcode == opcodedesc.BINARY_OR.index: self.BINARY_OR(oparg, next_instr) elif opcode == opcodedesc.BINARY_POWER.index: self.BINARY_POWER(oparg, next_instr) elif opcode == opcodedesc.BINARY_RSHIFT.index: self.BINARY_RSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBSCR.index: self.BINARY_SUBSCR(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBTRACT.index: self.BINARY_SUBTRACT(oparg, next_instr) elif opcode == opcodedesc.BINARY_TRUE_DIVIDE.index: self.BINARY_TRUE_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_XOR.index: self.BINARY_XOR(oparg, next_instr) elif opcode == opcodedesc.BUILD_CLASS.index: self.BUILD_CLASS(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST.index: self.BUILD_LIST(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST_FROM_ARG.index: self.BUILD_LIST_FROM_ARG(oparg, next_instr) elif opcode == opcodedesc.BUILD_MAP.index: self.BUILD_MAP(oparg, next_instr) elif opcode == opcodedesc.BUILD_SET.index: self.BUILD_SET(oparg, next_instr) elif opcode == opcodedesc.BUILD_SLICE.index: self.BUILD_SLICE(oparg, next_instr) elif opcode == opcodedesc.BUILD_TUPLE.index: self.BUILD_TUPLE(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION.index: self.CALL_FUNCTION(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_KW.index: self.CALL_FUNCTION_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR.index: self.CALL_FUNCTION_VAR(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR_KW.index: self.CALL_FUNCTION_VAR_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_METHOD.index: > self.CALL_METHOD(oparg, next_instr) interpreter\pyopcode.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ f = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_bitfield...uild\pypy\module\_cffi_backend\test\test_recompiler.py:729]', line 1> at line 5 oparg = 3, ignored = (18L,), n_args = 3, n_kwargs = 0, w_self = None @jit.unroll_safe def CALL_METHOD(f, oparg, *ignored): # opargs contains the arg, and kwarg count, excluding the implicit 'self' n_args = oparg & 0xff n_kwargs = (oparg >> 8) & 0xff w_self = f.peekvalue_maybe_none(n_args + (2 * n_kwargs)) n = n_args + (w_self is not None) if not n_kwargs: w_callable = f.peekvalue(n_args + (2 * n_kwargs) + 1) w_result = f.space.call_valuestack( > w_callable, n, f, methodcall=w_self is not None, dropvalues=n_args + 2) objspace\std\callmethod.py:96: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_bitfield...uild\pypy\module\_cffi_backend\test\test_recompiler.py:729]', line 1> at line 5 dropvalues = 5, methodcall = False def call_valuestack(self, w_func, nargs, frame, dropvalues, methodcall=False): # methodcall is only used for better error messages in argument.py from pypy.interpreter.function import Function, Method, is_builtin_code if frame.get_is_being_profiled() and is_builtin_code(w_func): # XXX: this code is copied&pasted :-( from the slow path below # call_valuestack(). args = frame.make_arguments(nargs) frame.dropvalues(dropvalues) return self.call_args_and_c_profile(frame, w_func, args) if not self.config.objspace.disable_call_speedhacks: # start of hack for performance if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: w_func = w_func.w_function # reuse callable stack place for w_inst frame.settopvalue(w_inst, nargs) nargs += 1 methodcall = True elif nargs > 0 and ( self.abstract_isinstance_w(frame.peekvalue(nargs-1), # :-( w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): return w_func.funccall_valuestack( > nargs, frame, methodcall=methodcall, dropvalues=dropvalues) interpreter\baseobjspace.py:1243: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_bitfield...uild\pypy\module\_cffi_backend\test\test_recompiler.py:729]', line 1> at line 5 dropvalues = 5, methodcall = False def funccall_valuestack(self, nargs, frame, dropvalues, methodcall=False): # speed hack # methodcall is only for better error messages from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit # if (jit.we_are_jitted() and code is self.space._code_of_sys_exc_info and nargs == 0): frame.dropvalues(dropvalues) from pypy.module.sys.vm import exc_info_direct return exc_info_direct(self.space, frame) # fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: f_0 = frame.peekvalue(0) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, f_0) elif nargs == 2: f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, f_1, f_0) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) frame.dropvalues(dropvalues) return code.fastcall_3(self.space, self, f_2, f_1, f_0) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) f_3 = frame.peekvalue(3) frame.dropvalues(dropvalues) return code.fastcall_4(self.space, self, f_3, f_2, f_1, f_0) elif (nargs | Code.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) return self._flat_pycall(code, nargs, frame, dropvalues) elif fast_natural_arity & Code.FLATPYCALL: natural_arity = fast_natural_arity & 0xff if natural_arity > nargs >= natural_arity - len(self.defs_w): assert isinstance(code, PyCode) return self._flat_pycall_defaults(code, nargs, frame, natural_arity - nargs, dropvalues) elif fast_natural_arity == Code.PASSTHROUGHARGS1 and nargs >= 1: assert isinstance(code, gateway.BuiltinCodePassThroughArguments1) w_obj = frame.peekvalue(nargs-1) args = frame.make_arguments(nargs-1) frame.dropvalues(dropvalues) return code.funcrun_obj(self, w_obj, args) args = frame.make_arguments(nargs, methodcall=methodcall) frame.dropvalues(dropvalues) > return self.call_args(args) interpreter\function.py:190: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('struct bitfield { int a:10, b:25; };'), W_BytesObject('test_bitfield_basic'), W_BytesObject('struct bitfield { int a:10, b:25; };')]) def call_args(self, args): # delegate activation to code > w_res = self.getcode().funcrun(self, args) interpreter\function.py:68: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('struct bitfield { int a:10, b:25; };'), W_BytesObject('test_bitfield_basic'), W_BytesObject('struct bitfield { int a:10, b:25; };')]) def funcrun(self, func, args): > return BuiltinCode.funcrun_obj(self, func, None, args) interpreter\gateway.py:781: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('struct bitfield { int a:10, b:25; };'), W_BytesObject('test_bitfield_basic'), W_BytesObject('struct bitfield { int a:10, b:25; };')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: w_result = activation._run(space, scope_w) except DescrMismatch: if w_obj is not None: args = args.prepend(w_obj) return self._type_unwrap_mismatch(space, args) except Exception as e: > self.handle_exception(space, e) interpreter\gateway.py:795: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> space = StdObjSpace e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def handle_exception(self, space, e): try: if not we_are_translated(): raise raise e except OperationError: raise except Exception as e: # general fall-back from pypy.interpreter import error > raise error.get_converted_unexpected_exception(space, e) interpreter\gateway.py:819: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('struct bitfield { int a:10, b:25; };'), W_BytesObject('test_bitfield_basic'), W_BytesObject('struct bitfield { int a:10, b:25; };')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: > w_result = activation._run(space, scope_w) interpreter\gateway.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinActivation_UwS_ObjSpace_text_text_text_W_Root_W_Root_W_Root_int_W_Root object at 0x000002791c13af38> space = StdObjSpace scope_w = [W_BytesObject('struct bitfield { int a:10, b:25; };'), W_BytesObject('test_bitfield_basic'), W_BytesObject('struct bitfield { int a:10, b:25; };'), None, None, None, ...] def _run(self, space, scope_w): > return self.behavior(space, space.text_w(scope_w[0]), space.text_w(scope_w[1]), space.text_w(scope_w[2]), scope_w[3], scope_w[4], scope_w[5], space.gateway_int_w(scope_w[6]), scope_w[7]) <3152-codegen d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\rpython\tool\sourcetools.py:200>:3: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace, cdef = 'struct bitfield { int a:10, b:25; };' module_name = '_CFFI_test_bitfield_basic' source = 'struct bitfield { int a:10, b:25; };', w_includes = None w_extra_source = None, w_min_version = None, packed = 0 w_extra_compile_args = None @unwrap_spec(cdef='text', module_name='text', source='text', packed=int) def prepare(space, cdef, module_name, source, w_includes=None, w_extra_source=None, w_min_version=None, packed=False, w_extra_compile_args=None): try: import cffi from cffi import FFI # <== the system one, which from cffi import recompiler # needs to be at least cffi 1.0.4 from cffi import ffiplatform except ImportError: pytest.skip("system cffi module not found or older than 1.0.0") if w_min_version is None: min_version = (1, 4, 0) else: min_version = tuple(space.unwrap(w_min_version)) if cffi.__version_info__ < min_version: pytest.skip("system cffi module needs to be at least %s, got %s" % ( min_version, cffi.__version_info__)) space.appexec([], """(): import _cffi_backend # force it to be initialized """) includes = [] if w_includes: includes += space.unpackiterable(w_includes) assert module_name.startswith('test_') module_name = '_CFFI_' + module_name rdir = udir.ensure('recompiler', dir=1) rdir.join('Python.h').write( '#include <stdio.h>\n' '#define PYPY_VERSION XX\n' '#define PyMODINIT_FUNC /*exported*/ void\n' ) path = module_name.replace('.', os.sep) if '.' in module_name: subrdir = rdir.join(module_name[:module_name.index('.')]) os.mkdir(str(subrdir)) else: subrdir = rdir c_file = str(rdir.join('%s.c' % path)) ffi = FFI() for include_ffi_object in includes: ffi.include(include_ffi_object._test_recompiler_source_ffi) ffi.cdef(cdef, packed=packed) ffi.set_source(module_name, source) ffi.emit_c_code(c_file) base_module_name = module_name.split('.')[-1] sources = [] if w_extra_source is not None: sources.append(space.str_w(w_extra_source)) kwargs = {} # GCC 14 promotes -Wincompatible-pointer-types from a warning to an error # by default, which breaks cffi's intentionally-mismatched field-check # probes (e.g. test_misdeclared_field_1). Keep it a warning so the module # compiles and cffi's runtime checks can run. extra = ['-Wno-error=incompatible-pointer-types'] if w_extra_compile_args is not None: extra = extra + space.unwrap(w_extra_compile_args) kwargs['extra_compile_args'] = extra ext = ffiplatform.get_extension(c_file, module_name, include_dirs=[str(rdir)], export_symbols=['_cffi_pypyinit_' + base_module_name], sources=sources, **kwargs) > ffiplatform.compile(str(rdir), ext) module\_cffi_backend\test\test_recompiler.py:86: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x000002792a90ad60> compiler_verbose = 0, debug = None def compile(tmpdir, ext, compiler_verbose=0, debug=None): """Compile a C extension module using distutils.""" saved_environ = os.environ.copy() try: > outputfilename = _build(tmpdir, ext, compiler_verbose, debug) d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x000002792a90ad60> compiler_verbose = 0, debug = 0 def _build(tmpdir, ext, compiler_verbose=0, debug=None): # XXX compact but horrible :-( from cffi._shimmed_dist_utils import Distribution, CompileError, LinkError, set_threshold, set_verbosity dist = Distribution({'ext_modules': [ext]}) dist.parse_config_files() options = dist.get_option_dict('build_ext') if debug is None: debug = sys.flags.debug options['debug'] = ('ffiplatform', debug) options['force'] = ('ffiplatform', True) options['build_lib'] = ('ffiplatform', tmpdir) options['build_temp'] = ('ffiplatform', tmpdir) # try: old_level = set_threshold(0) or 0 try: set_verbosity(compiler_verbose) dist.run_command('build_ext') cmd_obj = dist.get_command_obj('build_ext') [soname] = cmd_obj.get_outputs() finally: set_threshold(old_level) except (CompileError, LinkError) as e: > raise VerificationError('%s: %s' % (e.__class__.__name__, e)) E VerificationError: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2 d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:54: VerificationError ---------------------------- Captured stdout call ----------------------------- generating d:\systemtemp\pytest\usession-main-595\recompiler\_CFFI_test_bitfield_basic.c ---------------------------- Captured stderr call ----------------------------- cl : Command line error D8021 : invalid numeric argument '/Wno-error=incompatible-pointer-types' _______________ AppTestRecompiler.test_incomplete_struct_as_arg _______________ self = <CallInfo when='call' exception: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2> func = <function <lambda> at 0x0000027920883a60>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ..\_pytest\runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ..\_pytest\runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_incomplete_struct_as_arg'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_incomplete_struct_as_arg'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ..\_pytest\vendored_packages\pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00000279153616a8> hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_incomplete_struct_as_arg'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_incomplete_struct_as_arg'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ..\_pytest\vendored_packages\pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_incomplete_struct_as_arg'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_incomplete_struct_as_arg'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ..\_pytest\vendored_packages\pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_incomplete_struct_as_arg'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791eac7290> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...uct_as_arg'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792b879d60> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792b879d60> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...uct_as_arg'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_incomplete_struct_as_arg'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791eac7218> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...uct_as_arg'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792b879d20> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792b879d20> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...uct_as_arg'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_incomplete_struct_as_arg'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ..\_pytest\vendored_packages\pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_incomplete_struct_as_arg'> def pytest_runtest_call(item): try: > item.runtest() ..\_pytest\runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_incomplete_struct_as_arg'> def runtest(self): target = self.obj if self.config.option.runappdirect: return target() space = target.im_self.space filename = self._getdynfilename(target) func = app2interp_temp(target.im_func, filename=filename) w_instance = self.parent.w_instance > self.execute_appex(space, func, space, w_instance) tool\pytest\apptest.py:89: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_incomplete_struct_as_arg'>, space = StdObjSpace target = <function test_incomplete_struct_as_arg at 0x0000027920883e98> args = (StdObjSpace, <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>) def execute_appex(self, space, target, *args): self.space = space try: > target(*args) tool\pytest\apptest.py:30: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) w_func = <Function test_incomplete_struct_as_arg> args = <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8> def appcaller(space, *args_w): if not isinstance(space, ObjSpace): raise TypeError("first argument must be a space instance.") # the last argument can be an Arguments w_func = self.wget(space, name) if not args_w: return space.call_function(w_func) else: args = args_w[-1] assert args is not None if not isinstance(args, Arguments): > return space.call_function(w_func, *args_w) interpreter\gateway.py:1227: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <Function test_incomplete_struct_as_arg> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) nargs = 1, Function = <class 'pypy.interpreter.function.Function'> Method = <class 'pypy.interpreter.function.Method'> def call_function(self, w_func, *args_w): nargs = len(args_w) # used for pruning funccall versions if not self.config.objspace.disable_call_speedhacks and nargs < 5: # start of hack for performance from pypy.interpreter.function import Function, Method if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: if nargs < 4: func = w_func.w_function if isinstance(func, Function): return func.funccall(w_inst, *args_w) elif args_w and ( self.abstract_isinstance_w(args_w[0], w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): > return w_func.funccall(*args_w) interpreter\baseobjspace.py:1210: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <Function test_incomplete_struct_as_arg> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) gateway = <module 'pypy.interpreter.gateway' from 'd:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\interpreter\\gateway.pyc'> PyCode = <class 'pypy.interpreter.pycode.PyCode'> code = <code object test_incomplete_struct_as_arg, file '[d:\pypy_stuff\buildbot64\sl...n-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:740]', line 1> def funccall(self, *args_w): # speed hack from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit nargs = len(args_w) fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, args_w[0]) elif nargs == 2: assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, args_w[0], args_w[1]) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) return code.fastcall_3(self.space, self, args_w[0], args_w[1], args_w[2]) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) return code.fastcall_4(self.space, self, args_w[0], args_w[1], args_w[2], args_w[3]) elif (nargs | PyCode.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) if nargs < 5: new_frame = self.space.createframe(code, self.w_func_globals, self) for i in funccallunrolling: if i < nargs: new_frame.locals_cells_stack_w[i] = args_w[i] > return new_frame.run() interpreter\function.py:118: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_incomple...uild\pypy\module\_cffi_backend\test\test_recompiler.py:740]', line 1> at line 5 def run(self): """Start this frame's execution.""" if self.getcode().co_flags & pycode.CO_GENERATOR: from pypy.interpreter.generator import GeneratorIterator return GeneratorIterator(self) else: > return self.execute_frame() interpreter\pyframe.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_incomple...uild\pypy\module\_cffi_backend\test\test_recompiler.py:740]', line 1> at line 5 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, executioncontext) except OperationError: raise except Exception as e: # general fall-back > raise self._convert_unexpected_exception(e) interpreter\pyframe.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_incomple...uild\pypy\module\_cffi_backend\test\test_recompiler.py:740]', line 1> at line 5 e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def _convert_unexpected_exception(self, e): from pypy.interpreter import error > operr = error.get_converted_unexpected_exception(self.space, e) interpreter\pyframe.py:943: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_incomple...uild\pypy\module\_cffi_backend\test\test_recompiler.py:740]', line 1> at line 5 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, > executioncontext) interpreter\pyframe.py:286: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_incomple...uild\pypy\module\_cffi_backend\test\test_recompiler.py:740]', line 1> at line 5 pycode = <code object test_incomplete_struct_as_arg, file '[d:\pypy_stuff\buildbot64\sl...n-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:740]', line 1> next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def dispatch(self, pycode, next_instr, ec): # For the sequel, force 'next_instr' to be unsigned for performance next_instr = r_uint(next_instr) co_code = pycode.co_code try: while True: > next_instr = self.handle_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:64: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_incomple...uild\pypy\module\_cffi_backend\test\test_recompiler.py:740]', line 1> at line 5 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00|\x01\x00\xc9\x01\x00d\x04\x0...02\x00j\x07\x00\xca\x01\x00|\x01\x00\xc9\x06\x00d\x0c\x00\xca\x01\x00k\x02\x00s\xe3\x00t\x03\x00\x82\x01\x00d\x00\x00S' next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def handle_bytecode(self, co_code, next_instr, ec): try: > next_instr = self.dispatch_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:71: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_incomple...uild\pypy\module\_cffi_backend\test\test_recompiler.py:740]', line 1> at line 5 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00|\x01\x00\xc9\x01\x00d\x04\x0...02\x00j\x07\x00\xca\x01\x00|\x01\x00\xc9\x06\x00d\x0c\x00\xca\x01\x00k\x02\x00s\xe3\x00t\x03\x00\x82\x01\x00d\x00\x00S' next_instr = 18L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> @jit.unroll_safe def dispatch_bytecode(self, co_code, next_instr, ec): while True: self.last_instr = intmask(next_instr) if jit.we_are_jitted(): if self.debugdata: ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) else: # Only reload next_instr from last_instr when something that # can modify it actually ran (trace function or action # dispatcher). In the common case (no trace, positive ticker) # next_instr is unchanged and the round-trip is skipped. _d = self.debugdata if ec.space.reverse_debugging or ( _d is not None and _d.w_f_trace is not None) or ( not we_are_translated() and 'bytecode_only_trace' in ec.__dict__): ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) actionflag = ec.space.actionflag if actionflag.decrement_ticker(TICK_COUNTER_STEP) < 0: actionflag.action_dispatcher(ec, self) next_instr = r_uint(self.last_instr) opcode = ord(co_code[next_instr]) next_instr += 1 if opcode >= HAVE_ARGUMENT: lo = ord(co_code[next_instr]) hi = ord(co_code[next_instr+1]) next_instr += 2 oparg = (hi * 256) | lo else: oparg = 0 # note: the structure of the code here is such that it makes # (after translation) a big "if/elif" chain, which is then # turned into a switch(). while opcode == opcodedesc.EXTENDED_ARG.index: opcode = ord(co_code[next_instr]) if opcode < HAVE_ARGUMENT: raise BytecodeCorruption lo = ord(co_code[next_instr+1]) hi = ord(co_code[next_instr+2]) next_instr += 3 oparg = (oparg * 65536) | (hi * 256) | lo if opcode == opcodedesc.RETURN_VALUE.index: if not self.blockstack_non_empty(): self.frame_finished_execution = True # for generators raise Return w_returnvalue = self.popvalue() block = self.unrollstack(SReturnValue.kind) if block is None: self.pushvalue(w_returnvalue) raise Return else: unroller = SReturnValue(w_returnvalue) next_instr = block.handle(self, unroller) return next_instr # now inside a 'finally' block elif opcode == opcodedesc.END_FINALLY.index: unroller = self.end_finally() if isinstance(unroller, SuspendedUnroller): # go on unrolling the stack block = self.unrollstack(unroller.kind) if block is None: w_result = unroller.nomoreblocks() self.pushvalue(w_result) raise Return else: next_instr = block.handle(self, unroller) return next_instr elif opcode == opcodedesc.JUMP_ABSOLUTE.index: return self.jump_absolute(oparg, ec) elif opcode == opcodedesc.BREAK_LOOP.index: next_instr = self.BREAK_LOOP(oparg, next_instr) elif opcode == opcodedesc.CONTINUE_LOOP.index: return self.CONTINUE_LOOP(oparg, next_instr) elif opcode == opcodedesc.FOR_ITER.index: next_instr = self.FOR_ITER(oparg, next_instr) elif opcode == opcodedesc.JUMP_FORWARD.index: next_instr = self.JUMP_FORWARD(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_FALSE_OR_POP.index: next_instr = self.JUMP_IF_FALSE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_NOT_DEBUG.index: next_instr = self.JUMP_IF_NOT_DEBUG(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_TRUE_OR_POP.index: next_instr = self.JUMP_IF_TRUE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_FALSE.index: next_instr = self.POP_JUMP_IF_FALSE(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_TRUE.index: next_instr = self.POP_JUMP_IF_TRUE(oparg, next_instr) elif opcode == opcodedesc.BINARY_ADD.index: self.BINARY_ADD(oparg, next_instr) elif opcode == opcodedesc.BINARY_AND.index: self.BINARY_AND(oparg, next_instr) elif opcode == opcodedesc.BINARY_DIVIDE.index: self.BINARY_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_FLOOR_DIVIDE.index: self.BINARY_FLOOR_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_LSHIFT.index: self.BINARY_LSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_MODULO.index: self.BINARY_MODULO(oparg, next_instr) elif opcode == opcodedesc.BINARY_MULTIPLY.index: self.BINARY_MULTIPLY(oparg, next_instr) elif opcode == opcodedesc.BINARY_OR.index: self.BINARY_OR(oparg, next_instr) elif opcode == opcodedesc.BINARY_POWER.index: self.BINARY_POWER(oparg, next_instr) elif opcode == opcodedesc.BINARY_RSHIFT.index: self.BINARY_RSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBSCR.index: self.BINARY_SUBSCR(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBTRACT.index: self.BINARY_SUBTRACT(oparg, next_instr) elif opcode == opcodedesc.BINARY_TRUE_DIVIDE.index: self.BINARY_TRUE_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_XOR.index: self.BINARY_XOR(oparg, next_instr) elif opcode == opcodedesc.BUILD_CLASS.index: self.BUILD_CLASS(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST.index: self.BUILD_LIST(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST_FROM_ARG.index: self.BUILD_LIST_FROM_ARG(oparg, next_instr) elif opcode == opcodedesc.BUILD_MAP.index: self.BUILD_MAP(oparg, next_instr) elif opcode == opcodedesc.BUILD_SET.index: self.BUILD_SET(oparg, next_instr) elif opcode == opcodedesc.BUILD_SLICE.index: self.BUILD_SLICE(oparg, next_instr) elif opcode == opcodedesc.BUILD_TUPLE.index: self.BUILD_TUPLE(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION.index: self.CALL_FUNCTION(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_KW.index: self.CALL_FUNCTION_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR.index: self.CALL_FUNCTION_VAR(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR_KW.index: self.CALL_FUNCTION_VAR_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_METHOD.index: > self.CALL_METHOD(oparg, next_instr) interpreter\pyopcode.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ f = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_incomple...uild\pypy\module\_cffi_backend\test\test_recompiler.py:740]', line 1> at line 5 oparg = 3, ignored = (18L,), n_args = 3, n_kwargs = 0, w_self = None @jit.unroll_safe def CALL_METHOD(f, oparg, *ignored): # opargs contains the arg, and kwarg count, excluding the implicit 'self' n_args = oparg & 0xff n_kwargs = (oparg >> 8) & 0xff w_self = f.peekvalue_maybe_none(n_args + (2 * n_kwargs)) n = n_args + (w_self is not None) if not n_kwargs: w_callable = f.peekvalue(n_args + (2 * n_kwargs) + 1) w_result = f.space.call_valuestack( > w_callable, n, f, methodcall=w_self is not None, dropvalues=n_args + 2) objspace\std\callmethod.py:96: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_incomple...uild\pypy\module\_cffi_backend\test\test_recompiler.py:740]', line 1> at line 5 dropvalues = 5, methodcall = False def call_valuestack(self, w_func, nargs, frame, dropvalues, methodcall=False): # methodcall is only used for better error messages in argument.py from pypy.interpreter.function import Function, Method, is_builtin_code if frame.get_is_being_profiled() and is_builtin_code(w_func): # XXX: this code is copied&pasted :-( from the slow path below # call_valuestack(). args = frame.make_arguments(nargs) frame.dropvalues(dropvalues) return self.call_args_and_c_profile(frame, w_func, args) if not self.config.objspace.disable_call_speedhacks: # start of hack for performance if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: w_func = w_func.w_function # reuse callable stack place for w_inst frame.settopvalue(w_inst, nargs) nargs += 1 methodcall = True elif nargs > 0 and ( self.abstract_isinstance_w(frame.peekvalue(nargs-1), # :-( w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): return w_func.funccall_valuestack( > nargs, frame, methodcall=methodcall, dropvalues=dropvalues) interpreter\baseobjspace.py:1243: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_incomple...uild\pypy\module\_cffi_backend\test\test_recompiler.py:740]', line 1> at line 5 dropvalues = 5, methodcall = False def funccall_valuestack(self, nargs, frame, dropvalues, methodcall=False): # speed hack # methodcall is only for better error messages from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit # if (jit.we_are_jitted() and code is self.space._code_of_sys_exc_info and nargs == 0): frame.dropvalues(dropvalues) from pypy.module.sys.vm import exc_info_direct return exc_info_direct(self.space, frame) # fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: f_0 = frame.peekvalue(0) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, f_0) elif nargs == 2: f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, f_1, f_0) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) frame.dropvalues(dropvalues) return code.fastcall_3(self.space, self, f_2, f_1, f_0) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) f_3 = frame.peekvalue(3) frame.dropvalues(dropvalues) return code.fastcall_4(self.space, self, f_3, f_2, f_1, f_0) elif (nargs | Code.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) return self._flat_pycall(code, nargs, frame, dropvalues) elif fast_natural_arity & Code.FLATPYCALL: natural_arity = fast_natural_arity & 0xff if natural_arity > nargs >= natural_arity - len(self.defs_w): assert isinstance(code, PyCode) return self._flat_pycall_defaults(code, nargs, frame, natural_arity - nargs, dropvalues) elif fast_natural_arity == Code.PASSTHROUGHARGS1 and nargs >= 1: assert isinstance(code, gateway.BuiltinCodePassThroughArguments1) w_obj = frame.peekvalue(nargs-1) args = frame.make_arguments(nargs-1) frame.dropvalues(dropvalues) return code.funcrun_obj(self, w_obj, args) args = frame.make_arguments(nargs, methodcall=methodcall) frame.dropvalues(dropvalues) > return self.call_args(args) interpreter\function.py:190: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('struct foo_s { int x; ...; }; int f(int, struct foo_...t foo_s { int a, x, z; };\nint f(int b, struct foo_s s) { return s.x * b; }')]) def call_args(self, args): # delegate activation to code > w_res = self.getcode().funcrun(self, args) interpreter\function.py:68: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('struct foo_s { int x; ...; }; int f(int, struct foo_...t foo_s { int a, x, z; };\nint f(int b, struct foo_s s) { return s.x * b; }')]) def funcrun(self, func, args): > return BuiltinCode.funcrun_obj(self, func, None, args) interpreter\gateway.py:781: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('struct foo_s { int x; ...; }; int f(int, struct foo_...t foo_s { int a, x, z; };\nint f(int b, struct foo_s s) { return s.x * b; }')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: w_result = activation._run(space, scope_w) except DescrMismatch: if w_obj is not None: args = args.prepend(w_obj) return self._type_unwrap_mismatch(space, args) except Exception as e: > self.handle_exception(space, e) interpreter\gateway.py:795: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> space = StdObjSpace e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def handle_exception(self, space, e): try: if not we_are_translated(): raise raise e except OperationError: raise except Exception as e: # general fall-back from pypy.interpreter import error > raise error.get_converted_unexpected_exception(space, e) interpreter\gateway.py:819: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('struct foo_s { int x; ...; }; int f(int, struct foo_...t foo_s { int a, x, z; };\nint f(int b, struct foo_s s) { return s.x * b; }')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: > w_result = activation._run(space, scope_w) interpreter\gateway.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinActivation_UwS_ObjSpace_text_text_text_W_Root_W_Root_W_Root_int_W_Root object at 0x000002791c13af38> space = StdObjSpace scope_w = [W_BytesObject('struct foo_s { int x; ...; }; int f(int, struct foo_s);'), W_BytesObject('test_incomplete_struct_as_ar...BytesObject('struct foo_s { int a, x, z; };\nint f(int b, struct foo_s s) { return s.x * b; }'), None, None, None, ...] def _run(self, space, scope_w): > return self.behavior(space, space.text_w(scope_w[0]), space.text_w(scope_w[1]), space.text_w(scope_w[2]), scope_w[3], scope_w[4], scope_w[5], space.gateway_int_w(scope_w[6]), scope_w[7]) <3152-codegen d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\rpython\tool\sourcetools.py:200>:3: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace cdef = 'struct foo_s { int x; ...; }; int f(int, struct foo_s);' module_name = '_CFFI_test_incomplete_struct_as_arg' source = 'struct foo_s { int a, x, z; };\nint f(int b, struct foo_s s) { return s.x * b; }' w_includes = None, w_extra_source = None, w_min_version = None, packed = 0 w_extra_compile_args = None @unwrap_spec(cdef='text', module_name='text', source='text', packed=int) def prepare(space, cdef, module_name, source, w_includes=None, w_extra_source=None, w_min_version=None, packed=False, w_extra_compile_args=None): try: import cffi from cffi import FFI # <== the system one, which from cffi import recompiler # needs to be at least cffi 1.0.4 from cffi import ffiplatform except ImportError: pytest.skip("system cffi module not found or older than 1.0.0") if w_min_version is None: min_version = (1, 4, 0) else: min_version = tuple(space.unwrap(w_min_version)) if cffi.__version_info__ < min_version: pytest.skip("system cffi module needs to be at least %s, got %s" % ( min_version, cffi.__version_info__)) space.appexec([], """(): import _cffi_backend # force it to be initialized """) includes = [] if w_includes: includes += space.unpackiterable(w_includes) assert module_name.startswith('test_') module_name = '_CFFI_' + module_name rdir = udir.ensure('recompiler', dir=1) rdir.join('Python.h').write( '#include <stdio.h>\n' '#define PYPY_VERSION XX\n' '#define PyMODINIT_FUNC /*exported*/ void\n' ) path = module_name.replace('.', os.sep) if '.' in module_name: subrdir = rdir.join(module_name[:module_name.index('.')]) os.mkdir(str(subrdir)) else: subrdir = rdir c_file = str(rdir.join('%s.c' % path)) ffi = FFI() for include_ffi_object in includes: ffi.include(include_ffi_object._test_recompiler_source_ffi) ffi.cdef(cdef, packed=packed) ffi.set_source(module_name, source) ffi.emit_c_code(c_file) base_module_name = module_name.split('.')[-1] sources = [] if w_extra_source is not None: sources.append(space.str_w(w_extra_source)) kwargs = {} # GCC 14 promotes -Wincompatible-pointer-types from a warning to an error # by default, which breaks cffi's intentionally-mismatched field-check # probes (e.g. test_misdeclared_field_1). Keep it a warning so the module # compiles and cffi's runtime checks can run. extra = ['-Wno-error=incompatible-pointer-types'] if w_extra_compile_args is not None: extra = extra + space.unwrap(w_extra_compile_args) kwargs['extra_compile_args'] = extra ext = ffiplatform.get_extension(c_file, module_name, include_dirs=[str(rdir)], export_symbols=['_cffi_pypyinit_' + base_module_name], sources=sources, **kwargs) > ffiplatform.compile(str(rdir), ext) module\_cffi_backend\test\test_recompiler.py:86: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x000002792b8bb220> compiler_verbose = 0, debug = None def compile(tmpdir, ext, compiler_verbose=0, debug=None): """Compile a C extension module using distutils.""" saved_environ = os.environ.copy() try: > outputfilename = _build(tmpdir, ext, compiler_verbose, debug) d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x000002792b8bb220> compiler_verbose = 0, debug = 0 def _build(tmpdir, ext, compiler_verbose=0, debug=None): # XXX compact but horrible :-( from cffi._shimmed_dist_utils import Distribution, CompileError, LinkError, set_threshold, set_verbosity dist = Distribution({'ext_modules': [ext]}) dist.parse_config_files() options = dist.get_option_dict('build_ext') if debug is None: debug = sys.flags.debug options['debug'] = ('ffiplatform', debug) options['force'] = ('ffiplatform', True) options['build_lib'] = ('ffiplatform', tmpdir) options['build_temp'] = ('ffiplatform', tmpdir) # try: old_level = set_threshold(0) or 0 try: set_verbosity(compiler_verbose) dist.run_command('build_ext') cmd_obj = dist.get_command_obj('build_ext') [soname] = cmd_obj.get_outputs() finally: set_threshold(old_level) except (CompileError, LinkError) as e: > raise VerificationError('%s: %s' % (e.__class__.__name__, e)) E VerificationError: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2 d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:54: VerificationError ---------------------------- Captured stdout call ----------------------------- generating d:\systemtemp\pytest\usession-main-595\recompiler\_CFFI_test_incomplete_struct_as_arg.c ---------------------------- Captured stderr call ----------------------------- cl : Command line error D8021 : invalid numeric argument '/Wno-error=incompatible-pointer-types' _____________ AppTestRecompiler.test_incomplete_struct_as_result ______________ self = <CallInfo when='call' exception: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2> func = <function <lambda> at 0x000002791c700458>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ..\_pytest\runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ..\_pytest\runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_incomplete_struct_as_result'>, ...ticall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_incomplete_struct_as_result'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ..\_pytest\vendored_packages\pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00000279153616a8> hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_incomplete_struct_as_result'>, ...ticall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_incomplete_struct_as_result'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ..\_pytest\vendored_packages\pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_incomplete_struct_as_result'>, ...ticall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_incomplete_struct_as_result'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ..\_pytest\vendored_packages\pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_incomplete_struct_as_result'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791adc67c8> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i..._as_result'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002791b65d760> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002791b65d760> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i..._as_result'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_incomplete_struct_as_result'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791adc6778> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i..._as_result'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002791b65d720> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002791b65d720> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i..._as_result'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_incomplete_struct_as_result'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ..\_pytest\vendored_packages\pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_incomplete_struct_as_result'> def pytest_runtest_call(item): try: > item.runtest() ..\_pytest\runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_incomplete_struct_as_result'> def runtest(self): target = self.obj if self.config.option.runappdirect: return target() space = target.im_self.space filename = self._getdynfilename(target) func = app2interp_temp(target.im_func, filename=filename) w_instance = self.parent.w_instance > self.execute_appex(space, func, space, w_instance) tool\pytest\apptest.py:89: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_incomplete_struct_as_result'>, space = StdObjSpace target = <function test_incomplete_struct_as_result at 0x000002791c700548> args = (StdObjSpace, <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>) def execute_appex(self, space, target, *args): self.space = space try: > target(*args) tool\pytest\apptest.py:30: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) w_func = <Function test_incomplete_struct_as_result> args = <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8> def appcaller(space, *args_w): if not isinstance(space, ObjSpace): raise TypeError("first argument must be a space instance.") # the last argument can be an Arguments w_func = self.wget(space, name) if not args_w: return space.call_function(w_func) else: args = args_w[-1] assert args is not None if not isinstance(args, Arguments): > return space.call_function(w_func, *args_w) interpreter\gateway.py:1227: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <Function test_incomplete_struct_as_result> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) nargs = 1, Function = <class 'pypy.interpreter.function.Function'> Method = <class 'pypy.interpreter.function.Method'> def call_function(self, w_func, *args_w): nargs = len(args_w) # used for pruning funccall versions if not self.config.objspace.disable_call_speedhacks and nargs < 5: # start of hack for performance from pypy.interpreter.function import Function, Method if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: if nargs < 4: func = w_func.w_function if isinstance(func, Function): return func.funccall(w_inst, *args_w) elif args_w and ( self.abstract_isinstance_w(args_w[0], w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): > return w_func.funccall(*args_w) interpreter\baseobjspace.py:1210: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <Function test_incomplete_struct_as_result> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) gateway = <module 'pypy.interpreter.gateway' from 'd:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\interpreter\\gateway.pyc'> PyCode = <class 'pypy.interpreter.pycode.PyCode'> code = <code object test_incomplete_struct_as_result, file '[d:\pypy_stuff\buildbot64...n-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:753]', line 1> def funccall(self, *args_w): # speed hack from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit nargs = len(args_w) fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, args_w[0]) elif nargs == 2: assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, args_w[0], args_w[1]) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) return code.fastcall_3(self.space, self, args_w[0], args_w[1], args_w[2]) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) return code.fastcall_4(self.space, self, args_w[0], args_w[1], args_w[2], args_w[3]) elif (nargs | PyCode.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) if nargs < 5: new_frame = self.space.createframe(code, self.w_func_globals, self) for i in funccallunrolling: if i < nargs: new_frame.locals_cells_stack_w[i] = args_w[i] > return new_frame.run() interpreter\function.py:118: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_incomple...uild\pypy\module\_cffi_backend\test\test_recompiler.py:753]', line 1> at line 5 def run(self): """Start this frame's execution.""" if self.getcode().co_flags & pycode.CO_GENERATOR: from pypy.interpreter.generator import GeneratorIterator return GeneratorIterator(self) else: > return self.execute_frame() interpreter\pyframe.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_incomple...uild\pypy\module\_cffi_backend\test\test_recompiler.py:753]', line 1> at line 5 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, executioncontext) except OperationError: raise except Exception as e: # general fall-back > raise self._convert_unexpected_exception(e) interpreter\pyframe.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_incomple...uild\pypy\module\_cffi_backend\test\test_recompiler.py:753]', line 1> at line 5 e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def _convert_unexpected_exception(self, e): from pypy.interpreter import error > operr = error.get_converted_unexpected_exception(self.space, e) interpreter\pyframe.py:943: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_incomple...uild\pypy\module\_cffi_backend\test\test_recompiler.py:753]', line 1> at line 5 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, > executioncontext) interpreter\pyframe.py:286: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_incomple...uild\pypy\module\_cffi_backend\test\test_recompiler.py:753]', line 1> at line 5 pycode = <code object test_incomplete_struct_as_result, file '[d:\pypy_stuff\buildbot64...n-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:753]', line 1> next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def dispatch(self, pycode, next_instr, ec): # For the sequel, force 'next_instr' to be unsigned for performance next_instr = r_uint(next_instr) co_code = pycode.co_code try: while True: > next_instr = self.handle_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:64: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_incomple...uild\pypy\module\_cffi_backend\test\test_recompiler.py:753]', line 1> at line 5 co_code = "|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00|\x02\x00\xc9\x01\x00d\x04\x0...\x01\x00|\x01\x00\xc9\x04\x00d\x06\x00\xca\x01\x00k\x02\x00sl\x00t\x03\x00\x82\x01\x00d\x00\x00S\x82\x01\x00d\x00\x00S" next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def handle_bytecode(self, co_code, next_instr, ec): try: > next_instr = self.dispatch_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:71: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_incomple...uild\pypy\module\_cffi_backend\test\test_recompiler.py:753]', line 1> at line 5 co_code = "|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00|\x02\x00\xc9\x01\x00d\x04\x0...\x01\x00|\x01\x00\xc9\x04\x00d\x06\x00\xca\x01\x00k\x02\x00sl\x00t\x03\x00\x82\x01\x00d\x00\x00S\x82\x01\x00d\x00\x00S" next_instr = 18L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> @jit.unroll_safe def dispatch_bytecode(self, co_code, next_instr, ec): while True: self.last_instr = intmask(next_instr) if jit.we_are_jitted(): if self.debugdata: ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) else: # Only reload next_instr from last_instr when something that # can modify it actually ran (trace function or action # dispatcher). In the common case (no trace, positive ticker) # next_instr is unchanged and the round-trip is skipped. _d = self.debugdata if ec.space.reverse_debugging or ( _d is not None and _d.w_f_trace is not None) or ( not we_are_translated() and 'bytecode_only_trace' in ec.__dict__): ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) actionflag = ec.space.actionflag if actionflag.decrement_ticker(TICK_COUNTER_STEP) < 0: actionflag.action_dispatcher(ec, self) next_instr = r_uint(self.last_instr) opcode = ord(co_code[next_instr]) next_instr += 1 if opcode >= HAVE_ARGUMENT: lo = ord(co_code[next_instr]) hi = ord(co_code[next_instr+1]) next_instr += 2 oparg = (hi * 256) | lo else: oparg = 0 # note: the structure of the code here is such that it makes # (after translation) a big "if/elif" chain, which is then # turned into a switch(). while opcode == opcodedesc.EXTENDED_ARG.index: opcode = ord(co_code[next_instr]) if opcode < HAVE_ARGUMENT: raise BytecodeCorruption lo = ord(co_code[next_instr+1]) hi = ord(co_code[next_instr+2]) next_instr += 3 oparg = (oparg * 65536) | (hi * 256) | lo if opcode == opcodedesc.RETURN_VALUE.index: if not self.blockstack_non_empty(): self.frame_finished_execution = True # for generators raise Return w_returnvalue = self.popvalue() block = self.unrollstack(SReturnValue.kind) if block is None: self.pushvalue(w_returnvalue) raise Return else: unroller = SReturnValue(w_returnvalue) next_instr = block.handle(self, unroller) return next_instr # now inside a 'finally' block elif opcode == opcodedesc.END_FINALLY.index: unroller = self.end_finally() if isinstance(unroller, SuspendedUnroller): # go on unrolling the stack block = self.unrollstack(unroller.kind) if block is None: w_result = unroller.nomoreblocks() self.pushvalue(w_result) raise Return else: next_instr = block.handle(self, unroller) return next_instr elif opcode == opcodedesc.JUMP_ABSOLUTE.index: return self.jump_absolute(oparg, ec) elif opcode == opcodedesc.BREAK_LOOP.index: next_instr = self.BREAK_LOOP(oparg, next_instr) elif opcode == opcodedesc.CONTINUE_LOOP.index: return self.CONTINUE_LOOP(oparg, next_instr) elif opcode == opcodedesc.FOR_ITER.index: next_instr = self.FOR_ITER(oparg, next_instr) elif opcode == opcodedesc.JUMP_FORWARD.index: next_instr = self.JUMP_FORWARD(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_FALSE_OR_POP.index: next_instr = self.JUMP_IF_FALSE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_NOT_DEBUG.index: next_instr = self.JUMP_IF_NOT_DEBUG(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_TRUE_OR_POP.index: next_instr = self.JUMP_IF_TRUE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_FALSE.index: next_instr = self.POP_JUMP_IF_FALSE(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_TRUE.index: next_instr = self.POP_JUMP_IF_TRUE(oparg, next_instr) elif opcode == opcodedesc.BINARY_ADD.index: self.BINARY_ADD(oparg, next_instr) elif opcode == opcodedesc.BINARY_AND.index: self.BINARY_AND(oparg, next_instr) elif opcode == opcodedesc.BINARY_DIVIDE.index: self.BINARY_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_FLOOR_DIVIDE.index: self.BINARY_FLOOR_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_LSHIFT.index: self.BINARY_LSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_MODULO.index: self.BINARY_MODULO(oparg, next_instr) elif opcode == opcodedesc.BINARY_MULTIPLY.index: self.BINARY_MULTIPLY(oparg, next_instr) elif opcode == opcodedesc.BINARY_OR.index: self.BINARY_OR(oparg, next_instr) elif opcode == opcodedesc.BINARY_POWER.index: self.BINARY_POWER(oparg, next_instr) elif opcode == opcodedesc.BINARY_RSHIFT.index: self.BINARY_RSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBSCR.index: self.BINARY_SUBSCR(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBTRACT.index: self.BINARY_SUBTRACT(oparg, next_instr) elif opcode == opcodedesc.BINARY_TRUE_DIVIDE.index: self.BINARY_TRUE_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_XOR.index: self.BINARY_XOR(oparg, next_instr) elif opcode == opcodedesc.BUILD_CLASS.index: self.BUILD_CLASS(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST.index: self.BUILD_LIST(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST_FROM_ARG.index: self.BUILD_LIST_FROM_ARG(oparg, next_instr) elif opcode == opcodedesc.BUILD_MAP.index: self.BUILD_MAP(oparg, next_instr) elif opcode == opcodedesc.BUILD_SET.index: self.BUILD_SET(oparg, next_instr) elif opcode == opcodedesc.BUILD_SLICE.index: self.BUILD_SLICE(oparg, next_instr) elif opcode == opcodedesc.BUILD_TUPLE.index: self.BUILD_TUPLE(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION.index: self.CALL_FUNCTION(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_KW.index: self.CALL_FUNCTION_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR.index: self.CALL_FUNCTION_VAR(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR_KW.index: self.CALL_FUNCTION_VAR_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_METHOD.index: > self.CALL_METHOD(oparg, next_instr) interpreter\pyopcode.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ f = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_incomple...uild\pypy\module\_cffi_backend\test\test_recompiler.py:753]', line 1> at line 5 oparg = 3, ignored = (18L,), n_args = 3, n_kwargs = 0, w_self = None @jit.unroll_safe def CALL_METHOD(f, oparg, *ignored): # opargs contains the arg, and kwarg count, excluding the implicit 'self' n_args = oparg & 0xff n_kwargs = (oparg >> 8) & 0xff w_self = f.peekvalue_maybe_none(n_args + (2 * n_kwargs)) n = n_args + (w_self is not None) if not n_kwargs: w_callable = f.peekvalue(n_args + (2 * n_kwargs) + 1) w_result = f.space.call_valuestack( > w_callable, n, f, methodcall=w_self is not None, dropvalues=n_args + 2) objspace\std\callmethod.py:96: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_incomple...uild\pypy\module\_cffi_backend\test\test_recompiler.py:753]', line 1> at line 5 dropvalues = 5, methodcall = False def call_valuestack(self, w_func, nargs, frame, dropvalues, methodcall=False): # methodcall is only used for better error messages in argument.py from pypy.interpreter.function import Function, Method, is_builtin_code if frame.get_is_being_profiled() and is_builtin_code(w_func): # XXX: this code is copied&pasted :-( from the slow path below # call_valuestack(). args = frame.make_arguments(nargs) frame.dropvalues(dropvalues) return self.call_args_and_c_profile(frame, w_func, args) if not self.config.objspace.disable_call_speedhacks: # start of hack for performance if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: w_func = w_func.w_function # reuse callable stack place for w_inst frame.settopvalue(w_inst, nargs) nargs += 1 methodcall = True elif nargs > 0 and ( self.abstract_isinstance_w(frame.peekvalue(nargs-1), # :-( w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): return w_func.funccall_valuestack( > nargs, frame, methodcall=methodcall, dropvalues=dropvalues) interpreter\baseobjspace.py:1243: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_incomple...uild\pypy\module\_cffi_backend\test\test_recompiler.py:753]', line 1> at line 5 dropvalues = 5, methodcall = False def funccall_valuestack(self, nargs, frame, dropvalues, methodcall=False): # speed hack # methodcall is only for better error messages from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit # if (jit.we_are_jitted() and code is self.space._code_of_sys_exc_info and nargs == 0): frame.dropvalues(dropvalues) from pypy.module.sys.vm import exc_info_direct return exc_info_direct(self.space, frame) # fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: f_0 = frame.peekvalue(0) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, f_0) elif nargs == 2: f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, f_1, f_0) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) frame.dropvalues(dropvalues) return code.fastcall_3(self.space, self, f_2, f_1, f_0) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) f_3 = frame.peekvalue(3) frame.dropvalues(dropvalues) return code.fastcall_4(self.space, self, f_3, f_2, f_1, f_0) elif (nargs | Code.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) return self._flat_pycall(code, nargs, frame, dropvalues) elif fast_natural_arity & Code.FLATPYCALL: natural_arity = fast_natural_arity & 0xff if natural_arity > nargs >= natural_arity - len(self.defs_w): assert isinstance(code, PyCode) return self._flat_pycall_defaults(code, nargs, frame, natural_arity - nargs, dropvalues) elif fast_natural_arity == Code.PASSTHROUGHARGS1 and nargs >= 1: assert isinstance(code, gateway.BuiltinCodePassThroughArguments1) w_obj = frame.peekvalue(nargs-1) args = frame.make_arguments(nargs-1) frame.dropvalues(dropvalues) return code.funcrun_obj(self, w_obj, args) args = frame.make_arguments(nargs, methodcall=methodcall) frame.dropvalues(dropvalues) > return self.call_args(args) interpreter\function.py:190: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('struct foo_s { int x; ...; }; struct foo_s f(int);')... x, z; };\nstruct foo_s f(int x) { struct foo_s r; r.x = x * 2; return r; }')]) def call_args(self, args): # delegate activation to code > w_res = self.getcode().funcrun(self, args) interpreter\function.py:68: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('struct foo_s { int x; ...; }; struct foo_s f(int);')... x, z; };\nstruct foo_s f(int x) { struct foo_s r; r.x = x * 2; return r; }')]) def funcrun(self, func, args): > return BuiltinCode.funcrun_obj(self, func, None, args) interpreter\gateway.py:781: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('struct foo_s { int x; ...; }; struct foo_s f(int);')... x, z; };\nstruct foo_s f(int x) { struct foo_s r; r.x = x * 2; return r; }')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: w_result = activation._run(space, scope_w) except DescrMismatch: if w_obj is not None: args = args.prepend(w_obj) return self._type_unwrap_mismatch(space, args) except Exception as e: > self.handle_exception(space, e) interpreter\gateway.py:795: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> space = StdObjSpace e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def handle_exception(self, space, e): try: if not we_are_translated(): raise raise e except OperationError: raise except Exception as e: # general fall-back from pypy.interpreter import error > raise error.get_converted_unexpected_exception(space, e) interpreter\gateway.py:819: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('struct foo_s { int x; ...; }; struct foo_s f(int);')... x, z; };\nstruct foo_s f(int x) { struct foo_s r; r.x = x * 2; return r; }')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: > w_result = activation._run(space, scope_w) interpreter\gateway.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinActivation_UwS_ObjSpace_text_text_text_W_Root_W_Root_W_Root_int_W_Root object at 0x000002791c13af38> space = StdObjSpace scope_w = [W_BytesObject('struct foo_s { int x; ...; }; struct foo_s f(int);'), W_BytesObject('test_incomplete_struct_as_result'...uct foo_s { int a, x, z; };\nstruct foo_s f(int x) { struct foo_s r; r.x = x * 2; return r; }'), None, None, None, ...] def _run(self, space, scope_w): > return self.behavior(space, space.text_w(scope_w[0]), space.text_w(scope_w[1]), space.text_w(scope_w[2]), scope_w[3], scope_w[4], scope_w[5], space.gateway_int_w(scope_w[6]), scope_w[7]) <3152-codegen d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\rpython\tool\sourcetools.py:200>:3: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace, cdef = 'struct foo_s { int x; ...; }; struct foo_s f(int);' module_name = '_CFFI_test_incomplete_struct_as_result' source = 'struct foo_s { int a, x, z; };\nstruct foo_s f(int x) { struct foo_s r; r.x = x * 2; return r; }' w_includes = None, w_extra_source = None, w_min_version = None, packed = 0 w_extra_compile_args = None @unwrap_spec(cdef='text', module_name='text', source='text', packed=int) def prepare(space, cdef, module_name, source, w_includes=None, w_extra_source=None, w_min_version=None, packed=False, w_extra_compile_args=None): try: import cffi from cffi import FFI # <== the system one, which from cffi import recompiler # needs to be at least cffi 1.0.4 from cffi import ffiplatform except ImportError: pytest.skip("system cffi module not found or older than 1.0.0") if w_min_version is None: min_version = (1, 4, 0) else: min_version = tuple(space.unwrap(w_min_version)) if cffi.__version_info__ < min_version: pytest.skip("system cffi module needs to be at least %s, got %s" % ( min_version, cffi.__version_info__)) space.appexec([], """(): import _cffi_backend # force it to be initialized """) includes = [] if w_includes: includes += space.unpackiterable(w_includes) assert module_name.startswith('test_') module_name = '_CFFI_' + module_name rdir = udir.ensure('recompiler', dir=1) rdir.join('Python.h').write( '#include <stdio.h>\n' '#define PYPY_VERSION XX\n' '#define PyMODINIT_FUNC /*exported*/ void\n' ) path = module_name.replace('.', os.sep) if '.' in module_name: subrdir = rdir.join(module_name[:module_name.index('.')]) os.mkdir(str(subrdir)) else: subrdir = rdir c_file = str(rdir.join('%s.c' % path)) ffi = FFI() for include_ffi_object in includes: ffi.include(include_ffi_object._test_recompiler_source_ffi) ffi.cdef(cdef, packed=packed) ffi.set_source(module_name, source) ffi.emit_c_code(c_file) base_module_name = module_name.split('.')[-1] sources = [] if w_extra_source is not None: sources.append(space.str_w(w_extra_source)) kwargs = {} # GCC 14 promotes -Wincompatible-pointer-types from a warning to an error # by default, which breaks cffi's intentionally-mismatched field-check # probes (e.g. test_misdeclared_field_1). Keep it a warning so the module # compiles and cffi's runtime checks can run. extra = ['-Wno-error=incompatible-pointer-types'] if w_extra_compile_args is not None: extra = extra + space.unwrap(w_extra_compile_args) kwargs['extra_compile_args'] = extra ext = ffiplatform.get_extension(c_file, module_name, include_dirs=[str(rdir)], export_symbols=['_cffi_pypyinit_' + base_module_name], sources=sources, **kwargs) > ffiplatform.compile(str(rdir), ext) module\_cffi_backend\test\test_recompiler.py:86: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x000002791afffa20> compiler_verbose = 0, debug = None def compile(tmpdir, ext, compiler_verbose=0, debug=None): """Compile a C extension module using distutils.""" saved_environ = os.environ.copy() try: > outputfilename = _build(tmpdir, ext, compiler_verbose, debug) d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x000002791afffa20> compiler_verbose = 0, debug = 0 def _build(tmpdir, ext, compiler_verbose=0, debug=None): # XXX compact but horrible :-( from cffi._shimmed_dist_utils import Distribution, CompileError, LinkError, set_threshold, set_verbosity dist = Distribution({'ext_modules': [ext]}) dist.parse_config_files() options = dist.get_option_dict('build_ext') if debug is None: debug = sys.flags.debug options['debug'] = ('ffiplatform', debug) options['force'] = ('ffiplatform', True) options['build_lib'] = ('ffiplatform', tmpdir) options['build_temp'] = ('ffiplatform', tmpdir) # try: old_level = set_threshold(0) or 0 try: set_verbosity(compiler_verbose) dist.run_command('build_ext') cmd_obj = dist.get_command_obj('build_ext') [soname] = cmd_obj.get_outputs() finally: set_threshold(old_level) except (CompileError, LinkError) as e: > raise VerificationError('%s: %s' % (e.__class__.__name__, e)) E VerificationError: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2 d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:54: VerificationError ---------------------------- Captured stdout call ----------------------------- generating d:\systemtemp\pytest\usession-main-595\recompiler\_CFFI_test_incomplete_struct_as_result.c ---------------------------- Captured stderr call ----------------------------- cl : Command line error D8021 : invalid numeric argument '/Wno-error=incompatible-pointer-types' ______________ AppTestRecompiler.test_incomplete_struct_as_both _______________ self = <CallInfo when='call' exception: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2> func = <function <lambda> at 0x000002792ba04f20>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ..\_pytest\runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ..\_pytest\runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_incomplete_struct_as_both'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_incomplete_struct_as_both'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ..\_pytest\vendored_packages\pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00000279153616a8> hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_incomplete_struct_as_both'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_incomplete_struct_as_both'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ..\_pytest\vendored_packages\pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_incomplete_struct_as_both'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_incomplete_struct_as_both'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ..\_pytest\vendored_packages\pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_incomplete_struct_as_both'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002792ba2f5b0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...ct_as_both'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00000279278f68e0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00000279278f68e0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...ct_as_both'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_incomplete_struct_as_both'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002792ba2f560> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...ct_as_both'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00000279278f68a0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00000279278f68a0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...ct_as_both'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_incomplete_struct_as_both'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ..\_pytest\vendored_packages\pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_incomplete_struct_as_both'> def pytest_runtest_call(item): try: > item.runtest() ..\_pytest\runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_incomplete_struct_as_both'> def runtest(self): target = self.obj if self.config.option.runappdirect: return target() space = target.im_self.space filename = self._getdynfilename(target) func = app2interp_temp(target.im_func, filename=filename) w_instance = self.parent.w_instance > self.execute_appex(space, func, space, w_instance) tool\pytest\apptest.py:89: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_incomplete_struct_as_both'>, space = StdObjSpace target = <function test_incomplete_struct_as_both at 0x000002792ba04f98> args = (StdObjSpace, <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>) def execute_appex(self, space, target, *args): self.space = space try: > target(*args) tool\pytest\apptest.py:30: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) w_func = <Function test_incomplete_struct_as_both> args = <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8> def appcaller(space, *args_w): if not isinstance(space, ObjSpace): raise TypeError("first argument must be a space instance.") # the last argument can be an Arguments w_func = self.wget(space, name) if not args_w: return space.call_function(w_func) else: args = args_w[-1] assert args is not None if not isinstance(args, Arguments): > return space.call_function(w_func, *args_w) interpreter\gateway.py:1227: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <Function test_incomplete_struct_as_both> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) nargs = 1, Function = <class 'pypy.interpreter.function.Function'> Method = <class 'pypy.interpreter.function.Method'> def call_function(self, w_func, *args_w): nargs = len(args_w) # used for pruning funccall versions if not self.config.objspace.disable_call_speedhacks and nargs < 5: # start of hack for performance from pypy.interpreter.function import Function, Method if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: if nargs < 4: func = w_func.w_function if isinstance(func, Function): return func.funccall(w_inst, *args_w) elif args_w and ( self.abstract_isinstance_w(args_w[0], w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): > return w_func.funccall(*args_w) interpreter\baseobjspace.py:1210: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <Function test_incomplete_struct_as_both> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) gateway = <module 'pypy.interpreter.gateway' from 'd:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\interpreter\\gateway.pyc'> PyCode = <class 'pypy.interpreter.pycode.PyCode'> code = <code object test_incomplete_struct_as_both, file '[d:\pypy_stuff\buildbot64\s...n-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:763]', line 1> def funccall(self, *args_w): # speed hack from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit nargs = len(args_w) fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, args_w[0]) elif nargs == 2: assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, args_w[0], args_w[1]) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) return code.fastcall_3(self.space, self, args_w[0], args_w[1], args_w[2]) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) return code.fastcall_4(self.space, self, args_w[0], args_w[1], args_w[2], args_w[3]) elif (nargs | PyCode.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) if nargs < 5: new_frame = self.space.createframe(code, self.w_func_globals, self) for i in funccallunrolling: if i < nargs: new_frame.locals_cells_stack_w[i] = args_w[i] > return new_frame.run() interpreter\function.py:118: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_incomple...uild\pypy\module\_cffi_backend\test\test_recompiler.py:763]', line 1> at line 6 def run(self): """Start this frame's execution.""" if self.getcode().co_flags & pycode.CO_GENERATOR: from pypy.interpreter.generator import GeneratorIterator return GeneratorIterator(self) else: > return self.execute_frame() interpreter\pyframe.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_incomple...uild\pypy\module\_cffi_backend\test\test_recompiler.py:763]', line 1> at line 6 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, executioncontext) except OperationError: raise except Exception as e: # general fall-back > raise self._convert_unexpected_exception(e) interpreter\pyframe.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_incomple...uild\pypy\module\_cffi_backend\test\test_recompiler.py:763]', line 1> at line 6 e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def _convert_unexpected_exception(self, e): from pypy.interpreter import error > operr = error.get_converted_unexpected_exception(self.space, e) interpreter\pyframe.py:943: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_incomple...uild\pypy\module\_cffi_backend\test\test_recompiler.py:763]', line 1> at line 6 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, > executioncontext) interpreter\pyframe.py:286: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_incomple...uild\pypy\module\_cffi_backend\test\test_recompiler.py:763]', line 1> at line 6 pycode = <code object test_incomplete_struct_as_both, file '[d:\pypy_stuff\buildbot64\s...n-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:763]', line 1> next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def dispatch(self, pycode, next_instr, ec): # For the sequel, force 'next_instr' to be unsigned for performance next_instr = r_uint(next_instr) co_code = pycode.co_code try: while True: > next_instr = self.handle_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:64: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_incomple...uild\pypy\module\_cffi_backend\test\test_recompiler.py:763]', line 1> at line 6 co_code = "|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00|\x01\x00\xc9\x01\x00d\x04\x0...0d\x0c\x006\xca\x02\x00}\x04\x00\xcc\x15\x00|\x04\x00j\x03\x00d\r\x00k\x02\x00s\xb9\x00t\x04\x00\x82\x01\x00d\x00\x00S" next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def handle_bytecode(self, co_code, next_instr, ec): try: > next_instr = self.dispatch_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:71: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_incomple...uild\pypy\module\_cffi_backend\test\test_recompiler.py:763]', line 1> at line 6 co_code = "|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00|\x01\x00\xc9\x01\x00d\x04\x0...0d\x0c\x006\xca\x02\x00}\x04\x00\xcc\x15\x00|\x04\x00j\x03\x00d\r\x00k\x02\x00s\xb9\x00t\x04\x00\x82\x01\x00d\x00\x00S" next_instr = 18L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> @jit.unroll_safe def dispatch_bytecode(self, co_code, next_instr, ec): while True: self.last_instr = intmask(next_instr) if jit.we_are_jitted(): if self.debugdata: ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) else: # Only reload next_instr from last_instr when something that # can modify it actually ran (trace function or action # dispatcher). In the common case (no trace, positive ticker) # next_instr is unchanged and the round-trip is skipped. _d = self.debugdata if ec.space.reverse_debugging or ( _d is not None and _d.w_f_trace is not None) or ( not we_are_translated() and 'bytecode_only_trace' in ec.__dict__): ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) actionflag = ec.space.actionflag if actionflag.decrement_ticker(TICK_COUNTER_STEP) < 0: actionflag.action_dispatcher(ec, self) next_instr = r_uint(self.last_instr) opcode = ord(co_code[next_instr]) next_instr += 1 if opcode >= HAVE_ARGUMENT: lo = ord(co_code[next_instr]) hi = ord(co_code[next_instr+1]) next_instr += 2 oparg = (hi * 256) | lo else: oparg = 0 # note: the structure of the code here is such that it makes # (after translation) a big "if/elif" chain, which is then # turned into a switch(). while opcode == opcodedesc.EXTENDED_ARG.index: opcode = ord(co_code[next_instr]) if opcode < HAVE_ARGUMENT: raise BytecodeCorruption lo = ord(co_code[next_instr+1]) hi = ord(co_code[next_instr+2]) next_instr += 3 oparg = (oparg * 65536) | (hi * 256) | lo if opcode == opcodedesc.RETURN_VALUE.index: if not self.blockstack_non_empty(): self.frame_finished_execution = True # for generators raise Return w_returnvalue = self.popvalue() block = self.unrollstack(SReturnValue.kind) if block is None: self.pushvalue(w_returnvalue) raise Return else: unroller = SReturnValue(w_returnvalue) next_instr = block.handle(self, unroller) return next_instr # now inside a 'finally' block elif opcode == opcodedesc.END_FINALLY.index: unroller = self.end_finally() if isinstance(unroller, SuspendedUnroller): # go on unrolling the stack block = self.unrollstack(unroller.kind) if block is None: w_result = unroller.nomoreblocks() self.pushvalue(w_result) raise Return else: next_instr = block.handle(self, unroller) return next_instr elif opcode == opcodedesc.JUMP_ABSOLUTE.index: return self.jump_absolute(oparg, ec) elif opcode == opcodedesc.BREAK_LOOP.index: next_instr = self.BREAK_LOOP(oparg, next_instr) elif opcode == opcodedesc.CONTINUE_LOOP.index: return self.CONTINUE_LOOP(oparg, next_instr) elif opcode == opcodedesc.FOR_ITER.index: next_instr = self.FOR_ITER(oparg, next_instr) elif opcode == opcodedesc.JUMP_FORWARD.index: next_instr = self.JUMP_FORWARD(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_FALSE_OR_POP.index: next_instr = self.JUMP_IF_FALSE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_NOT_DEBUG.index: next_instr = self.JUMP_IF_NOT_DEBUG(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_TRUE_OR_POP.index: next_instr = self.JUMP_IF_TRUE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_FALSE.index: next_instr = self.POP_JUMP_IF_FALSE(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_TRUE.index: next_instr = self.POP_JUMP_IF_TRUE(oparg, next_instr) elif opcode == opcodedesc.BINARY_ADD.index: self.BINARY_ADD(oparg, next_instr) elif opcode == opcodedesc.BINARY_AND.index: self.BINARY_AND(oparg, next_instr) elif opcode == opcodedesc.BINARY_DIVIDE.index: self.BINARY_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_FLOOR_DIVIDE.index: self.BINARY_FLOOR_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_LSHIFT.index: self.BINARY_LSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_MODULO.index: self.BINARY_MODULO(oparg, next_instr) elif opcode == opcodedesc.BINARY_MULTIPLY.index: self.BINARY_MULTIPLY(oparg, next_instr) elif opcode == opcodedesc.BINARY_OR.index: self.BINARY_OR(oparg, next_instr) elif opcode == opcodedesc.BINARY_POWER.index: self.BINARY_POWER(oparg, next_instr) elif opcode == opcodedesc.BINARY_RSHIFT.index: self.BINARY_RSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBSCR.index: self.BINARY_SUBSCR(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBTRACT.index: self.BINARY_SUBTRACT(oparg, next_instr) elif opcode == opcodedesc.BINARY_TRUE_DIVIDE.index: self.BINARY_TRUE_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_XOR.index: self.BINARY_XOR(oparg, next_instr) elif opcode == opcodedesc.BUILD_CLASS.index: self.BUILD_CLASS(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST.index: self.BUILD_LIST(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST_FROM_ARG.index: self.BUILD_LIST_FROM_ARG(oparg, next_instr) elif opcode == opcodedesc.BUILD_MAP.index: self.BUILD_MAP(oparg, next_instr) elif opcode == opcodedesc.BUILD_SET.index: self.BUILD_SET(oparg, next_instr) elif opcode == opcodedesc.BUILD_SLICE.index: self.BUILD_SLICE(oparg, next_instr) elif opcode == opcodedesc.BUILD_TUPLE.index: self.BUILD_TUPLE(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION.index: self.CALL_FUNCTION(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_KW.index: self.CALL_FUNCTION_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR.index: self.CALL_FUNCTION_VAR(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR_KW.index: self.CALL_FUNCTION_VAR_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_METHOD.index: > self.CALL_METHOD(oparg, next_instr) interpreter\pyopcode.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ f = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_incomple...uild\pypy\module\_cffi_backend\test\test_recompiler.py:763]', line 1> at line 6 oparg = 3, ignored = (18L,), n_args = 3, n_kwargs = 0, w_self = None @jit.unroll_safe def CALL_METHOD(f, oparg, *ignored): # opargs contains the arg, and kwarg count, excluding the implicit 'self' n_args = oparg & 0xff n_kwargs = (oparg >> 8) & 0xff w_self = f.peekvalue_maybe_none(n_args + (2 * n_kwargs)) n = n_args + (w_self is not None) if not n_kwargs: w_callable = f.peekvalue(n_args + (2 * n_kwargs) + 1) w_result = f.space.call_valuestack( > w_callable, n, f, methodcall=w_self is not None, dropvalues=n_args + 2) objspace\std\callmethod.py:96: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_incomple...uild\pypy\module\_cffi_backend\test\test_recompiler.py:763]', line 1> at line 6 dropvalues = 5, methodcall = False def call_valuestack(self, w_func, nargs, frame, dropvalues, methodcall=False): # methodcall is only used for better error messages in argument.py from pypy.interpreter.function import Function, Method, is_builtin_code if frame.get_is_being_profiled() and is_builtin_code(w_func): # XXX: this code is copied&pasted :-( from the slow path below # call_valuestack(). args = frame.make_arguments(nargs) frame.dropvalues(dropvalues) return self.call_args_and_c_profile(frame, w_func, args) if not self.config.objspace.disable_call_speedhacks: # start of hack for performance if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: w_func = w_func.w_function # reuse callable stack place for w_inst frame.settopvalue(w_inst, nargs) nargs += 1 methodcall = True elif nargs > 0 and ( self.abstract_isinstance_w(frame.peekvalue(nargs-1), # :-( w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): return w_func.funccall_valuestack( > nargs, frame, methodcall=methodcall, dropvalues=dropvalues) interpreter\baseobjspace.py:1243: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_incomple...uild\pypy\module\_cffi_backend\test\test_recompiler.py:763]', line 1> at line 6 dropvalues = 5, methodcall = False def funccall_valuestack(self, nargs, frame, dropvalues, methodcall=False): # speed hack # methodcall is only for better error messages from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit # if (jit.we_are_jitted() and code is self.space._code_of_sys_exc_info and nargs == 0): frame.dropvalues(dropvalues) from pypy.module.sys.vm import exc_info_direct return exc_info_direct(self.space, frame) # fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: f_0 = frame.peekvalue(0) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, f_0) elif nargs == 2: f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, f_1, f_0) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) frame.dropvalues(dropvalues) return code.fastcall_3(self.space, self, f_2, f_1, f_0) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) f_3 = frame.peekvalue(3) frame.dropvalues(dropvalues) return code.fastcall_4(self.space, self, f_3, f_2, f_1, f_0) elif (nargs | Code.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) return self._flat_pycall(code, nargs, frame, dropvalues) elif fast_natural_arity & Code.FLATPYCALL: natural_arity = fast_natural_arity & 0xff if natural_arity > nargs >= natural_arity - len(self.defs_w): assert isinstance(code, PyCode) return self._flat_pycall_defaults(code, nargs, frame, natural_arity - nargs, dropvalues) elif fast_natural_arity == Code.PASSTHROUGHARGS1 and nargs >= 1: assert isinstance(code, gateway.BuiltinCodePassThroughArguments1) w_obj = frame.peekvalue(nargs-1) args = frame.make_arguments(nargs-1) frame.dropvalues(dropvalues) return code.funcrun_obj(self, w_obj, args) args = frame.make_arguments(nargs, methodcall=methodcall) frame.dropvalues(dropvalues) > return self.call_args(args) interpreter\function.py:190: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('struct foo_s { int x; ...; }; struct bar_s { int y; ...s f(int x, struct bar_s b) {\n struct foo_s r; r.x = x * b.y; return r;\n}')]) def call_args(self, args): # delegate activation to code > w_res = self.getcode().funcrun(self, args) interpreter\function.py:68: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('struct foo_s { int x; ...; }; struct bar_s { int y; ...s f(int x, struct bar_s b) {\n struct foo_s r; r.x = x * b.y; return r;\n}')]) def funcrun(self, func, args): > return BuiltinCode.funcrun_obj(self, func, None, args) interpreter\gateway.py:781: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('struct foo_s { int x; ...; }; struct bar_s { int y; ...s f(int x, struct bar_s b) {\n struct foo_s r; r.x = x * b.y; return r;\n}')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: w_result = activation._run(space, scope_w) except DescrMismatch: if w_obj is not None: args = args.prepend(w_obj) return self._type_unwrap_mismatch(space, args) except Exception as e: > self.handle_exception(space, e) interpreter\gateway.py:795: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> space = StdObjSpace e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def handle_exception(self, space, e): try: if not we_are_translated(): raise raise e except OperationError: raise except Exception as e: # general fall-back from pypy.interpreter import error > raise error.get_converted_unexpected_exception(space, e) interpreter\gateway.py:819: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('struct foo_s { int x; ...; }; struct bar_s { int y; ...s f(int x, struct bar_s b) {\n struct foo_s r; r.x = x * b.y; return r;\n}')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: > w_result = activation._run(space, scope_w) interpreter\gateway.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinActivation_UwS_ObjSpace_text_text_text_W_Root_W_Root_W_Root_int_W_Root object at 0x000002791c13af38> space = StdObjSpace scope_w = [W_BytesObject('struct foo_s { int x; ...; }; struct bar_s { int y; ...; };\nstruct foo_s f(int, struct bar_s);'), W_B... b, c, y, d; ...o_s f(int x, struct bar_s b) {\n struct foo_s r; r.x = x * b.y; return r;\n}'), None, None, None, ...] def _run(self, space, scope_w): > return self.behavior(space, space.text_w(scope_w[0]), space.text_w(scope_w[1]), space.text_w(scope_w[2]), scope_w[3], scope_w[4], scope_w[5], space.gateway_int_w(scope_w[6]), scope_w[7]) <3152-codegen d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\rpython\tool\sourcetools.py:200>:3: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace cdef = 'struct foo_s { int x; ...; }; struct bar_s { int y; ...; };\nstruct foo_s f(int, struct bar_s);' module_name = '_CFFI_test_incomplete_struct_as_both' source = 'struct foo_s { int a, x, z; };\nstruct bar_s { int b, c, y, d; };\nstruct foo_s f(int x, struct bar_s b) {\n struct foo_s r; r.x = x * b.y; return r;\n}' w_includes = None, w_extra_source = None, w_min_version = None, packed = 0 w_extra_compile_args = None @unwrap_spec(cdef='text', module_name='text', source='text', packed=int) def prepare(space, cdef, module_name, source, w_includes=None, w_extra_source=None, w_min_version=None, packed=False, w_extra_compile_args=None): try: import cffi from cffi import FFI # <== the system one, which from cffi import recompiler # needs to be at least cffi 1.0.4 from cffi import ffiplatform except ImportError: pytest.skip("system cffi module not found or older than 1.0.0") if w_min_version is None: min_version = (1, 4, 0) else: min_version = tuple(space.unwrap(w_min_version)) if cffi.__version_info__ < min_version: pytest.skip("system cffi module needs to be at least %s, got %s" % ( min_version, cffi.__version_info__)) space.appexec([], """(): import _cffi_backend # force it to be initialized """) includes = [] if w_includes: includes += space.unpackiterable(w_includes) assert module_name.startswith('test_') module_name = '_CFFI_' + module_name rdir = udir.ensure('recompiler', dir=1) rdir.join('Python.h').write( '#include <stdio.h>\n' '#define PYPY_VERSION XX\n' '#define PyMODINIT_FUNC /*exported*/ void\n' ) path = module_name.replace('.', os.sep) if '.' in module_name: subrdir = rdir.join(module_name[:module_name.index('.')]) os.mkdir(str(subrdir)) else: subrdir = rdir c_file = str(rdir.join('%s.c' % path)) ffi = FFI() for include_ffi_object in includes: ffi.include(include_ffi_object._test_recompiler_source_ffi) ffi.cdef(cdef, packed=packed) ffi.set_source(module_name, source) ffi.emit_c_code(c_file) base_module_name = module_name.split('.')[-1] sources = [] if w_extra_source is not None: sources.append(space.str_w(w_extra_source)) kwargs = {} # GCC 14 promotes -Wincompatible-pointer-types from a warning to an error # by default, which breaks cffi's intentionally-mismatched field-check # probes (e.g. test_misdeclared_field_1). Keep it a warning so the module # compiles and cffi's runtime checks can run. extra = ['-Wno-error=incompatible-pointer-types'] if w_extra_compile_args is not None: extra = extra + space.unwrap(w_extra_compile_args) kwargs['extra_compile_args'] = extra ext = ffiplatform.get_extension(c_file, module_name, include_dirs=[str(rdir)], export_symbols=['_cffi_pypyinit_' + base_module_name], sources=sources, **kwargs) > ffiplatform.compile(str(rdir), ext) module\_cffi_backend\test\test_recompiler.py:86: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x00000279278f73e0> compiler_verbose = 0, debug = None def compile(tmpdir, ext, compiler_verbose=0, debug=None): """Compile a C extension module using distutils.""" saved_environ = os.environ.copy() try: > outputfilename = _build(tmpdir, ext, compiler_verbose, debug) d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x00000279278f73e0> compiler_verbose = 0, debug = 0 def _build(tmpdir, ext, compiler_verbose=0, debug=None): # XXX compact but horrible :-( from cffi._shimmed_dist_utils import Distribution, CompileError, LinkError, set_threshold, set_verbosity dist = Distribution({'ext_modules': [ext]}) dist.parse_config_files() options = dist.get_option_dict('build_ext') if debug is None: debug = sys.flags.debug options['debug'] = ('ffiplatform', debug) options['force'] = ('ffiplatform', True) options['build_lib'] = ('ffiplatform', tmpdir) options['build_temp'] = ('ffiplatform', tmpdir) # try: old_level = set_threshold(0) or 0 try: set_verbosity(compiler_verbose) dist.run_command('build_ext') cmd_obj = dist.get_command_obj('build_ext') [soname] = cmd_obj.get_outputs() finally: set_threshold(old_level) except (CompileError, LinkError) as e: > raise VerificationError('%s: %s' % (e.__class__.__name__, e)) E VerificationError: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2 d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:54: VerificationError ---------------------------- Captured stdout call ----------------------------- generating d:\systemtemp\pytest\usession-main-595\recompiler\_CFFI_test_incomplete_struct_as_both.c ---------------------------- Captured stderr call ----------------------------- cl : Command line error D8021 : invalid numeric argument '/Wno-error=incompatible-pointer-types' ________________ AppTestRecompiler.test_name_of_unnamed_struct ________________ self = <CallInfo when='call' exception: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2> func = <function <lambda> at 0x000002792c9766b0>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ..\_pytest\runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ..\_pytest\runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_name_of_unnamed_struct'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_name_of_unnamed_struct'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ..\_pytest\vendored_packages\pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00000279153616a8> hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_name_of_unnamed_struct'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_name_of_unnamed_struct'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ..\_pytest\vendored_packages\pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_name_of_unnamed_struct'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_name_of_unnamed_struct'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ..\_pytest\vendored_packages\pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_name_of_unnamed_struct'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791fefc750> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...med_struct'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00000279274b30e0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00000279274b30e0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...med_struct'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_name_of_unnamed_struct'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791fefc660> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...med_struct'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00000279274b30a0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00000279274b30a0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...med_struct'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_name_of_unnamed_struct'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ..\_pytest\vendored_packages\pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_name_of_unnamed_struct'> def pytest_runtest_call(item): try: > item.runtest() ..\_pytest\runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_name_of_unnamed_struct'> def runtest(self): target = self.obj if self.config.option.runappdirect: return target() space = target.im_self.space filename = self._getdynfilename(target) func = app2interp_temp(target.im_func, filename=filename) w_instance = self.parent.w_instance > self.execute_appex(space, func, space, w_instance) tool\pytest\apptest.py:89: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_name_of_unnamed_struct'>, space = StdObjSpace target = <function test_name_of_unnamed_struct at 0x000002792c976728> args = (StdObjSpace, <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>) def execute_appex(self, space, target, *args): self.space = space try: > target(*args) tool\pytest\apptest.py:30: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) w_func = <Function test_name_of_unnamed_struct> args = <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8> def appcaller(space, *args_w): if not isinstance(space, ObjSpace): raise TypeError("first argument must be a space instance.") # the last argument can be an Arguments w_func = self.wget(space, name) if not args_w: return space.call_function(w_func) else: args = args_w[-1] assert args is not None if not isinstance(args, Arguments): > return space.call_function(w_func, *args_w) interpreter\gateway.py:1227: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <Function test_name_of_unnamed_struct> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) nargs = 1, Function = <class 'pypy.interpreter.function.Function'> Method = <class 'pypy.interpreter.function.Method'> def call_function(self, w_func, *args_w): nargs = len(args_w) # used for pruning funccall versions if not self.config.objspace.disable_call_speedhacks and nargs < 5: # start of hack for performance from pypy.interpreter.function import Function, Method if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: if nargs < 4: func = w_func.w_function if isinstance(func, Function): return func.funccall(w_inst, *args_w) elif args_w and ( self.abstract_isinstance_w(args_w[0], w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): > return w_func.funccall(*args_w) interpreter\baseobjspace.py:1210: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <Function test_name_of_unnamed_struct> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) gateway = <module 'pypy.interpreter.gateway' from 'd:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\interpreter\\gateway.pyc'> PyCode = <class 'pypy.interpreter.pycode.PyCode'> code = <code object test_name_of_unnamed_struct, file '[d:\pypy_stuff\buildbot64\slav...n-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:781]', line 1> def funccall(self, *args_w): # speed hack from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit nargs = len(args_w) fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, args_w[0]) elif nargs == 2: assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, args_w[0], args_w[1]) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) return code.fastcall_3(self.space, self, args_w[0], args_w[1], args_w[2]) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) return code.fastcall_4(self.space, self, args_w[0], args_w[1], args_w[2], args_w[3]) elif (nargs | PyCode.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) if nargs < 5: new_frame = self.space.createframe(code, self.w_func_globals, self) for i in funccallunrolling: if i < nargs: new_frame.locals_cells_stack_w[i] = args_w[i] > return new_frame.run() interpreter\function.py:118: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_name_of_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:781]', line 1> at line 7 def run(self): """Start this frame's execution.""" if self.getcode().co_flags & pycode.CO_GENERATOR: from pypy.interpreter.generator import GeneratorIterator return GeneratorIterator(self) else: > return self.execute_frame() interpreter\pyframe.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_name_of_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:781]', line 1> at line 7 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, executioncontext) except OperationError: raise except Exception as e: # general fall-back > raise self._convert_unexpected_exception(e) interpreter\pyframe.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_name_of_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:781]', line 1> at line 7 e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def _convert_unexpected_exception(self, e): from pypy.interpreter import error > operr = error.get_converted_unexpected_exception(self.space, e) interpreter\pyframe.py:943: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_name_of_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:781]', line 1> at line 7 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, > executioncontext) interpreter\pyframe.py:286: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_name_of_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:781]', line 1> at line 7 pycode = <code object test_name_of_unnamed_struct, file '[d:\pypy_stuff\buildbot64\slav...n-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:781]', line 1> next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def dispatch(self, pycode, next_instr, ec): # For the sequel, force 'next_instr' to be unsigned for performance next_instr = r_uint(next_instr) co_code = pycode.co_code try: while True: > next_instr = self.handle_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:64: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_name_of_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:781]', line 1> at line 7 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x01\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00\xcc!\x00t\x01\x00|\x01\x00\x...01\x00|\x01\x00\xc9\x02\x00d\x07\x00\xca\x01\x00\x83\x01\x00d\x08\x00k\x02\x00s\x87\x00t\x03\x00\x82\x01\x00d\x00\x00S' next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def handle_bytecode(self, co_code, next_instr, ec): try: > next_instr = self.dispatch_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:71: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_name_of_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:781]', line 1> at line 7 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x01\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00\xcc!\x00t\x01\x00|\x01\x00\x...01\x00|\x01\x00\xc9\x02\x00d\x07\x00\xca\x01\x00\x83\x01\x00d\x08\x00k\x02\x00s\x87\x00t\x03\x00\x82\x01\x00d\x00\x00S' next_instr = 18L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> @jit.unroll_safe def dispatch_bytecode(self, co_code, next_instr, ec): while True: self.last_instr = intmask(next_instr) if jit.we_are_jitted(): if self.debugdata: ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) else: # Only reload next_instr from last_instr when something that # can modify it actually ran (trace function or action # dispatcher). In the common case (no trace, positive ticker) # next_instr is unchanged and the round-trip is skipped. _d = self.debugdata if ec.space.reverse_debugging or ( _d is not None and _d.w_f_trace is not None) or ( not we_are_translated() and 'bytecode_only_trace' in ec.__dict__): ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) actionflag = ec.space.actionflag if actionflag.decrement_ticker(TICK_COUNTER_STEP) < 0: actionflag.action_dispatcher(ec, self) next_instr = r_uint(self.last_instr) opcode = ord(co_code[next_instr]) next_instr += 1 if opcode >= HAVE_ARGUMENT: lo = ord(co_code[next_instr]) hi = ord(co_code[next_instr+1]) next_instr += 2 oparg = (hi * 256) | lo else: oparg = 0 # note: the structure of the code here is such that it makes # (after translation) a big "if/elif" chain, which is then # turned into a switch(). while opcode == opcodedesc.EXTENDED_ARG.index: opcode = ord(co_code[next_instr]) if opcode < HAVE_ARGUMENT: raise BytecodeCorruption lo = ord(co_code[next_instr+1]) hi = ord(co_code[next_instr+2]) next_instr += 3 oparg = (oparg * 65536) | (hi * 256) | lo if opcode == opcodedesc.RETURN_VALUE.index: if not self.blockstack_non_empty(): self.frame_finished_execution = True # for generators raise Return w_returnvalue = self.popvalue() block = self.unrollstack(SReturnValue.kind) if block is None: self.pushvalue(w_returnvalue) raise Return else: unroller = SReturnValue(w_returnvalue) next_instr = block.handle(self, unroller) return next_instr # now inside a 'finally' block elif opcode == opcodedesc.END_FINALLY.index: unroller = self.end_finally() if isinstance(unroller, SuspendedUnroller): # go on unrolling the stack block = self.unrollstack(unroller.kind) if block is None: w_result = unroller.nomoreblocks() self.pushvalue(w_result) raise Return else: next_instr = block.handle(self, unroller) return next_instr elif opcode == opcodedesc.JUMP_ABSOLUTE.index: return self.jump_absolute(oparg, ec) elif opcode == opcodedesc.BREAK_LOOP.index: next_instr = self.BREAK_LOOP(oparg, next_instr) elif opcode == opcodedesc.CONTINUE_LOOP.index: return self.CONTINUE_LOOP(oparg, next_instr) elif opcode == opcodedesc.FOR_ITER.index: next_instr = self.FOR_ITER(oparg, next_instr) elif opcode == opcodedesc.JUMP_FORWARD.index: next_instr = self.JUMP_FORWARD(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_FALSE_OR_POP.index: next_instr = self.JUMP_IF_FALSE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_NOT_DEBUG.index: next_instr = self.JUMP_IF_NOT_DEBUG(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_TRUE_OR_POP.index: next_instr = self.JUMP_IF_TRUE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_FALSE.index: next_instr = self.POP_JUMP_IF_FALSE(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_TRUE.index: next_instr = self.POP_JUMP_IF_TRUE(oparg, next_instr) elif opcode == opcodedesc.BINARY_ADD.index: self.BINARY_ADD(oparg, next_instr) elif opcode == opcodedesc.BINARY_AND.index: self.BINARY_AND(oparg, next_instr) elif opcode == opcodedesc.BINARY_DIVIDE.index: self.BINARY_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_FLOOR_DIVIDE.index: self.BINARY_FLOOR_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_LSHIFT.index: self.BINARY_LSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_MODULO.index: self.BINARY_MODULO(oparg, next_instr) elif opcode == opcodedesc.BINARY_MULTIPLY.index: self.BINARY_MULTIPLY(oparg, next_instr) elif opcode == opcodedesc.BINARY_OR.index: self.BINARY_OR(oparg, next_instr) elif opcode == opcodedesc.BINARY_POWER.index: self.BINARY_POWER(oparg, next_instr) elif opcode == opcodedesc.BINARY_RSHIFT.index: self.BINARY_RSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBSCR.index: self.BINARY_SUBSCR(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBTRACT.index: self.BINARY_SUBTRACT(oparg, next_instr) elif opcode == opcodedesc.BINARY_TRUE_DIVIDE.index: self.BINARY_TRUE_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_XOR.index: self.BINARY_XOR(oparg, next_instr) elif opcode == opcodedesc.BUILD_CLASS.index: self.BUILD_CLASS(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST.index: self.BUILD_LIST(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST_FROM_ARG.index: self.BUILD_LIST_FROM_ARG(oparg, next_instr) elif opcode == opcodedesc.BUILD_MAP.index: self.BUILD_MAP(oparg, next_instr) elif opcode == opcodedesc.BUILD_SET.index: self.BUILD_SET(oparg, next_instr) elif opcode == opcodedesc.BUILD_SLICE.index: self.BUILD_SLICE(oparg, next_instr) elif opcode == opcodedesc.BUILD_TUPLE.index: self.BUILD_TUPLE(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION.index: self.CALL_FUNCTION(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_KW.index: self.CALL_FUNCTION_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR.index: self.CALL_FUNCTION_VAR(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR_KW.index: self.CALL_FUNCTION_VAR_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_METHOD.index: > self.CALL_METHOD(oparg, next_instr) interpreter\pyopcode.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ f = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_name_of_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:781]', line 1> at line 7 oparg = 3, ignored = (18L,), n_args = 3, n_kwargs = 0, w_self = None @jit.unroll_safe def CALL_METHOD(f, oparg, *ignored): # opargs contains the arg, and kwarg count, excluding the implicit 'self' n_args = oparg & 0xff n_kwargs = (oparg >> 8) & 0xff w_self = f.peekvalue_maybe_none(n_args + (2 * n_kwargs)) n = n_args + (w_self is not None) if not n_kwargs: w_callable = f.peekvalue(n_args + (2 * n_kwargs) + 1) w_result = f.space.call_valuestack( > w_callable, n, f, methodcall=w_self is not None, dropvalues=n_args + 2) objspace\std\callmethod.py:96: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_name_of_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:781]', line 1> at line 7 dropvalues = 5, methodcall = False def call_valuestack(self, w_func, nargs, frame, dropvalues, methodcall=False): # methodcall is only used for better error messages in argument.py from pypy.interpreter.function import Function, Method, is_builtin_code if frame.get_is_being_profiled() and is_builtin_code(w_func): # XXX: this code is copied&pasted :-( from the slow path below # call_valuestack(). args = frame.make_arguments(nargs) frame.dropvalues(dropvalues) return self.call_args_and_c_profile(frame, w_func, args) if not self.config.objspace.disable_call_speedhacks: # start of hack for performance if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: w_func = w_func.w_function # reuse callable stack place for w_inst frame.settopvalue(w_inst, nargs) nargs += 1 methodcall = True elif nargs > 0 and ( self.abstract_isinstance_w(frame.peekvalue(nargs-1), # :-( w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): return w_func.funccall_valuestack( > nargs, frame, methodcall=methodcall, dropvalues=dropvalues) interpreter\baseobjspace.py:1243: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_name_of_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:781]', line 1> at line 7 dropvalues = 5, methodcall = False def funccall_valuestack(self, nargs, frame, dropvalues, methodcall=False): # speed hack # methodcall is only for better error messages from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit # if (jit.we_are_jitted() and code is self.space._code_of_sys_exc_info and nargs == 0): frame.dropvalues(dropvalues) from pypy.module.sys.vm import exc_info_direct return exc_info_direct(self.space, frame) # fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: f_0 = frame.peekvalue(0) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, f_0) elif nargs == 2: f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, f_1, f_0) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) frame.dropvalues(dropvalues) return code.fastcall_3(self.space, self, f_2, f_1, f_0) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) f_3 = frame.peekvalue(3) frame.dropvalues(dropvalues) return code.fastcall_4(self.space, self, f_3, f_2, f_1, f_0) elif (nargs | Code.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) return self._flat_pycall(code, nargs, frame, dropvalues) elif fast_natural_arity & Code.FLATPYCALL: natural_arity = fast_natural_arity & 0xff if natural_arity > nargs >= natural_arity - len(self.defs_w): assert isinstance(code, PyCode) return self._flat_pycall_defaults(code, nargs, frame, natural_arity - nargs, dropvalues) elif fast_natural_arity == Code.PASSTHROUGHARGS1 and nargs >= 1: assert isinstance(code, gateway.BuiltinCodePassThroughArguments1) w_obj = frame.peekvalue(nargs-1) args = frame.make_arguments(nargs-1) frame.dropvalues(dropvalues) return code.funcrun_obj(self, w_obj, args) args = frame.make_arguments(nargs, methodcall=methodcall) frame.dropvalues(dropvalues) > return self.call_args(args) interpreter\function.py:190: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('typedef struct { int x; } foo_t;\ntypedef struct { i...;\ntypedef struct { int y; } *bar_p;\ntypedef struct { int y; } **baz_pp;\n')]) def call_args(self, args): # delegate activation to code > w_res = self.getcode().funcrun(self, args) interpreter\function.py:68: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('typedef struct { int x; } foo_t;\ntypedef struct { i...;\ntypedef struct { int y; } *bar_p;\ntypedef struct { int y; } **baz_pp;\n')]) def funcrun(self, func, args): > return BuiltinCode.funcrun_obj(self, func, None, args) interpreter\gateway.py:781: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('typedef struct { int x; } foo_t;\ntypedef struct { i...;\ntypedef struct { int y; } *bar_p;\ntypedef struct { int y; } **baz_pp;\n')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: w_result = activation._run(space, scope_w) except DescrMismatch: if w_obj is not None: args = args.prepend(w_obj) return self._type_unwrap_mismatch(space, args) except Exception as e: > self.handle_exception(space, e) interpreter\gateway.py:795: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> space = StdObjSpace e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def handle_exception(self, space, e): try: if not we_are_translated(): raise raise e except OperationError: raise except Exception as e: # general fall-back from pypy.interpreter import error > raise error.get_converted_unexpected_exception(space, e) interpreter\gateway.py:819: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('typedef struct { int x; } foo_t;\ntypedef struct { i...;\ntypedef struct { int y; } *bar_p;\ntypedef struct { int y; } **baz_pp;\n')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: > w_result = activation._run(space, scope_w) interpreter\gateway.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinActivation_UwS_ObjSpace_text_text_text_W_Root_W_Root_W_Root_int_W_Root object at 0x000002791c13af38> space = StdObjSpace scope_w = [W_BytesObject('typedef struct { int x; } foo_t;\ntypedef struct { int y; } *bar_p;\ntypedef struct { int y; } **baz_p...t { int x; } foo_t;\ntypedef struct { int y; } *bar_p;\ntypedef struct { int y; } **baz_pp;\n'), None, None, None, ...] def _run(self, space, scope_w): > return self.behavior(space, space.text_w(scope_w[0]), space.text_w(scope_w[1]), space.text_w(scope_w[2]), scope_w[3], scope_w[4], scope_w[5], space.gateway_int_w(scope_w[6]), scope_w[7]) <3152-codegen d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\rpython\tool\sourcetools.py:200>:3: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace cdef = 'typedef struct { int x; } foo_t;\ntypedef struct { int y; } *bar_p;\ntypedef struct { int y; } **baz_pp;\n' module_name = '_CFFI_test_name_of_unnamed_struct' source = 'typedef struct { int x; } foo_t;\ntypedef struct { int y; } *bar_p;\ntypedef struct { int y; } **baz_pp;\n' w_includes = None, w_extra_source = None, w_min_version = None, packed = 0 w_extra_compile_args = None @unwrap_spec(cdef='text', module_name='text', source='text', packed=int) def prepare(space, cdef, module_name, source, w_includes=None, w_extra_source=None, w_min_version=None, packed=False, w_extra_compile_args=None): try: import cffi from cffi import FFI # <== the system one, which from cffi import recompiler # needs to be at least cffi 1.0.4 from cffi import ffiplatform except ImportError: pytest.skip("system cffi module not found or older than 1.0.0") if w_min_version is None: min_version = (1, 4, 0) else: min_version = tuple(space.unwrap(w_min_version)) if cffi.__version_info__ < min_version: pytest.skip("system cffi module needs to be at least %s, got %s" % ( min_version, cffi.__version_info__)) space.appexec([], """(): import _cffi_backend # force it to be initialized """) includes = [] if w_includes: includes += space.unpackiterable(w_includes) assert module_name.startswith('test_') module_name = '_CFFI_' + module_name rdir = udir.ensure('recompiler', dir=1) rdir.join('Python.h').write( '#include <stdio.h>\n' '#define PYPY_VERSION XX\n' '#define PyMODINIT_FUNC /*exported*/ void\n' ) path = module_name.replace('.', os.sep) if '.' in module_name: subrdir = rdir.join(module_name[:module_name.index('.')]) os.mkdir(str(subrdir)) else: subrdir = rdir c_file = str(rdir.join('%s.c' % path)) ffi = FFI() for include_ffi_object in includes: ffi.include(include_ffi_object._test_recompiler_source_ffi) ffi.cdef(cdef, packed=packed) ffi.set_source(module_name, source) ffi.emit_c_code(c_file) base_module_name = module_name.split('.')[-1] sources = [] if w_extra_source is not None: sources.append(space.str_w(w_extra_source)) kwargs = {} # GCC 14 promotes -Wincompatible-pointer-types from a warning to an error # by default, which breaks cffi's intentionally-mismatched field-check # probes (e.g. test_misdeclared_field_1). Keep it a warning so the module # compiles and cffi's runtime checks can run. extra = ['-Wno-error=incompatible-pointer-types'] if w_extra_compile_args is not None: extra = extra + space.unwrap(w_extra_compile_args) kwargs['extra_compile_args'] = extra ext = ffiplatform.get_extension(c_file, module_name, include_dirs=[str(rdir)], export_symbols=['_cffi_pypyinit_' + base_module_name], sources=sources, **kwargs) > ffiplatform.compile(str(rdir), ext) module\_cffi_backend\test\test_recompiler.py:86: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x00000279274b3aa0> compiler_verbose = 0, debug = None def compile(tmpdir, ext, compiler_verbose=0, debug=None): """Compile a C extension module using distutils.""" saved_environ = os.environ.copy() try: > outputfilename = _build(tmpdir, ext, compiler_verbose, debug) d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x00000279274b3aa0> compiler_verbose = 0, debug = 0 def _build(tmpdir, ext, compiler_verbose=0, debug=None): # XXX compact but horrible :-( from cffi._shimmed_dist_utils import Distribution, CompileError, LinkError, set_threshold, set_verbosity dist = Distribution({'ext_modules': [ext]}) dist.parse_config_files() options = dist.get_option_dict('build_ext') if debug is None: debug = sys.flags.debug options['debug'] = ('ffiplatform', debug) options['force'] = ('ffiplatform', True) options['build_lib'] = ('ffiplatform', tmpdir) options['build_temp'] = ('ffiplatform', tmpdir) # try: old_level = set_threshold(0) or 0 try: set_verbosity(compiler_verbose) dist.run_command('build_ext') cmd_obj = dist.get_command_obj('build_ext') [soname] = cmd_obj.get_outputs() finally: set_threshold(old_level) except (CompileError, LinkError) as e: > raise VerificationError('%s: %s' % (e.__class__.__name__, e)) E VerificationError: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2 d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:54: VerificationError ---------------------------- Captured stdout call ----------------------------- generating d:\systemtemp\pytest\usession-main-595\recompiler\_CFFI_test_name_of_unnamed_struct.c ---------------------------- Captured stderr call ----------------------------- cl : Command line error D8021 : invalid numeric argument '/Wno-error=incompatible-pointer-types' ________________ AppTestRecompiler.test_address_of_global_var _________________ self = <CallInfo when='call' exception: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2> func = <function <lambda> at 0x0000027925c41718>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ..\_pytest\runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ..\_pytest\runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_address_of_global_var'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_address_of_global_var'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ..\_pytest\vendored_packages\pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00000279153616a8> hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_address_of_global_var'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_address_of_global_var'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ..\_pytest\vendored_packages\pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_address_of_global_var'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_address_of_global_var'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ..\_pytest\vendored_packages\pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_address_of_global_var'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791a7235b0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...global_var'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792889ef60> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792889ef60> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...global_var'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_address_of_global_var'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791a723560> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...global_var'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792889ef20> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792889ef20> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...global_var'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_address_of_global_var'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ..\_pytest\vendored_packages\pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_address_of_global_var'> def pytest_runtest_call(item): try: > item.runtest() ..\_pytest\runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_address_of_global_var'> def runtest(self): target = self.obj if self.config.option.runappdirect: return target() space = target.im_self.space filename = self._getdynfilename(target) func = app2interp_temp(target.im_func, filename=filename) w_instance = self.parent.w_instance > self.execute_appex(space, func, space, w_instance) tool\pytest\apptest.py:89: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_address_of_global_var'>, space = StdObjSpace target = <function test_address_of_global_var at 0x0000027925c418f8> args = (StdObjSpace, <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>) def execute_appex(self, space, target, *args): self.space = space try: > target(*args) tool\pytest\apptest.py:30: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) w_func = <Function test_address_of_global_var> args = <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8> def appcaller(space, *args_w): if not isinstance(space, ObjSpace): raise TypeError("first argument must be a space instance.") # the last argument can be an Arguments w_func = self.wget(space, name) if not args_w: return space.call_function(w_func) else: args = args_w[-1] assert args is not None if not isinstance(args, Arguments): > return space.call_function(w_func, *args_w) interpreter\gateway.py:1227: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <Function test_address_of_global_var> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) nargs = 1, Function = <class 'pypy.interpreter.function.Function'> Method = <class 'pypy.interpreter.function.Method'> def call_function(self, w_func, *args_w): nargs = len(args_w) # used for pruning funccall versions if not self.config.objspace.disable_call_speedhacks and nargs < 5: # start of hack for performance from pypy.interpreter.function import Function, Method if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: if nargs < 4: func = w_func.w_function if isinstance(func, Function): return func.funccall(w_inst, *args_w) elif args_w and ( self.abstract_isinstance_w(args_w[0], w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): > return w_func.funccall(*args_w) interpreter\baseobjspace.py:1210: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <Function test_address_of_global_var> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) gateway = <module 'pypy.interpreter.gateway' from 'd:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\interpreter\\gateway.pyc'> PyCode = <class 'pypy.interpreter.pycode.PyCode'> code = <code object test_address_of_global_var, file '[d:\pypy_stuff\buildbot64\slave...n-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:794]', line 1> def funccall(self, *args_w): # speed hack from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit nargs = len(args_w) fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, args_w[0]) elif nargs == 2: assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, args_w[0], args_w[1]) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) return code.fastcall_3(self.space, self, args_w[0], args_w[1], args_w[2]) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) return code.fastcall_4(self.space, self, args_w[0], args_w[1], args_w[2], args_w[3]) elif (nargs | PyCode.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) if nargs < 5: new_frame = self.space.createframe(code, self.w_func_globals, self) for i in funccallunrolling: if i < nargs: new_frame.locals_cells_stack_w[i] = args_w[i] > return new_frame.run() interpreter\function.py:118: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_address_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:794]', line 1> at line 7 def run(self): """Start this frame's execution.""" if self.getcode().co_flags & pycode.CO_GENERATOR: from pypy.interpreter.generator import GeneratorIterator return GeneratorIterator(self) else: > return self.execute_frame() interpreter\pyframe.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_address_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:794]', line 1> at line 7 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, executioncontext) except OperationError: raise except Exception as e: # general fall-back > raise self._convert_unexpected_exception(e) interpreter\pyframe.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_address_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:794]', line 1> at line 7 e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def _convert_unexpected_exception(self, e): from pypy.interpreter import error > operr = error.get_converted_unexpected_exception(self.space, e) interpreter\pyframe.py:943: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_address_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:794]', line 1> at line 7 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, > executioncontext) interpreter\pyframe.py:286: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_address_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:794]', line 1> at line 7 pycode = <code object test_address_of_global_var, file '[d:\pypy_stuff\buildbot64\slave...n-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:794]', line 1> next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def dispatch(self, pycode, next_instr, ec): # For the sequel, force 'next_instr' to be unsigned for performance next_instr = r_uint(next_instr) co_code = pycode.co_code try: while True: > next_instr = self.handle_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:64: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_address_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:794]', line 1> at line 7 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00d\x04\x00|\x02\x00_\x01\x00\x...06\x00|\x02\x00d\x10\x00\x83\x04\x00\x01t\x08\x00t\t\x00|\x01\x00j\x06\x00|\x02\x00d\x11\x00\x83\x04\x00\x01d\x00\x00S' next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def handle_bytecode(self, co_code, next_instr, ec): try: > next_instr = self.dispatch_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:71: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_address_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:794]', line 1> at line 7 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00d\x04\x00|\x02\x00_\x01\x00\x...06\x00|\x02\x00d\x10\x00\x83\x04\x00\x01t\x08\x00t\t\x00|\x01\x00j\x06\x00|\x02\x00d\x11\x00\x83\x04\x00\x01d\x00\x00S' next_instr = 18L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> @jit.unroll_safe def dispatch_bytecode(self, co_code, next_instr, ec): while True: self.last_instr = intmask(next_instr) if jit.we_are_jitted(): if self.debugdata: ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) else: # Only reload next_instr from last_instr when something that # can modify it actually ran (trace function or action # dispatcher). In the common case (no trace, positive ticker) # next_instr is unchanged and the round-trip is skipped. _d = self.debugdata if ec.space.reverse_debugging or ( _d is not None and _d.w_f_trace is not None) or ( not we_are_translated() and 'bytecode_only_trace' in ec.__dict__): ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) actionflag = ec.space.actionflag if actionflag.decrement_ticker(TICK_COUNTER_STEP) < 0: actionflag.action_dispatcher(ec, self) next_instr = r_uint(self.last_instr) opcode = ord(co_code[next_instr]) next_instr += 1 if opcode >= HAVE_ARGUMENT: lo = ord(co_code[next_instr]) hi = ord(co_code[next_instr+1]) next_instr += 2 oparg = (hi * 256) | lo else: oparg = 0 # note: the structure of the code here is such that it makes # (after translation) a big "if/elif" chain, which is then # turned into a switch(). while opcode == opcodedesc.EXTENDED_ARG.index: opcode = ord(co_code[next_instr]) if opcode < HAVE_ARGUMENT: raise BytecodeCorruption lo = ord(co_code[next_instr+1]) hi = ord(co_code[next_instr+2]) next_instr += 3 oparg = (oparg * 65536) | (hi * 256) | lo if opcode == opcodedesc.RETURN_VALUE.index: if not self.blockstack_non_empty(): self.frame_finished_execution = True # for generators raise Return w_returnvalue = self.popvalue() block = self.unrollstack(SReturnValue.kind) if block is None: self.pushvalue(w_returnvalue) raise Return else: unroller = SReturnValue(w_returnvalue) next_instr = block.handle(self, unroller) return next_instr # now inside a 'finally' block elif opcode == opcodedesc.END_FINALLY.index: unroller = self.end_finally() if isinstance(unroller, SuspendedUnroller): # go on unrolling the stack block = self.unrollstack(unroller.kind) if block is None: w_result = unroller.nomoreblocks() self.pushvalue(w_result) raise Return else: next_instr = block.handle(self, unroller) return next_instr elif opcode == opcodedesc.JUMP_ABSOLUTE.index: return self.jump_absolute(oparg, ec) elif opcode == opcodedesc.BREAK_LOOP.index: next_instr = self.BREAK_LOOP(oparg, next_instr) elif opcode == opcodedesc.CONTINUE_LOOP.index: return self.CONTINUE_LOOP(oparg, next_instr) elif opcode == opcodedesc.FOR_ITER.index: next_instr = self.FOR_ITER(oparg, next_instr) elif opcode == opcodedesc.JUMP_FORWARD.index: next_instr = self.JUMP_FORWARD(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_FALSE_OR_POP.index: next_instr = self.JUMP_IF_FALSE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_NOT_DEBUG.index: next_instr = self.JUMP_IF_NOT_DEBUG(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_TRUE_OR_POP.index: next_instr = self.JUMP_IF_TRUE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_FALSE.index: next_instr = self.POP_JUMP_IF_FALSE(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_TRUE.index: next_instr = self.POP_JUMP_IF_TRUE(oparg, next_instr) elif opcode == opcodedesc.BINARY_ADD.index: self.BINARY_ADD(oparg, next_instr) elif opcode == opcodedesc.BINARY_AND.index: self.BINARY_AND(oparg, next_instr) elif opcode == opcodedesc.BINARY_DIVIDE.index: self.BINARY_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_FLOOR_DIVIDE.index: self.BINARY_FLOOR_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_LSHIFT.index: self.BINARY_LSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_MODULO.index: self.BINARY_MODULO(oparg, next_instr) elif opcode == opcodedesc.BINARY_MULTIPLY.index: self.BINARY_MULTIPLY(oparg, next_instr) elif opcode == opcodedesc.BINARY_OR.index: self.BINARY_OR(oparg, next_instr) elif opcode == opcodedesc.BINARY_POWER.index: self.BINARY_POWER(oparg, next_instr) elif opcode == opcodedesc.BINARY_RSHIFT.index: self.BINARY_RSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBSCR.index: self.BINARY_SUBSCR(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBTRACT.index: self.BINARY_SUBTRACT(oparg, next_instr) elif opcode == opcodedesc.BINARY_TRUE_DIVIDE.index: self.BINARY_TRUE_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_XOR.index: self.BINARY_XOR(oparg, next_instr) elif opcode == opcodedesc.BUILD_CLASS.index: self.BUILD_CLASS(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST.index: self.BUILD_LIST(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST_FROM_ARG.index: self.BUILD_LIST_FROM_ARG(oparg, next_instr) elif opcode == opcodedesc.BUILD_MAP.index: self.BUILD_MAP(oparg, next_instr) elif opcode == opcodedesc.BUILD_SET.index: self.BUILD_SET(oparg, next_instr) elif opcode == opcodedesc.BUILD_SLICE.index: self.BUILD_SLICE(oparg, next_instr) elif opcode == opcodedesc.BUILD_TUPLE.index: self.BUILD_TUPLE(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION.index: self.CALL_FUNCTION(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_KW.index: self.CALL_FUNCTION_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR.index: self.CALL_FUNCTION_VAR(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR_KW.index: self.CALL_FUNCTION_VAR_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_METHOD.index: > self.CALL_METHOD(oparg, next_instr) interpreter\pyopcode.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ f = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_address_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:794]', line 1> at line 7 oparg = 3, ignored = (18L,), n_args = 3, n_kwargs = 0, w_self = None @jit.unroll_safe def CALL_METHOD(f, oparg, *ignored): # opargs contains the arg, and kwarg count, excluding the implicit 'self' n_args = oparg & 0xff n_kwargs = (oparg >> 8) & 0xff w_self = f.peekvalue_maybe_none(n_args + (2 * n_kwargs)) n = n_args + (w_self is not None) if not n_kwargs: w_callable = f.peekvalue(n_args + (2 * n_kwargs) + 1) w_result = f.space.call_valuestack( > w_callable, n, f, methodcall=w_self is not None, dropvalues=n_args + 2) objspace\std\callmethod.py:96: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_address_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:794]', line 1> at line 7 dropvalues = 5, methodcall = False def call_valuestack(self, w_func, nargs, frame, dropvalues, methodcall=False): # methodcall is only used for better error messages in argument.py from pypy.interpreter.function import Function, Method, is_builtin_code if frame.get_is_being_profiled() and is_builtin_code(w_func): # XXX: this code is copied&pasted :-( from the slow path below # call_valuestack(). args = frame.make_arguments(nargs) frame.dropvalues(dropvalues) return self.call_args_and_c_profile(frame, w_func, args) if not self.config.objspace.disable_call_speedhacks: # start of hack for performance if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: w_func = w_func.w_function # reuse callable stack place for w_inst frame.settopvalue(w_inst, nargs) nargs += 1 methodcall = True elif nargs > 0 and ( self.abstract_isinstance_w(frame.peekvalue(nargs-1), # :-( w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): return w_func.funccall_valuestack( > nargs, frame, methodcall=methodcall, dropvalues=dropvalues) interpreter\baseobjspace.py:1243: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_address_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:794]', line 1> at line 7 dropvalues = 5, methodcall = False def funccall_valuestack(self, nargs, frame, dropvalues, methodcall=False): # speed hack # methodcall is only for better error messages from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit # if (jit.we_are_jitted() and code is self.space._code_of_sys_exc_info and nargs == 0): frame.dropvalues(dropvalues) from pypy.module.sys.vm import exc_info_direct return exc_info_direct(self.space, frame) # fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: f_0 = frame.peekvalue(0) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, f_0) elif nargs == 2: f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, f_1, f_0) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) frame.dropvalues(dropvalues) return code.fastcall_3(self.space, self, f_2, f_1, f_0) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) f_3 = frame.peekvalue(3) frame.dropvalues(dropvalues) return code.fastcall_4(self.space, self, f_3, f_2, f_1, f_0) elif (nargs | Code.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) return self._flat_pycall(code, nargs, frame, dropvalues) elif fast_natural_arity & Code.FLATPYCALL: natural_arity = fast_natural_arity & 0xff if natural_arity > nargs >= natural_arity - len(self.defs_w): assert isinstance(code, PyCode) return self._flat_pycall_defaults(code, nargs, frame, natural_arity - nargs, dropvalues) elif fast_natural_arity == Code.PASSTHROUGHARGS1 and nargs >= 1: assert isinstance(code, gateway.BuiltinCodePassThroughArguments1) w_obj = frame.peekvalue(nargs-1) args = frame.make_arguments(nargs-1) frame.dropvalues(dropvalues) return code.funcrun_obj(self, w_obj, args) args = frame.make_arguments(nargs, methodcall=methodcall) frame.dropvalues(dropvalues) > return self.call_args(args) interpreter\function.py:190: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('\n long bottom, bottoms[2];\n ...toms1(void) { return bottoms[1]; }\n #define FOOBAR 42\n ')]) def call_args(self, args): # delegate activation to code > w_res = self.getcode().funcrun(self, args) interpreter\function.py:68: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('\n long bottom, bottoms[2];\n ...toms1(void) { return bottoms[1]; }\n #define FOOBAR 42\n ')]) def funcrun(self, func, args): > return BuiltinCode.funcrun_obj(self, func, None, args) interpreter\gateway.py:781: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('\n long bottom, bottoms[2];\n ...toms1(void) { return bottoms[1]; }\n #define FOOBAR 42\n ')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: w_result = activation._run(space, scope_w) except DescrMismatch: if w_obj is not None: args = args.prepend(w_obj) return self._type_unwrap_mismatch(space, args) except Exception as e: > self.handle_exception(space, e) interpreter\gateway.py:795: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> space = StdObjSpace e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def handle_exception(self, space, e): try: if not we_are_translated(): raise raise e except OperationError: raise except Exception as e: # general fall-back from pypy.interpreter import error > raise error.get_converted_unexpected_exception(space, e) interpreter\gateway.py:819: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('\n long bottom, bottoms[2];\n ...toms1(void) { return bottoms[1]; }\n #define FOOBAR 42\n ')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: > w_result = activation._run(space, scope_w) interpreter\gateway.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinActivation_UwS_ObjSpace_text_text_text_W_Root_W_Root_W_Root_int_W_Root object at 0x000002791c13af38> space = StdObjSpace scope_w = [W_BytesObject('\n long bottom, bottoms[2];\n long FetchR... long FetchRectBottoms1(void);... long FetchR...ottoms1(void) { return bottoms[1]; }\n #define FOOBAR 42\n '), None, None, None, ...] def _run(self, space, scope_w): > return self.behavior(space, space.text_w(scope_w[0]), space.text_w(scope_w[1]), space.text_w(scope_w[2]), scope_w[3], scope_w[4], scope_w[5], space.gateway_int_w(scope_w[6]), scope_w[7]) <3152-codegen d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\rpython\tool\sourcetools.py:200>:3: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace cdef = '\n long bottom, bottoms[2];\n long FetchRectBottom(void);\n long FetchRectBottoms1(void);\n #define FOOBAR 42\n ' module_name = '_CFFI_test_address_of_global_var' source = '\n long bottom, bottoms[2];\n long FetchRectBottom(void) { return bottom; }\n long FetchRectBottoms1(void) { return bottoms[1]; }\n #define FOOBAR 42\n ' w_includes = None, w_extra_source = None, w_min_version = None, packed = 0 w_extra_compile_args = None @unwrap_spec(cdef='text', module_name='text', source='text', packed=int) def prepare(space, cdef, module_name, source, w_includes=None, w_extra_source=None, w_min_version=None, packed=False, w_extra_compile_args=None): try: import cffi from cffi import FFI # <== the system one, which from cffi import recompiler # needs to be at least cffi 1.0.4 from cffi import ffiplatform except ImportError: pytest.skip("system cffi module not found or older than 1.0.0") if w_min_version is None: min_version = (1, 4, 0) else: min_version = tuple(space.unwrap(w_min_version)) if cffi.__version_info__ < min_version: pytest.skip("system cffi module needs to be at least %s, got %s" % ( min_version, cffi.__version_info__)) space.appexec([], """(): import _cffi_backend # force it to be initialized """) includes = [] if w_includes: includes += space.unpackiterable(w_includes) assert module_name.startswith('test_') module_name = '_CFFI_' + module_name rdir = udir.ensure('recompiler', dir=1) rdir.join('Python.h').write( '#include <stdio.h>\n' '#define PYPY_VERSION XX\n' '#define PyMODINIT_FUNC /*exported*/ void\n' ) path = module_name.replace('.', os.sep) if '.' in module_name: subrdir = rdir.join(module_name[:module_name.index('.')]) os.mkdir(str(subrdir)) else: subrdir = rdir c_file = str(rdir.join('%s.c' % path)) ffi = FFI() for include_ffi_object in includes: ffi.include(include_ffi_object._test_recompiler_source_ffi) ffi.cdef(cdef, packed=packed) ffi.set_source(module_name, source) ffi.emit_c_code(c_file) base_module_name = module_name.split('.')[-1] sources = [] if w_extra_source is not None: sources.append(space.str_w(w_extra_source)) kwargs = {} # GCC 14 promotes -Wincompatible-pointer-types from a warning to an error # by default, which breaks cffi's intentionally-mismatched field-check # probes (e.g. test_misdeclared_field_1). Keep it a warning so the module # compiles and cffi's runtime checks can run. extra = ['-Wno-error=incompatible-pointer-types'] if w_extra_compile_args is not None: extra = extra + space.unwrap(w_extra_compile_args) kwargs['extra_compile_args'] = extra ext = ffiplatform.get_extension(c_file, module_name, include_dirs=[str(rdir)], export_symbols=['_cffi_pypyinit_' + base_module_name], sources=sources, **kwargs) > ffiplatform.compile(str(rdir), ext) module\_cffi_backend\test\test_recompiler.py:86: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x00000279288ce9e0> compiler_verbose = 0, debug = None def compile(tmpdir, ext, compiler_verbose=0, debug=None): """Compile a C extension module using distutils.""" saved_environ = os.environ.copy() try: > outputfilename = _build(tmpdir, ext, compiler_verbose, debug) d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x00000279288ce9e0> compiler_verbose = 0, debug = 0 def _build(tmpdir, ext, compiler_verbose=0, debug=None): # XXX compact but horrible :-( from cffi._shimmed_dist_utils import Distribution, CompileError, LinkError, set_threshold, set_verbosity dist = Distribution({'ext_modules': [ext]}) dist.parse_config_files() options = dist.get_option_dict('build_ext') if debug is None: debug = sys.flags.debug options['debug'] = ('ffiplatform', debug) options['force'] = ('ffiplatform', True) options['build_lib'] = ('ffiplatform', tmpdir) options['build_temp'] = ('ffiplatform', tmpdir) # try: old_level = set_threshold(0) or 0 try: set_verbosity(compiler_verbose) dist.run_command('build_ext') cmd_obj = dist.get_command_obj('build_ext') [soname] = cmd_obj.get_outputs() finally: set_threshold(old_level) except (CompileError, LinkError) as e: > raise VerificationError('%s: %s' % (e.__class__.__name__, e)) E VerificationError: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2 d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:54: VerificationError ---------------------------- Captured stdout call ----------------------------- generating d:\systemtemp\pytest\usession-main-595\recompiler\_CFFI_test_address_of_global_var.c ---------------------------- Captured stderr call ----------------------------- d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\cparser.py:165: UserWarning: Global variable 'bottom' in cdef(): for consistency with C it should have a storage class specifier (usually 'extern') "(usually 'extern')" % (decl.name,)) d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\cparser.py:165: UserWarning: Global variable 'bottoms' in cdef(): for consistency with C it should have a storage class specifier (usually 'extern') "(usually 'extern')" % (decl.name,)) cl : Command line error D8021 : invalid numeric argument '/Wno-error=incompatible-pointer-types' ____________________ AppTestRecompiler.test_defines__CFFI_ ____________________ self = <CallInfo when='call' exception: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2> func = <function <lambda> at 0x000002792aa88548>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ..\_pytest\runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ..\_pytest\runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_defines__CFFI_'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_defines__CFFI_'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ..\_pytest\vendored_packages\pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00000279153616a8> hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_defines__CFFI_'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_defines__CFFI_'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ..\_pytest\vendored_packages\pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_defines__CFFI_'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_defines__CFFI_'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ..\_pytest\vendored_packages\pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_defines__CFFI_'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791a58a610> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...nes__CFFI_'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002791df4b460> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002791df4b460> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...nes__CFFI_'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_defines__CFFI_'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791a58a570> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...nes__CFFI_'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002791df4b420> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002791df4b420> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...nes__CFFI_'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_defines__CFFI_'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ..\_pytest\vendored_packages\pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_defines__CFFI_'> def pytest_runtest_call(item): try: > item.runtest() ..\_pytest\runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_defines__CFFI_'> def runtest(self): target = self.obj if self.config.option.runappdirect: return target() space = target.im_self.space filename = self._getdynfilename(target) func = app2interp_temp(target.im_func, filename=filename) w_instance = self.parent.w_instance > self.execute_appex(space, func, space, w_instance) tool\pytest\apptest.py:89: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_defines__CFFI_'>, space = StdObjSpace target = <function test_defines__CFFI_ at 0x000002792aa88638> args = (StdObjSpace, <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>) def execute_appex(self, space, target, *args): self.space = space try: > target(*args) tool\pytest\apptest.py:30: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) w_func = <Function test_defines__CFFI_> args = <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8> def appcaller(space, *args_w): if not isinstance(space, ObjSpace): raise TypeError("first argument must be a space instance.") # the last argument can be an Arguments w_func = self.wget(space, name) if not args_w: return space.call_function(w_func) else: args = args_w[-1] assert args is not None if not isinstance(args, Arguments): > return space.call_function(w_func, *args_w) interpreter\gateway.py:1227: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <Function test_defines__CFFI_> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) nargs = 1, Function = <class 'pypy.interpreter.function.Function'> Method = <class 'pypy.interpreter.function.Method'> def call_function(self, w_func, *args_w): nargs = len(args_w) # used for pruning funccall versions if not self.config.objspace.disable_call_speedhacks and nargs < 5: # start of hack for performance from pypy.interpreter.function import Function, Method if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: if nargs < 4: func = w_func.w_function if isinstance(func, Function): return func.funccall(w_inst, *args_w) elif args_w and ( self.abstract_isinstance_w(args_w[0], w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): > return w_func.funccall(*args_w) interpreter\baseobjspace.py:1210: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <Function test_defines__CFFI_> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) gateway = <module 'pypy.interpreter.gateway' from 'd:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\interpreter\\gateway.pyc'> PyCode = <class 'pypy.interpreter.pycode.PyCode'> code = <code object test_defines__CFFI_, file '[d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:827]', line 1> def funccall(self, *args_w): # speed hack from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit nargs = len(args_w) fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, args_w[0]) elif nargs == 2: assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, args_w[0], args_w[1]) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) return code.fastcall_3(self.space, self, args_w[0], args_w[1], args_w[2]) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) return code.fastcall_4(self.space, self, args_w[0], args_w[1], args_w[2], args_w[3]) elif (nargs | PyCode.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) if nargs < 5: new_frame = self.space.createframe(code, self.w_func_globals, self) for i in funccallunrolling: if i < nargs: new_frame.locals_cells_stack_w[i] = args_w[i] > return new_frame.run() interpreter\function.py:118: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_defines_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:827]', line 1> at line 7 def run(self): """Start this frame's execution.""" if self.getcode().co_flags & pycode.CO_GENERATOR: from pypy.interpreter.generator import GeneratorIterator return GeneratorIterator(self) else: > return self.execute_frame() interpreter\pyframe.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_defines_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:827]', line 1> at line 7 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, executioncontext) except OperationError: raise except Exception as e: # general fall-back > raise self._convert_unexpected_exception(e) interpreter\pyframe.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_defines_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:827]', line 1> at line 7 e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def _convert_unexpected_exception(self, e): from pypy.interpreter import error > operr = error.get_converted_unexpected_exception(self.space, e) interpreter\pyframe.py:943: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_defines_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:827]', line 1> at line 7 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, > executioncontext) interpreter\pyframe.py:286: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_defines_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:827]', line 1> at line 7 pycode = <code object test_defines__CFFI_, file '[d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:827]', line 1> next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def dispatch(self, pycode, next_instr, ec): # For the sequel, force 'next_instr' to be unsigned for performance next_instr = r_uint(next_instr) co_code = pycode.co_code try: while True: > next_instr = self.handle_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:64: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_defines_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:827]', line 1> at line 7 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00\xcc\x15\x00|\x02\x00j\x01\x00d\x04\x00k\x02\x00s3\x00t\x02\x00\x82\x01\x00d\x00\x00S' next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def handle_bytecode(self, co_code, next_instr, ec): try: > next_instr = self.dispatch_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:71: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_defines_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:827]', line 1> at line 7 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00\xcc\x15\x00|\x02\x00j\x01\x00d\x04\x00k\x02\x00s3\x00t\x02\x00\x82\x01\x00d\x00\x00S' next_instr = 18L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> @jit.unroll_safe def dispatch_bytecode(self, co_code, next_instr, ec): while True: self.last_instr = intmask(next_instr) if jit.we_are_jitted(): if self.debugdata: ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) else: # Only reload next_instr from last_instr when something that # can modify it actually ran (trace function or action # dispatcher). In the common case (no trace, positive ticker) # next_instr is unchanged and the round-trip is skipped. _d = self.debugdata if ec.space.reverse_debugging or ( _d is not None and _d.w_f_trace is not None) or ( not we_are_translated() and 'bytecode_only_trace' in ec.__dict__): ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) actionflag = ec.space.actionflag if actionflag.decrement_ticker(TICK_COUNTER_STEP) < 0: actionflag.action_dispatcher(ec, self) next_instr = r_uint(self.last_instr) opcode = ord(co_code[next_instr]) next_instr += 1 if opcode >= HAVE_ARGUMENT: lo = ord(co_code[next_instr]) hi = ord(co_code[next_instr+1]) next_instr += 2 oparg = (hi * 256) | lo else: oparg = 0 # note: the structure of the code here is such that it makes # (after translation) a big "if/elif" chain, which is then # turned into a switch(). while opcode == opcodedesc.EXTENDED_ARG.index: opcode = ord(co_code[next_instr]) if opcode < HAVE_ARGUMENT: raise BytecodeCorruption lo = ord(co_code[next_instr+1]) hi = ord(co_code[next_instr+2]) next_instr += 3 oparg = (oparg * 65536) | (hi * 256) | lo if opcode == opcodedesc.RETURN_VALUE.index: if not self.blockstack_non_empty(): self.frame_finished_execution = True # for generators raise Return w_returnvalue = self.popvalue() block = self.unrollstack(SReturnValue.kind) if block is None: self.pushvalue(w_returnvalue) raise Return else: unroller = SReturnValue(w_returnvalue) next_instr = block.handle(self, unroller) return next_instr # now inside a 'finally' block elif opcode == opcodedesc.END_FINALLY.index: unroller = self.end_finally() if isinstance(unroller, SuspendedUnroller): # go on unrolling the stack block = self.unrollstack(unroller.kind) if block is None: w_result = unroller.nomoreblocks() self.pushvalue(w_result) raise Return else: next_instr = block.handle(self, unroller) return next_instr elif opcode == opcodedesc.JUMP_ABSOLUTE.index: return self.jump_absolute(oparg, ec) elif opcode == opcodedesc.BREAK_LOOP.index: next_instr = self.BREAK_LOOP(oparg, next_instr) elif opcode == opcodedesc.CONTINUE_LOOP.index: return self.CONTINUE_LOOP(oparg, next_instr) elif opcode == opcodedesc.FOR_ITER.index: next_instr = self.FOR_ITER(oparg, next_instr) elif opcode == opcodedesc.JUMP_FORWARD.index: next_instr = self.JUMP_FORWARD(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_FALSE_OR_POP.index: next_instr = self.JUMP_IF_FALSE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_NOT_DEBUG.index: next_instr = self.JUMP_IF_NOT_DEBUG(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_TRUE_OR_POP.index: next_instr = self.JUMP_IF_TRUE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_FALSE.index: next_instr = self.POP_JUMP_IF_FALSE(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_TRUE.index: next_instr = self.POP_JUMP_IF_TRUE(oparg, next_instr) elif opcode == opcodedesc.BINARY_ADD.index: self.BINARY_ADD(oparg, next_instr) elif opcode == opcodedesc.BINARY_AND.index: self.BINARY_AND(oparg, next_instr) elif opcode == opcodedesc.BINARY_DIVIDE.index: self.BINARY_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_FLOOR_DIVIDE.index: self.BINARY_FLOOR_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_LSHIFT.index: self.BINARY_LSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_MODULO.index: self.BINARY_MODULO(oparg, next_instr) elif opcode == opcodedesc.BINARY_MULTIPLY.index: self.BINARY_MULTIPLY(oparg, next_instr) elif opcode == opcodedesc.BINARY_OR.index: self.BINARY_OR(oparg, next_instr) elif opcode == opcodedesc.BINARY_POWER.index: self.BINARY_POWER(oparg, next_instr) elif opcode == opcodedesc.BINARY_RSHIFT.index: self.BINARY_RSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBSCR.index: self.BINARY_SUBSCR(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBTRACT.index: self.BINARY_SUBTRACT(oparg, next_instr) elif opcode == opcodedesc.BINARY_TRUE_DIVIDE.index: self.BINARY_TRUE_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_XOR.index: self.BINARY_XOR(oparg, next_instr) elif opcode == opcodedesc.BUILD_CLASS.index: self.BUILD_CLASS(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST.index: self.BUILD_LIST(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST_FROM_ARG.index: self.BUILD_LIST_FROM_ARG(oparg, next_instr) elif opcode == opcodedesc.BUILD_MAP.index: self.BUILD_MAP(oparg, next_instr) elif opcode == opcodedesc.BUILD_SET.index: self.BUILD_SET(oparg, next_instr) elif opcode == opcodedesc.BUILD_SLICE.index: self.BUILD_SLICE(oparg, next_instr) elif opcode == opcodedesc.BUILD_TUPLE.index: self.BUILD_TUPLE(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION.index: self.CALL_FUNCTION(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_KW.index: self.CALL_FUNCTION_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR.index: self.CALL_FUNCTION_VAR(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR_KW.index: self.CALL_FUNCTION_VAR_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_METHOD.index: > self.CALL_METHOD(oparg, next_instr) interpreter\pyopcode.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ f = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_defines_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:827]', line 1> at line 7 oparg = 3, ignored = (18L,), n_args = 3, n_kwargs = 0, w_self = None @jit.unroll_safe def CALL_METHOD(f, oparg, *ignored): # opargs contains the arg, and kwarg count, excluding the implicit 'self' n_args = oparg & 0xff n_kwargs = (oparg >> 8) & 0xff w_self = f.peekvalue_maybe_none(n_args + (2 * n_kwargs)) n = n_args + (w_self is not None) if not n_kwargs: w_callable = f.peekvalue(n_args + (2 * n_kwargs) + 1) w_result = f.space.call_valuestack( > w_callable, n, f, methodcall=w_self is not None, dropvalues=n_args + 2) objspace\std\callmethod.py:96: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_defines_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:827]', line 1> at line 7 dropvalues = 5, methodcall = False def call_valuestack(self, w_func, nargs, frame, dropvalues, methodcall=False): # methodcall is only used for better error messages in argument.py from pypy.interpreter.function import Function, Method, is_builtin_code if frame.get_is_being_profiled() and is_builtin_code(w_func): # XXX: this code is copied&pasted :-( from the slow path below # call_valuestack(). args = frame.make_arguments(nargs) frame.dropvalues(dropvalues) return self.call_args_and_c_profile(frame, w_func, args) if not self.config.objspace.disable_call_speedhacks: # start of hack for performance if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: w_func = w_func.w_function # reuse callable stack place for w_inst frame.settopvalue(w_inst, nargs) nargs += 1 methodcall = True elif nargs > 0 and ( self.abstract_isinstance_w(frame.peekvalue(nargs-1), # :-( w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): return w_func.funccall_valuestack( > nargs, frame, methodcall=methodcall, dropvalues=dropvalues) interpreter\baseobjspace.py:1243: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_defines_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:827]', line 1> at line 7 dropvalues = 5, methodcall = False def funccall_valuestack(self, nargs, frame, dropvalues, methodcall=False): # speed hack # methodcall is only for better error messages from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit # if (jit.we_are_jitted() and code is self.space._code_of_sys_exc_info and nargs == 0): frame.dropvalues(dropvalues) from pypy.module.sys.vm import exc_info_direct return exc_info_direct(self.space, frame) # fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: f_0 = frame.peekvalue(0) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, f_0) elif nargs == 2: f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, f_1, f_0) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) frame.dropvalues(dropvalues) return code.fastcall_3(self.space, self, f_2, f_1, f_0) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) f_3 = frame.peekvalue(3) frame.dropvalues(dropvalues) return code.fastcall_4(self.space, self, f_3, f_2, f_1, f_0) elif (nargs | Code.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) return self._flat_pycall(code, nargs, frame, dropvalues) elif fast_natural_arity & Code.FLATPYCALL: natural_arity = fast_natural_arity & 0xff if natural_arity > nargs >= natural_arity - len(self.defs_w): assert isinstance(code, PyCode) return self._flat_pycall_defaults(code, nargs, frame, natural_arity - nargs, dropvalues) elif fast_natural_arity == Code.PASSTHROUGHARGS1 and nargs >= 1: assert isinstance(code, gateway.BuiltinCodePassThroughArguments1) w_obj = frame.peekvalue(nargs-1) args = frame.make_arguments(nargs-1) frame.dropvalues(dropvalues) return code.funcrun_obj(self, w_obj, args) args = frame.make_arguments(nargs, methodcall=methodcall) frame.dropvalues(dropvalues) > return self.call_args(args) interpreter\function.py:190: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('\n #define CORRECT 1\n '), W_Bytes...def _CFFI_\n # define CORRECT 1\n #endif\n ')]) def call_args(self, args): # delegate activation to code > w_res = self.getcode().funcrun(self, args) interpreter\function.py:68: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('\n #define CORRECT 1\n '), W_Bytes...def _CFFI_\n # define CORRECT 1\n #endif\n ')]) def funcrun(self, func, args): > return BuiltinCode.funcrun_obj(self, func, None, args) interpreter\gateway.py:781: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('\n #define CORRECT 1\n '), W_Bytes...def _CFFI_\n # define CORRECT 1\n #endif\n ')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: w_result = activation._run(space, scope_w) except DescrMismatch: if w_obj is not None: args = args.prepend(w_obj) return self._type_unwrap_mismatch(space, args) except Exception as e: > self.handle_exception(space, e) interpreter\gateway.py:795: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> space = StdObjSpace e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def handle_exception(self, space, e): try: if not we_are_translated(): raise raise e except OperationError: raise except Exception as e: # general fall-back from pypy.interpreter import error > raise error.get_converted_unexpected_exception(space, e) interpreter\gateway.py:819: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('\n #define CORRECT 1\n '), W_Bytes...def _CFFI_\n # define CORRECT 1\n #endif\n ')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: > w_result = activation._run(space, scope_w) interpreter\gateway.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinActivation_UwS_ObjSpace_text_text_text_W_Root_W_Root_W_Root_int_W_Root object at 0x000002791c13af38> space = StdObjSpace scope_w = [W_BytesObject('\n #define CORRECT 1\n '), W_BytesObject('test_defines__CFFI_'), W_BytesObject('\n #ifdef _CFFI_\n # define CORRECT 1\n #endif\n '), None, None, None, ...] def _run(self, space, scope_w): > return self.behavior(space, space.text_w(scope_w[0]), space.text_w(scope_w[1]), space.text_w(scope_w[2]), scope_w[3], scope_w[4], scope_w[5], space.gateway_int_w(scope_w[6]), scope_w[7]) <3152-codegen d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\rpython\tool\sourcetools.py:200>:3: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace, cdef = '\n #define CORRECT 1\n ' module_name = '_CFFI_test_defines__CFFI_' source = '\n #ifdef _CFFI_\n # define CORRECT 1\n #endif\n ' w_includes = None, w_extra_source = None, w_min_version = None, packed = 0 w_extra_compile_args = None @unwrap_spec(cdef='text', module_name='text', source='text', packed=int) def prepare(space, cdef, module_name, source, w_includes=None, w_extra_source=None, w_min_version=None, packed=False, w_extra_compile_args=None): try: import cffi from cffi import FFI # <== the system one, which from cffi import recompiler # needs to be at least cffi 1.0.4 from cffi import ffiplatform except ImportError: pytest.skip("system cffi module not found or older than 1.0.0") if w_min_version is None: min_version = (1, 4, 0) else: min_version = tuple(space.unwrap(w_min_version)) if cffi.__version_info__ < min_version: pytest.skip("system cffi module needs to be at least %s, got %s" % ( min_version, cffi.__version_info__)) space.appexec([], """(): import _cffi_backend # force it to be initialized """) includes = [] if w_includes: includes += space.unpackiterable(w_includes) assert module_name.startswith('test_') module_name = '_CFFI_' + module_name rdir = udir.ensure('recompiler', dir=1) rdir.join('Python.h').write( '#include <stdio.h>\n' '#define PYPY_VERSION XX\n' '#define PyMODINIT_FUNC /*exported*/ void\n' ) path = module_name.replace('.', os.sep) if '.' in module_name: subrdir = rdir.join(module_name[:module_name.index('.')]) os.mkdir(str(subrdir)) else: subrdir = rdir c_file = str(rdir.join('%s.c' % path)) ffi = FFI() for include_ffi_object in includes: ffi.include(include_ffi_object._test_recompiler_source_ffi) ffi.cdef(cdef, packed=packed) ffi.set_source(module_name, source) ffi.emit_c_code(c_file) base_module_name = module_name.split('.')[-1] sources = [] if w_extra_source is not None: sources.append(space.str_w(w_extra_source)) kwargs = {} # GCC 14 promotes -Wincompatible-pointer-types from a warning to an error # by default, which breaks cffi's intentionally-mismatched field-check # probes (e.g. test_misdeclared_field_1). Keep it a warning so the module # compiles and cffi's runtime checks can run. extra = ['-Wno-error=incompatible-pointer-types'] if w_extra_compile_args is not None: extra = extra + space.unwrap(w_extra_compile_args) kwargs['extra_compile_args'] = extra ext = ffiplatform.get_extension(c_file, module_name, include_dirs=[str(rdir)], export_symbols=['_cffi_pypyinit_' + base_module_name], sources=sources, **kwargs) > ffiplatform.compile(str(rdir), ext) module\_cffi_backend\test\test_recompiler.py:86: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x000002791df4b6e0> compiler_verbose = 0, debug = None def compile(tmpdir, ext, compiler_verbose=0, debug=None): """Compile a C extension module using distutils.""" saved_environ = os.environ.copy() try: > outputfilename = _build(tmpdir, ext, compiler_verbose, debug) d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x000002791df4b6e0> compiler_verbose = 0, debug = 0 def _build(tmpdir, ext, compiler_verbose=0, debug=None): # XXX compact but horrible :-( from cffi._shimmed_dist_utils import Distribution, CompileError, LinkError, set_threshold, set_verbosity dist = Distribution({'ext_modules': [ext]}) dist.parse_config_files() options = dist.get_option_dict('build_ext') if debug is None: debug = sys.flags.debug options['debug'] = ('ffiplatform', debug) options['force'] = ('ffiplatform', True) options['build_lib'] = ('ffiplatform', tmpdir) options['build_temp'] = ('ffiplatform', tmpdir) # try: old_level = set_threshold(0) or 0 try: set_verbosity(compiler_verbose) dist.run_command('build_ext') cmd_obj = dist.get_command_obj('build_ext') [soname] = cmd_obj.get_outputs() finally: set_threshold(old_level) except (CompileError, LinkError) as e: > raise VerificationError('%s: %s' % (e.__class__.__name__, e)) E VerificationError: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2 d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:54: VerificationError ---------------------------- Captured stdout call ----------------------------- generating d:\systemtemp\pytest\usession-main-595\recompiler\_CFFI_test_defines__CFFI_.c ---------------------------- Captured stderr call ----------------------------- cl : Command line error D8021 : invalid numeric argument '/Wno-error=incompatible-pointer-types' _____________________ AppTestRecompiler.test_unpack_args ______________________ self = <CallInfo when='call' exception: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2> func = <function <lambda> at 0x000002791bb9a458>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ..\_pytest\runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ..\_pytest\runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_unpack_args'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_unpack_args'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ..\_pytest\vendored_packages\pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00000279153616a8> hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_unpack_args'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_unpack_args'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ..\_pytest\vendored_packages\pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_unpack_args'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_unpack_args'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ..\_pytest\vendored_packages\pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_unpack_args'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002792b80dbf0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...npack_args'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792b39f620> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792b39f620> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...npack_args'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_unpack_args'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002792b80dba0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...npack_args'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792b39f5e0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792b39f5e0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...npack_args'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_unpack_args'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ..\_pytest\vendored_packages\pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_unpack_args'> def pytest_runtest_call(item): try: > item.runtest() ..\_pytest\runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_unpack_args'> def runtest(self): target = self.obj if self.config.option.runappdirect: return target() space = target.im_self.space filename = self._getdynfilename(target) func = app2interp_temp(target.im_func, filename=filename) w_instance = self.parent.w_instance > self.execute_appex(space, func, space, w_instance) tool\pytest\apptest.py:89: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_unpack_args'>, space = StdObjSpace target = <function test_unpack_args at 0x000002791c190ae8> args = (StdObjSpace, <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>) def execute_appex(self, space, target, *args): self.space = space try: > target(*args) tool\pytest\apptest.py:30: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) w_func = <Function test_unpack_args> args = <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8> def appcaller(space, *args_w): if not isinstance(space, ObjSpace): raise TypeError("first argument must be a space instance.") # the last argument can be an Arguments w_func = self.wget(space, name) if not args_w: return space.call_function(w_func) else: args = args_w[-1] assert args is not None if not isinstance(args, Arguments): > return space.call_function(w_func, *args_w) interpreter\gateway.py:1227: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <Function test_unpack_args> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) nargs = 1, Function = <class 'pypy.interpreter.function.Function'> Method = <class 'pypy.interpreter.function.Method'> def call_function(self, w_func, *args_w): nargs = len(args_w) # used for pruning funccall versions if not self.config.objspace.disable_call_speedhacks and nargs < 5: # start of hack for performance from pypy.interpreter.function import Function, Method if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: if nargs < 4: func = w_func.w_function if isinstance(func, Function): return func.funccall(w_inst, *args_w) elif args_w and ( self.abstract_isinstance_w(args_w[0], w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): > return w_func.funccall(*args_w) interpreter\baseobjspace.py:1210: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <Function test_unpack_args> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) gateway = <module 'pypy.interpreter.gateway' from 'd:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\interpreter\\gateway.pyc'> PyCode = <class 'pypy.interpreter.pycode.PyCode'> code = <code object test_unpack_args, file '[d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:840]', line 1> def funccall(self, *args_w): # speed hack from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit nargs = len(args_w) fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, args_w[0]) elif nargs == 2: assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, args_w[0], args_w[1]) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) return code.fastcall_3(self.space, self, args_w[0], args_w[1], args_w[2]) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) return code.fastcall_4(self.space, self, args_w[0], args_w[1], args_w[2], args_w[3]) elif (nargs | PyCode.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) if nargs < 5: new_frame = self.space.createframe(code, self.w_func_globals, self) for i in funccallunrolling: if i < nargs: new_frame.locals_cells_stack_w[i] = args_w[i] > return new_frame.run() interpreter\function.py:118: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_unpack_a...uild\pypy\module\_cffi_backend\test\test_recompiler.py:840]', line 1> at line 4 def run(self): """Start this frame's execution.""" if self.getcode().co_flags & pycode.CO_GENERATOR: from pypy.interpreter.generator import GeneratorIterator return GeneratorIterator(self) else: > return self.execute_frame() interpreter\pyframe.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_unpack_a...uild\pypy\module\_cffi_backend\test\test_recompiler.py:840]', line 1> at line 4 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, executioncontext) except OperationError: raise except Exception as e: # general fall-back > raise self._convert_unexpected_exception(e) interpreter\pyframe.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_unpack_a...uild\pypy\module\_cffi_backend\test\test_recompiler.py:840]', line 1> at line 4 e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def _convert_unexpected_exception(self, e): from pypy.interpreter import error > operr = error.get_converted_unexpected_exception(self.space, e) interpreter\pyframe.py:943: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_unpack_a...uild\pypy\module\_cffi_backend\test\test_recompiler.py:840]', line 1> at line 4 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, > executioncontext) interpreter\pyframe.py:286: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_unpack_a...uild\pypy\module\_cffi_backend\test\test_recompiler.py:840]', line 1> at line 4 pycode = <code object test_unpack_args, file '[d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:840]', line 1> next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def dispatch(self, pycode, next_instr, ec): # For the sequel, force 'next_instr' to be unsigned for performance next_instr = r_uint(next_instr) co_code = pycode.co_code try: while True: > next_instr = self.handle_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:64: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_unpack_a...uild\pypy\module\_cffi_backend\test\test_recompiler.py:840]', line 1> at line 4 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00\xcc\x1b\x00d\x04\x00t\x01\x0...0\x82\x01\x00\xcc\x1b\x00t\x08\x00|\t\x00j\t\x00\x83\x01\x00d\x13\x00k\x02\x00s\x07\x02t\x03\x00\x82\x01\x00d\x00\x00S' next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def handle_bytecode(self, co_code, next_instr, ec): try: > next_instr = self.dispatch_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:71: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_unpack_a...uild\pypy\module\_cffi_backend\test\test_recompiler.py:840]', line 1> at line 4 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00\xcc\x1b\x00d\x04\x00t\x01\x0...0\x82\x01\x00\xcc\x1b\x00t\x08\x00|\t\x00j\t\x00\x83\x01\x00d\x13\x00k\x02\x00s\x07\x02t\x03\x00\x82\x01\x00d\x00\x00S' next_instr = 18L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> @jit.unroll_safe def dispatch_bytecode(self, co_code, next_instr, ec): while True: self.last_instr = intmask(next_instr) if jit.we_are_jitted(): if self.debugdata: ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) else: # Only reload next_instr from last_instr when something that # can modify it actually ran (trace function or action # dispatcher). In the common case (no trace, positive ticker) # next_instr is unchanged and the round-trip is skipped. _d = self.debugdata if ec.space.reverse_debugging or ( _d is not None and _d.w_f_trace is not None) or ( not we_are_translated() and 'bytecode_only_trace' in ec.__dict__): ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) actionflag = ec.space.actionflag if actionflag.decrement_ticker(TICK_COUNTER_STEP) < 0: actionflag.action_dispatcher(ec, self) next_instr = r_uint(self.last_instr) opcode = ord(co_code[next_instr]) next_instr += 1 if opcode >= HAVE_ARGUMENT: lo = ord(co_code[next_instr]) hi = ord(co_code[next_instr+1]) next_instr += 2 oparg = (hi * 256) | lo else: oparg = 0 # note: the structure of the code here is such that it makes # (after translation) a big "if/elif" chain, which is then # turned into a switch(). while opcode == opcodedesc.EXTENDED_ARG.index: opcode = ord(co_code[next_instr]) if opcode < HAVE_ARGUMENT: raise BytecodeCorruption lo = ord(co_code[next_instr+1]) hi = ord(co_code[next_instr+2]) next_instr += 3 oparg = (oparg * 65536) | (hi * 256) | lo if opcode == opcodedesc.RETURN_VALUE.index: if not self.blockstack_non_empty(): self.frame_finished_execution = True # for generators raise Return w_returnvalue = self.popvalue() block = self.unrollstack(SReturnValue.kind) if block is None: self.pushvalue(w_returnvalue) raise Return else: unroller = SReturnValue(w_returnvalue) next_instr = block.handle(self, unroller) return next_instr # now inside a 'finally' block elif opcode == opcodedesc.END_FINALLY.index: unroller = self.end_finally() if isinstance(unroller, SuspendedUnroller): # go on unrolling the stack block = self.unrollstack(unroller.kind) if block is None: w_result = unroller.nomoreblocks() self.pushvalue(w_result) raise Return else: next_instr = block.handle(self, unroller) return next_instr elif opcode == opcodedesc.JUMP_ABSOLUTE.index: return self.jump_absolute(oparg, ec) elif opcode == opcodedesc.BREAK_LOOP.index: next_instr = self.BREAK_LOOP(oparg, next_instr) elif opcode == opcodedesc.CONTINUE_LOOP.index: return self.CONTINUE_LOOP(oparg, next_instr) elif opcode == opcodedesc.FOR_ITER.index: next_instr = self.FOR_ITER(oparg, next_instr) elif opcode == opcodedesc.JUMP_FORWARD.index: next_instr = self.JUMP_FORWARD(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_FALSE_OR_POP.index: next_instr = self.JUMP_IF_FALSE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_NOT_DEBUG.index: next_instr = self.JUMP_IF_NOT_DEBUG(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_TRUE_OR_POP.index: next_instr = self.JUMP_IF_TRUE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_FALSE.index: next_instr = self.POP_JUMP_IF_FALSE(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_TRUE.index: next_instr = self.POP_JUMP_IF_TRUE(oparg, next_instr) elif opcode == opcodedesc.BINARY_ADD.index: self.BINARY_ADD(oparg, next_instr) elif opcode == opcodedesc.BINARY_AND.index: self.BINARY_AND(oparg, next_instr) elif opcode == opcodedesc.BINARY_DIVIDE.index: self.BINARY_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_FLOOR_DIVIDE.index: self.BINARY_FLOOR_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_LSHIFT.index: self.BINARY_LSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_MODULO.index: self.BINARY_MODULO(oparg, next_instr) elif opcode == opcodedesc.BINARY_MULTIPLY.index: self.BINARY_MULTIPLY(oparg, next_instr) elif opcode == opcodedesc.BINARY_OR.index: self.BINARY_OR(oparg, next_instr) elif opcode == opcodedesc.BINARY_POWER.index: self.BINARY_POWER(oparg, next_instr) elif opcode == opcodedesc.BINARY_RSHIFT.index: self.BINARY_RSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBSCR.index: self.BINARY_SUBSCR(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBTRACT.index: self.BINARY_SUBTRACT(oparg, next_instr) elif opcode == opcodedesc.BINARY_TRUE_DIVIDE.index: self.BINARY_TRUE_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_XOR.index: self.BINARY_XOR(oparg, next_instr) elif opcode == opcodedesc.BUILD_CLASS.index: self.BUILD_CLASS(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST.index: self.BUILD_LIST(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST_FROM_ARG.index: self.BUILD_LIST_FROM_ARG(oparg, next_instr) elif opcode == opcodedesc.BUILD_MAP.index: self.BUILD_MAP(oparg, next_instr) elif opcode == opcodedesc.BUILD_SET.index: self.BUILD_SET(oparg, next_instr) elif opcode == opcodedesc.BUILD_SLICE.index: self.BUILD_SLICE(oparg, next_instr) elif opcode == opcodedesc.BUILD_TUPLE.index: self.BUILD_TUPLE(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION.index: self.CALL_FUNCTION(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_KW.index: self.CALL_FUNCTION_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR.index: self.CALL_FUNCTION_VAR(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR_KW.index: self.CALL_FUNCTION_VAR_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_METHOD.index: > self.CALL_METHOD(oparg, next_instr) interpreter\pyopcode.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ f = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_unpack_a...uild\pypy\module\_cffi_backend\test\test_recompiler.py:840]', line 1> at line 4 oparg = 3, ignored = (18L,), n_args = 3, n_kwargs = 0, w_self = None @jit.unroll_safe def CALL_METHOD(f, oparg, *ignored): # opargs contains the arg, and kwarg count, excluding the implicit 'self' n_args = oparg & 0xff n_kwargs = (oparg >> 8) & 0xff w_self = f.peekvalue_maybe_none(n_args + (2 * n_kwargs)) n = n_args + (w_self is not None) if not n_kwargs: w_callable = f.peekvalue(n_args + (2 * n_kwargs) + 1) w_result = f.space.call_valuestack( > w_callable, n, f, methodcall=w_self is not None, dropvalues=n_args + 2) objspace\std\callmethod.py:96: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_unpack_a...uild\pypy\module\_cffi_backend\test\test_recompiler.py:840]', line 1> at line 4 dropvalues = 5, methodcall = False def call_valuestack(self, w_func, nargs, frame, dropvalues, methodcall=False): # methodcall is only used for better error messages in argument.py from pypy.interpreter.function import Function, Method, is_builtin_code if frame.get_is_being_profiled() and is_builtin_code(w_func): # XXX: this code is copied&pasted :-( from the slow path below # call_valuestack(). args = frame.make_arguments(nargs) frame.dropvalues(dropvalues) return self.call_args_and_c_profile(frame, w_func, args) if not self.config.objspace.disable_call_speedhacks: # start of hack for performance if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: w_func = w_func.w_function # reuse callable stack place for w_inst frame.settopvalue(w_inst, nargs) nargs += 1 methodcall = True elif nargs > 0 and ( self.abstract_isinstance_w(frame.peekvalue(nargs-1), # :-( w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): return w_func.funccall_valuestack( > nargs, frame, methodcall=methodcall, dropvalues=dropvalues) interpreter\baseobjspace.py:1243: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_unpack_a...uild\pypy\module\_cffi_backend\test\test_recompiler.py:840]', line 1> at line 4 dropvalues = 5, methodcall = False def funccall_valuestack(self, nargs, frame, dropvalues, methodcall=False): # speed hack # methodcall is only for better error messages from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit # if (jit.we_are_jitted() and code is self.space._code_of_sys_exc_info and nargs == 0): frame.dropvalues(dropvalues) from pypy.module.sys.vm import exc_info_direct return exc_info_direct(self.space, frame) # fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: f_0 = frame.peekvalue(0) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, f_0) elif nargs == 2: f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, f_1, f_0) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) frame.dropvalues(dropvalues) return code.fastcall_3(self.space, self, f_2, f_1, f_0) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) f_3 = frame.peekvalue(3) frame.dropvalues(dropvalues) return code.fastcall_4(self.space, self, f_3, f_2, f_1, f_0) elif (nargs | Code.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) return self._flat_pycall(code, nargs, frame, dropvalues) elif fast_natural_arity & Code.FLATPYCALL: natural_arity = fast_natural_arity & 0xff if natural_arity > nargs >= natural_arity - len(self.defs_w): assert isinstance(code, PyCode) return self._flat_pycall_defaults(code, nargs, frame, natural_arity - nargs, dropvalues) elif fast_natural_arity == Code.PASSTHROUGHARGS1 and nargs >= 1: assert isinstance(code, gateway.BuiltinCodePassThroughArguments1) w_obj = frame.peekvalue(nargs-1) args = frame.make_arguments(nargs-1) frame.dropvalues(dropvalues) return code.funcrun_obj(self, w_obj, args) args = frame.make_arguments(nargs, methodcall=methodcall) frame.dropvalues(dropvalues) > return self.call_args(args) interpreter\function.py:190: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('void foo0(void); void foo1(int); void foo2(int, int)... foo1(int x) { }\n void foo2(int x, int y) { }\n ')]) def call_args(self, args): # delegate activation to code > w_res = self.getcode().funcrun(self, args) interpreter\function.py:68: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('void foo0(void); void foo1(int); void foo2(int, int)... foo1(int x) { }\n void foo2(int x, int y) { }\n ')]) def funcrun(self, func, args): > return BuiltinCode.funcrun_obj(self, func, None, args) interpreter\gateway.py:781: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('void foo0(void); void foo1(int); void foo2(int, int)... foo1(int x) { }\n void foo2(int x, int y) { }\n ')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: w_result = activation._run(space, scope_w) except DescrMismatch: if w_obj is not None: args = args.prepend(w_obj) return self._type_unwrap_mismatch(space, args) except Exception as e: > self.handle_exception(space, e) interpreter\gateway.py:795: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> space = StdObjSpace e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def handle_exception(self, space, e): try: if not we_are_translated(): raise raise e except OperationError: raise except Exception as e: # general fall-back from pypy.interpreter import error > raise error.get_converted_unexpected_exception(space, e) interpreter\gateway.py:819: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('void foo0(void); void foo1(int); void foo2(int, int)... foo1(int x) { }\n void foo2(int x, int y) { }\n ')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: > w_result = activation._run(space, scope_w) interpreter\gateway.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinActivation_UwS_ObjSpace_text_text_text_W_Root_W_Root_W_Root_int_W_Root object at 0x000002791c13af38> space = StdObjSpace scope_w = [W_BytesObject('void foo0(void); void foo1(int); void foo2(int, int);'), W_BytesObject('test_unpack_args'), W_BytesObj... void foo1(int x) { }\n void foo2(int x, int y) { }\n '), None, None, None, ...] def _run(self, space, scope_w): > return self.behavior(space, space.text_w(scope_w[0]), space.text_w(scope_w[1]), space.text_w(scope_w[2]), scope_w[3], scope_w[4], scope_w[5], space.gateway_int_w(scope_w[6]), scope_w[7]) <3152-codegen d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\rpython\tool\sourcetools.py:200>:3: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace cdef = 'void foo0(void); void foo1(int); void foo2(int, int);' module_name = '_CFFI_test_unpack_args' source = '\n void foo0(void) { }\n void foo1(int x) { }\n void foo2(int x, int y) { }\n ' w_includes = None, w_extra_source = None, w_min_version = None, packed = 0 w_extra_compile_args = None @unwrap_spec(cdef='text', module_name='text', source='text', packed=int) def prepare(space, cdef, module_name, source, w_includes=None, w_extra_source=None, w_min_version=None, packed=False, w_extra_compile_args=None): try: import cffi from cffi import FFI # <== the system one, which from cffi import recompiler # needs to be at least cffi 1.0.4 from cffi import ffiplatform except ImportError: pytest.skip("system cffi module not found or older than 1.0.0") if w_min_version is None: min_version = (1, 4, 0) else: min_version = tuple(space.unwrap(w_min_version)) if cffi.__version_info__ < min_version: pytest.skip("system cffi module needs to be at least %s, got %s" % ( min_version, cffi.__version_info__)) space.appexec([], """(): import _cffi_backend # force it to be initialized """) includes = [] if w_includes: includes += space.unpackiterable(w_includes) assert module_name.startswith('test_') module_name = '_CFFI_' + module_name rdir = udir.ensure('recompiler', dir=1) rdir.join('Python.h').write( '#include <stdio.h>\n' '#define PYPY_VERSION XX\n' '#define PyMODINIT_FUNC /*exported*/ void\n' ) path = module_name.replace('.', os.sep) if '.' in module_name: subrdir = rdir.join(module_name[:module_name.index('.')]) os.mkdir(str(subrdir)) else: subrdir = rdir c_file = str(rdir.join('%s.c' % path)) ffi = FFI() for include_ffi_object in includes: ffi.include(include_ffi_object._test_recompiler_source_ffi) ffi.cdef(cdef, packed=packed) ffi.set_source(module_name, source) ffi.emit_c_code(c_file) base_module_name = module_name.split('.')[-1] sources = [] if w_extra_source is not None: sources.append(space.str_w(w_extra_source)) kwargs = {} # GCC 14 promotes -Wincompatible-pointer-types from a warning to an error # by default, which breaks cffi's intentionally-mismatched field-check # probes (e.g. test_misdeclared_field_1). Keep it a warning so the module # compiles and cffi's runtime checks can run. extra = ['-Wno-error=incompatible-pointer-types'] if w_extra_compile_args is not None: extra = extra + space.unwrap(w_extra_compile_args) kwargs['extra_compile_args'] = extra ext = ffiplatform.get_extension(c_file, module_name, include_dirs=[str(rdir)], export_symbols=['_cffi_pypyinit_' + base_module_name], sources=sources, **kwargs) > ffiplatform.compile(str(rdir), ext) module\_cffi_backend\test\test_recompiler.py:86: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x000002792b805620> compiler_verbose = 0, debug = None def compile(tmpdir, ext, compiler_verbose=0, debug=None): """Compile a C extension module using distutils.""" saved_environ = os.environ.copy() try: > outputfilename = _build(tmpdir, ext, compiler_verbose, debug) d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x000002792b805620> compiler_verbose = 0, debug = 0 def _build(tmpdir, ext, compiler_verbose=0, debug=None): # XXX compact but horrible :-( from cffi._shimmed_dist_utils import Distribution, CompileError, LinkError, set_threshold, set_verbosity dist = Distribution({'ext_modules': [ext]}) dist.parse_config_files() options = dist.get_option_dict('build_ext') if debug is None: debug = sys.flags.debug options['debug'] = ('ffiplatform', debug) options['force'] = ('ffiplatform', True) options['build_lib'] = ('ffiplatform', tmpdir) options['build_temp'] = ('ffiplatform', tmpdir) # try: old_level = set_threshold(0) or 0 try: set_verbosity(compiler_verbose) dist.run_command('build_ext') cmd_obj = dist.get_command_obj('build_ext') [soname] = cmd_obj.get_outputs() finally: set_threshold(old_level) except (CompileError, LinkError) as e: > raise VerificationError('%s: %s' % (e.__class__.__name__, e)) E VerificationError: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2 d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:54: VerificationError ---------------------------- Captured stdout call ----------------------------- generating d:\systemtemp\pytest\usession-main-595\recompiler\_CFFI_test_unpack_args.c ---------------------------- Captured stderr call ----------------------------- cl : Command line error D8021 : invalid numeric argument '/Wno-error=incompatible-pointer-types' _________________ AppTestRecompiler.test_address_of_function __________________ self = <CallInfo when='call' exception: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2> func = <function <lambda> at 0x000002791bd6bf88>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ..\_pytest\runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ..\_pytest\runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_address_of_function'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_address_of_function'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ..\_pytest\vendored_packages\pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00000279153616a8> hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_address_of_function'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_address_of_function'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ..\_pytest\vendored_packages\pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_address_of_function'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_address_of_function'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ..\_pytest\vendored_packages\pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_address_of_function'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791fff3a38> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...f_function'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027929daf820> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027929daf820> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...f_function'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_address_of_function'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791fff39e8> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...f_function'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027929daf7e0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027929daf7e0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...f_function'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_address_of_function'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ..\_pytest\vendored_packages\pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_address_of_function'> def pytest_runtest_call(item): try: > item.runtest() ..\_pytest\runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_address_of_function'> def runtest(self): target = self.obj if self.config.option.runappdirect: return target() space = target.im_self.space filename = self._getdynfilename(target) func = app2interp_temp(target.im_func, filename=filename) w_instance = self.parent.w_instance > self.execute_appex(space, func, space, w_instance) tool\pytest\apptest.py:89: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_address_of_function'>, space = StdObjSpace target = <function test_address_of_function at 0x00000279205756a0> args = (StdObjSpace, <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>) def execute_appex(self, space, target, *args): self.space = space try: > target(*args) tool\pytest\apptest.py:30: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) w_func = <Function test_address_of_function> args = <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8> def appcaller(space, *args_w): if not isinstance(space, ObjSpace): raise TypeError("first argument must be a space instance.") # the last argument can be an Arguments w_func = self.wget(space, name) if not args_w: return space.call_function(w_func) else: args = args_w[-1] assert args is not None if not isinstance(args, Arguments): > return space.call_function(w_func, *args_w) interpreter\gateway.py:1227: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <Function test_address_of_function> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) nargs = 1, Function = <class 'pypy.interpreter.function.Function'> Method = <class 'pypy.interpreter.function.Method'> def call_function(self, w_func, *args_w): nargs = len(args_w) # used for pruning funccall versions if not self.config.objspace.disable_call_speedhacks and nargs < 5: # start of hack for performance from pypy.interpreter.function import Function, Method if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: if nargs < 4: func = w_func.w_function if isinstance(func, Function): return func.funccall(w_inst, *args_w) elif args_w and ( self.abstract_isinstance_w(args_w[0], w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): > return w_func.funccall(*args_w) interpreter\baseobjspace.py:1210: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <Function test_address_of_function> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) gateway = <module 'pypy.interpreter.gateway' from 'd:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\interpreter\\gateway.pyc'> PyCode = <class 'pypy.interpreter.pycode.PyCode'> code = <code object test_address_of_function, file '[d:\pypy_stuff\buildbot64\slave\o...n-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:869]', line 1> def funccall(self, *args_w): # speed hack from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit nargs = len(args_w) fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, args_w[0]) elif nargs == 2: assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, args_w[0], args_w[1]) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) return code.fastcall_3(self.space, self, args_w[0], args_w[1], args_w[2]) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) return code.fastcall_4(self.space, self, args_w[0], args_w[1], args_w[2], args_w[3]) elif (nargs | PyCode.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) if nargs < 5: new_frame = self.space.createframe(code, self.w_func_globals, self) for i in funccallunrolling: if i < nargs: new_frame.locals_cells_stack_w[i] = args_w[i] > return new_frame.run() interpreter\function.py:118: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_address_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:869]', line 1> at line 5 def run(self): """Start this frame's execution.""" if self.getcode().co_flags & pycode.CO_GENERATOR: from pypy.interpreter.generator import GeneratorIterator return GeneratorIterator(self) else: > return self.execute_frame() interpreter\pyframe.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_address_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:869]', line 1> at line 5 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, executioncontext) except OperationError: raise except Exception as e: # general fall-back > raise self._convert_unexpected_exception(e) interpreter\pyframe.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_address_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:869]', line 1> at line 5 e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def _convert_unexpected_exception(self, e): from pypy.interpreter import error > operr = error.get_converted_unexpected_exception(self.space, e) interpreter\pyframe.py:943: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_address_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:869]', line 1> at line 5 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, > executioncontext) interpreter\pyframe.py:286: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_address_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:869]', line 1> at line 5 pycode = <code object test_address_of_function, file '[d:\pypy_stuff\buildbot64\slave\o...n-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:869]', line 1> next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def dispatch(self, pycode, next_instr, ec): # For the sequel, force 'next_instr' to be unsigned for performance next_instr = r_uint(next_instr) co_code = pycode.co_code try: while True: > next_instr = self.handle_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:64: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_address_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:869]', line 1> at line 5 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00\xcc\x1b\x00|\x02\x00\xc9\x01...9\x05\x00|\x03\x00\xca\x01\x00|\x01\x00\xc9\x05\x00d\x07\x00\xca\x01\x00k\x02\x00s)\x01t\x02\x00\x82\x01\x00d\x00\x00S' next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def handle_bytecode(self, co_code, next_instr, ec): try: > next_instr = self.dispatch_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:71: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_address_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:869]', line 1> at line 5 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00\xcc\x1b\x00|\x02\x00\xc9\x01...9\x05\x00|\x03\x00\xca\x01\x00|\x01\x00\xc9\x05\x00d\x07\x00\xca\x01\x00k\x02\x00s)\x01t\x02\x00\x82\x01\x00d\x00\x00S' next_instr = 18L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> @jit.unroll_safe def dispatch_bytecode(self, co_code, next_instr, ec): while True: self.last_instr = intmask(next_instr) if jit.we_are_jitted(): if self.debugdata: ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) else: # Only reload next_instr from last_instr when something that # can modify it actually ran (trace function or action # dispatcher). In the common case (no trace, positive ticker) # next_instr is unchanged and the round-trip is skipped. _d = self.debugdata if ec.space.reverse_debugging or ( _d is not None and _d.w_f_trace is not None) or ( not we_are_translated() and 'bytecode_only_trace' in ec.__dict__): ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) actionflag = ec.space.actionflag if actionflag.decrement_ticker(TICK_COUNTER_STEP) < 0: actionflag.action_dispatcher(ec, self) next_instr = r_uint(self.last_instr) opcode = ord(co_code[next_instr]) next_instr += 1 if opcode >= HAVE_ARGUMENT: lo = ord(co_code[next_instr]) hi = ord(co_code[next_instr+1]) next_instr += 2 oparg = (hi * 256) | lo else: oparg = 0 # note: the structure of the code here is such that it makes # (after translation) a big "if/elif" chain, which is then # turned into a switch(). while opcode == opcodedesc.EXTENDED_ARG.index: opcode = ord(co_code[next_instr]) if opcode < HAVE_ARGUMENT: raise BytecodeCorruption lo = ord(co_code[next_instr+1]) hi = ord(co_code[next_instr+2]) next_instr += 3 oparg = (oparg * 65536) | (hi * 256) | lo if opcode == opcodedesc.RETURN_VALUE.index: if not self.blockstack_non_empty(): self.frame_finished_execution = True # for generators raise Return w_returnvalue = self.popvalue() block = self.unrollstack(SReturnValue.kind) if block is None: self.pushvalue(w_returnvalue) raise Return else: unroller = SReturnValue(w_returnvalue) next_instr = block.handle(self, unroller) return next_instr # now inside a 'finally' block elif opcode == opcodedesc.END_FINALLY.index: unroller = self.end_finally() if isinstance(unroller, SuspendedUnroller): # go on unrolling the stack block = self.unrollstack(unroller.kind) if block is None: w_result = unroller.nomoreblocks() self.pushvalue(w_result) raise Return else: next_instr = block.handle(self, unroller) return next_instr elif opcode == opcodedesc.JUMP_ABSOLUTE.index: return self.jump_absolute(oparg, ec) elif opcode == opcodedesc.BREAK_LOOP.index: next_instr = self.BREAK_LOOP(oparg, next_instr) elif opcode == opcodedesc.CONTINUE_LOOP.index: return self.CONTINUE_LOOP(oparg, next_instr) elif opcode == opcodedesc.FOR_ITER.index: next_instr = self.FOR_ITER(oparg, next_instr) elif opcode == opcodedesc.JUMP_FORWARD.index: next_instr = self.JUMP_FORWARD(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_FALSE_OR_POP.index: next_instr = self.JUMP_IF_FALSE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_NOT_DEBUG.index: next_instr = self.JUMP_IF_NOT_DEBUG(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_TRUE_OR_POP.index: next_instr = self.JUMP_IF_TRUE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_FALSE.index: next_instr = self.POP_JUMP_IF_FALSE(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_TRUE.index: next_instr = self.POP_JUMP_IF_TRUE(oparg, next_instr) elif opcode == opcodedesc.BINARY_ADD.index: self.BINARY_ADD(oparg, next_instr) elif opcode == opcodedesc.BINARY_AND.index: self.BINARY_AND(oparg, next_instr) elif opcode == opcodedesc.BINARY_DIVIDE.index: self.BINARY_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_FLOOR_DIVIDE.index: self.BINARY_FLOOR_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_LSHIFT.index: self.BINARY_LSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_MODULO.index: self.BINARY_MODULO(oparg, next_instr) elif opcode == opcodedesc.BINARY_MULTIPLY.index: self.BINARY_MULTIPLY(oparg, next_instr) elif opcode == opcodedesc.BINARY_OR.index: self.BINARY_OR(oparg, next_instr) elif opcode == opcodedesc.BINARY_POWER.index: self.BINARY_POWER(oparg, next_instr) elif opcode == opcodedesc.BINARY_RSHIFT.index: self.BINARY_RSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBSCR.index: self.BINARY_SUBSCR(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBTRACT.index: self.BINARY_SUBTRACT(oparg, next_instr) elif opcode == opcodedesc.BINARY_TRUE_DIVIDE.index: self.BINARY_TRUE_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_XOR.index: self.BINARY_XOR(oparg, next_instr) elif opcode == opcodedesc.BUILD_CLASS.index: self.BUILD_CLASS(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST.index: self.BUILD_LIST(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST_FROM_ARG.index: self.BUILD_LIST_FROM_ARG(oparg, next_instr) elif opcode == opcodedesc.BUILD_MAP.index: self.BUILD_MAP(oparg, next_instr) elif opcode == opcodedesc.BUILD_SET.index: self.BUILD_SET(oparg, next_instr) elif opcode == opcodedesc.BUILD_SLICE.index: self.BUILD_SLICE(oparg, next_instr) elif opcode == opcodedesc.BUILD_TUPLE.index: self.BUILD_TUPLE(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION.index: self.CALL_FUNCTION(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_KW.index: self.CALL_FUNCTION_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR.index: self.CALL_FUNCTION_VAR(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR_KW.index: self.CALL_FUNCTION_VAR_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_METHOD.index: > self.CALL_METHOD(oparg, next_instr) interpreter\pyopcode.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ f = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_address_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:869]', line 1> at line 5 oparg = 3, ignored = (18L,), n_args = 3, n_kwargs = 0, w_self = None @jit.unroll_safe def CALL_METHOD(f, oparg, *ignored): # opargs contains the arg, and kwarg count, excluding the implicit 'self' n_args = oparg & 0xff n_kwargs = (oparg >> 8) & 0xff w_self = f.peekvalue_maybe_none(n_args + (2 * n_kwargs)) n = n_args + (w_self is not None) if not n_kwargs: w_callable = f.peekvalue(n_args + (2 * n_kwargs) + 1) w_result = f.space.call_valuestack( > w_callable, n, f, methodcall=w_self is not None, dropvalues=n_args + 2) objspace\std\callmethod.py:96: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_address_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:869]', line 1> at line 5 dropvalues = 5, methodcall = False def call_valuestack(self, w_func, nargs, frame, dropvalues, methodcall=False): # methodcall is only used for better error messages in argument.py from pypy.interpreter.function import Function, Method, is_builtin_code if frame.get_is_being_profiled() and is_builtin_code(w_func): # XXX: this code is copied&pasted :-( from the slow path below # call_valuestack(). args = frame.make_arguments(nargs) frame.dropvalues(dropvalues) return self.call_args_and_c_profile(frame, w_func, args) if not self.config.objspace.disable_call_speedhacks: # start of hack for performance if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: w_func = w_func.w_function # reuse callable stack place for w_inst frame.settopvalue(w_inst, nargs) nargs += 1 methodcall = True elif nargs > 0 and ( self.abstract_isinstance_w(frame.peekvalue(nargs-1), # :-( w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): return w_func.funccall_valuestack( > nargs, frame, methodcall=methodcall, dropvalues=dropvalues) interpreter\baseobjspace.py:1243: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_address_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:869]', line 1> at line 5 dropvalues = 5, methodcall = False def funccall_valuestack(self, nargs, frame, dropvalues, methodcall=False): # speed hack # methodcall is only for better error messages from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit # if (jit.we_are_jitted() and code is self.space._code_of_sys_exc_info and nargs == 0): frame.dropvalues(dropvalues) from pypy.module.sys.vm import exc_info_direct return exc_info_direct(self.space, frame) # fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: f_0 = frame.peekvalue(0) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, f_0) elif nargs == 2: f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, f_1, f_0) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) frame.dropvalues(dropvalues) return code.fastcall_3(self.space, self, f_2, f_1, f_0) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) f_3 = frame.peekvalue(3) frame.dropvalues(dropvalues) return code.fastcall_4(self.space, self, f_3, f_2, f_1, f_0) elif (nargs | Code.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) return self._flat_pycall(code, nargs, frame, dropvalues) elif fast_natural_arity & Code.FLATPYCALL: natural_arity = fast_natural_arity & 0xff if natural_arity > nargs >= natural_arity - len(self.defs_w): assert isinstance(code, PyCode) return self._flat_pycall_defaults(code, nargs, frame, natural_arity - nargs, dropvalues) elif fast_natural_arity == Code.PASSTHROUGHARGS1 and nargs >= 1: assert isinstance(code, gateway.BuiltinCodePassThroughArguments1) w_obj = frame.peekvalue(nargs-1) args = frame.make_arguments(nargs-1) frame.dropvalues(dropvalues) return code.funcrun_obj(self, w_obj, args) args = frame.make_arguments(nargs, methodcall=methodcall) frame.dropvalues(dropvalues) > return self.call_args(args) interpreter\function.py:190: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('long myfunc(long x);'), W_BytesObject('test_addressof_function'), W_BytesObject('char myfunc(char x) { return (char)(x + 42); }')]) def call_args(self, args): # delegate activation to code > w_res = self.getcode().funcrun(self, args) interpreter\function.py:68: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('long myfunc(long x);'), W_BytesObject('test_addressof_function'), W_BytesObject('char myfunc(char x) { return (char)(x + 42); }')]) def funcrun(self, func, args): > return BuiltinCode.funcrun_obj(self, func, None, args) interpreter\gateway.py:781: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('long myfunc(long x);'), W_BytesObject('test_addressof_function'), W_BytesObject('char myfunc(char x) { return (char)(x + 42); }')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: w_result = activation._run(space, scope_w) except DescrMismatch: if w_obj is not None: args = args.prepend(w_obj) return self._type_unwrap_mismatch(space, args) except Exception as e: > self.handle_exception(space, e) interpreter\gateway.py:795: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> space = StdObjSpace e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def handle_exception(self, space, e): try: if not we_are_translated(): raise raise e except OperationError: raise except Exception as e: # general fall-back from pypy.interpreter import error > raise error.get_converted_unexpected_exception(space, e) interpreter\gateway.py:819: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('long myfunc(long x);'), W_BytesObject('test_addressof_function'), W_BytesObject('char myfunc(char x) { return (char)(x + 42); }')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: > w_result = activation._run(space, scope_w) interpreter\gateway.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinActivation_UwS_ObjSpace_text_text_text_W_Root_W_Root_W_Root_int_W_Root object at 0x000002791c13af38> space = StdObjSpace scope_w = [W_BytesObject('long myfunc(long x);'), W_BytesObject('test_addressof_function'), W_BytesObject('char myfunc(char x) { return (char)(x + 42); }'), None, None, None, ...] def _run(self, space, scope_w): > return self.behavior(space, space.text_w(scope_w[0]), space.text_w(scope_w[1]), space.text_w(scope_w[2]), scope_w[3], scope_w[4], scope_w[5], space.gateway_int_w(scope_w[6]), scope_w[7]) <3152-codegen d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\rpython\tool\sourcetools.py:200>:3: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace, cdef = 'long myfunc(long x);' module_name = '_CFFI_test_addressof_function' source = 'char myfunc(char x) { return (char)(x + 42); }', w_includes = None w_extra_source = None, w_min_version = None, packed = 0 w_extra_compile_args = None @unwrap_spec(cdef='text', module_name='text', source='text', packed=int) def prepare(space, cdef, module_name, source, w_includes=None, w_extra_source=None, w_min_version=None, packed=False, w_extra_compile_args=None): try: import cffi from cffi import FFI # <== the system one, which from cffi import recompiler # needs to be at least cffi 1.0.4 from cffi import ffiplatform except ImportError: pytest.skip("system cffi module not found or older than 1.0.0") if w_min_version is None: min_version = (1, 4, 0) else: min_version = tuple(space.unwrap(w_min_version)) if cffi.__version_info__ < min_version: pytest.skip("system cffi module needs to be at least %s, got %s" % ( min_version, cffi.__version_info__)) space.appexec([], """(): import _cffi_backend # force it to be initialized """) includes = [] if w_includes: includes += space.unpackiterable(w_includes) assert module_name.startswith('test_') module_name = '_CFFI_' + module_name rdir = udir.ensure('recompiler', dir=1) rdir.join('Python.h').write( '#include <stdio.h>\n' '#define PYPY_VERSION XX\n' '#define PyMODINIT_FUNC /*exported*/ void\n' ) path = module_name.replace('.', os.sep) if '.' in module_name: subrdir = rdir.join(module_name[:module_name.index('.')]) os.mkdir(str(subrdir)) else: subrdir = rdir c_file = str(rdir.join('%s.c' % path)) ffi = FFI() for include_ffi_object in includes: ffi.include(include_ffi_object._test_recompiler_source_ffi) ffi.cdef(cdef, packed=packed) ffi.set_source(module_name, source) ffi.emit_c_code(c_file) base_module_name = module_name.split('.')[-1] sources = [] if w_extra_source is not None: sources.append(space.str_w(w_extra_source)) kwargs = {} # GCC 14 promotes -Wincompatible-pointer-types from a warning to an error # by default, which breaks cffi's intentionally-mismatched field-check # probes (e.g. test_misdeclared_field_1). Keep it a warning so the module # compiles and cffi's runtime checks can run. extra = ['-Wno-error=incompatible-pointer-types'] if w_extra_compile_args is not None: extra = extra + space.unwrap(w_extra_compile_args) kwargs['extra_compile_args'] = extra ext = ffiplatform.get_extension(c_file, module_name, include_dirs=[str(rdir)], export_symbols=['_cffi_pypyinit_' + base_module_name], sources=sources, **kwargs) > ffiplatform.compile(str(rdir), ext) module\_cffi_backend\test\test_recompiler.py:86: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x0000027925ee6360> compiler_verbose = 0, debug = None def compile(tmpdir, ext, compiler_verbose=0, debug=None): """Compile a C extension module using distutils.""" saved_environ = os.environ.copy() try: > outputfilename = _build(tmpdir, ext, compiler_verbose, debug) d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x0000027925ee6360> compiler_verbose = 0, debug = 0 def _build(tmpdir, ext, compiler_verbose=0, debug=None): # XXX compact but horrible :-( from cffi._shimmed_dist_utils import Distribution, CompileError, LinkError, set_threshold, set_verbosity dist = Distribution({'ext_modules': [ext]}) dist.parse_config_files() options = dist.get_option_dict('build_ext') if debug is None: debug = sys.flags.debug options['debug'] = ('ffiplatform', debug) options['force'] = ('ffiplatform', True) options['build_lib'] = ('ffiplatform', tmpdir) options['build_temp'] = ('ffiplatform', tmpdir) # try: old_level = set_threshold(0) or 0 try: set_verbosity(compiler_verbose) dist.run_command('build_ext') cmd_obj = dist.get_command_obj('build_ext') [soname] = cmd_obj.get_outputs() finally: set_threshold(old_level) except (CompileError, LinkError) as e: > raise VerificationError('%s: %s' % (e.__class__.__name__, e)) E VerificationError: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2 d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:54: VerificationError ---------------------------- Captured stdout call ----------------------------- generating d:\systemtemp\pytest\usession-main-595\recompiler\_CFFI_test_addressof_function.c ---------------------------- Captured stderr call ----------------------------- cl : Command line error D8021 : invalid numeric argument '/Wno-error=incompatible-pointer-types' ___________ AppTestRecompiler.test_address_of_function_with_struct ____________ self = <CallInfo when='call' exception: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2> func = <function <lambda> at 0x00000279250283e0>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ..\_pytest\runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ..\_pytest\runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_address_of_function_with_struct...ll__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_address_of_function_with_struct'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ..\_pytest\vendored_packages\pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00000279153616a8> hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_address_of_function_with_struct...ll__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_address_of_function_with_struct'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ..\_pytest\vendored_packages\pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_address_of_function_with_struct...ll__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_address_of_function_with_struct'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ..\_pytest\vendored_packages\pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_address_of_function_with_struct'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791a732e58> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...ith_struct'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792b74f060> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792b74f060> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...ith_struct'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_address_of_function_with_struct'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791a732de0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...ith_struct'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792b74f020> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792b74f020> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...ith_struct'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_address_of_function_with_struct'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ..\_pytest\vendored_packages\pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_address_of_function_with_struct'> def pytest_runtest_call(item): try: > item.runtest() ..\_pytest\runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_address_of_function_with_struct'> def runtest(self): target = self.obj if self.config.option.runappdirect: return target() space = target.im_self.space filename = self._getdynfilename(target) func = app2interp_temp(target.im_func, filename=filename) w_instance = self.parent.w_instance > self.execute_appex(space, func, space, w_instance) tool\pytest\apptest.py:89: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_address_of_function_with_struct'> space = StdObjSpace target = <function test_address_of_function_with_struct at 0x0000027925028458> args = (StdObjSpace, <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>) def execute_appex(self, space, target, *args): self.space = space try: > target(*args) tool\pytest\apptest.py:30: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) w_func = <Function test_address_of_function_with_struct> args = <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8> def appcaller(space, *args_w): if not isinstance(space, ObjSpace): raise TypeError("first argument must be a space instance.") # the last argument can be an Arguments w_func = self.wget(space, name) if not args_w: return space.call_function(w_func) else: args = args_w[-1] assert args is not None if not isinstance(args, Arguments): > return space.call_function(w_func, *args_w) interpreter\gateway.py:1227: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <Function test_address_of_function_with_struct> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) nargs = 1, Function = <class 'pypy.interpreter.function.Function'> Method = <class 'pypy.interpreter.function.Method'> def call_function(self, w_func, *args_w): nargs = len(args_w) # used for pruning funccall versions if not self.config.objspace.disable_call_speedhacks and nargs < 5: # start of hack for performance from pypy.interpreter.function import Function, Method if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: if nargs < 4: func = w_func.w_function if isinstance(func, Function): return func.funccall(w_inst, *args_w) elif args_w and ( self.abstract_isinstance_w(args_w[0], w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): > return w_func.funccall(*args_w) interpreter\baseobjspace.py:1210: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <Function test_address_of_function_with_struct> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) gateway = <module 'pypy.interpreter.gateway' from 'd:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\interpreter\\gateway.pyc'> PyCode = <class 'pypy.interpreter.pycode.PyCode'> code = <code object test_address_of_function_with_struct, file '[d:\pypy_stuff\buildb...n-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:884]', line 1> def funccall(self, *args_w): # speed hack from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit nargs = len(args_w) fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, args_w[0]) elif nargs == 2: assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, args_w[0], args_w[1]) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) return code.fastcall_3(self.space, self, args_w[0], args_w[1], args_w[2]) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) return code.fastcall_4(self.space, self, args_w[0], args_w[1], args_w[2], args_w[3]) elif (nargs | PyCode.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) if nargs < 5: new_frame = self.space.createframe(code, self.w_func_globals, self) for i in funccallunrolling: if i < nargs: new_frame.locals_cells_stack_w[i] = args_w[i] > return new_frame.run() interpreter\function.py:118: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_address_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:884]', line 1> at line 4 def run(self): """Start this frame's execution.""" if self.getcode().co_flags & pycode.CO_GENERATOR: from pypy.interpreter.generator import GeneratorIterator return GeneratorIterator(self) else: > return self.execute_frame() interpreter\pyframe.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_address_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:884]', line 1> at line 4 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, executioncontext) except OperationError: raise except Exception as e: # general fall-back > raise self._convert_unexpected_exception(e) interpreter\pyframe.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_address_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:884]', line 1> at line 4 e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def _convert_unexpected_exception(self, e): from pypy.interpreter import error > operr = error.get_converted_unexpected_exception(self.space, e) interpreter\pyframe.py:943: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_address_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:884]', line 1> at line 4 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, > executioncontext) interpreter\pyframe.py:286: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_address_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:884]', line 1> at line 4 pycode = <code object test_address_of_function_with_struct, file '[d:\pypy_stuff\buildb...n-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:884]', line 1> next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def dispatch(self, pycode, next_instr, ec): # For the sequel, force 'next_instr' to be unsigned for performance next_instr = r_uint(next_instr) co_code = pycode.co_code try: while True: > next_instr = self.handle_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:64: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_address_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:884]', line 1> at line 4 co_code = "|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00|\x01\x00\xc9\x01\x00d\x04\x0...\x06\x00|\x04\x00\xca\x01\x00|\x01\x00\xc9\x06\x00d\x08\x00\xca\x01\x00k\x02\x00s\t\x01t\x03\x00\x82\x01\x00d\x00\x00S" next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def handle_bytecode(self, co_code, next_instr, ec): try: > next_instr = self.dispatch_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:71: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_address_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:884]', line 1> at line 4 co_code = "|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00|\x01\x00\xc9\x01\x00d\x04\x0...\x06\x00|\x04\x00\xca\x01\x00|\x01\x00\xc9\x06\x00d\x08\x00\xca\x01\x00k\x02\x00s\t\x01t\x03\x00\x82\x01\x00d\x00\x00S" next_instr = 18L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> @jit.unroll_safe def dispatch_bytecode(self, co_code, next_instr, ec): while True: self.last_instr = intmask(next_instr) if jit.we_are_jitted(): if self.debugdata: ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) else: # Only reload next_instr from last_instr when something that # can modify it actually ran (trace function or action # dispatcher). In the common case (no trace, positive ticker) # next_instr is unchanged and the round-trip is skipped. _d = self.debugdata if ec.space.reverse_debugging or ( _d is not None and _d.w_f_trace is not None) or ( not we_are_translated() and 'bytecode_only_trace' in ec.__dict__): ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) actionflag = ec.space.actionflag if actionflag.decrement_ticker(TICK_COUNTER_STEP) < 0: actionflag.action_dispatcher(ec, self) next_instr = r_uint(self.last_instr) opcode = ord(co_code[next_instr]) next_instr += 1 if opcode >= HAVE_ARGUMENT: lo = ord(co_code[next_instr]) hi = ord(co_code[next_instr+1]) next_instr += 2 oparg = (hi * 256) | lo else: oparg = 0 # note: the structure of the code here is such that it makes # (after translation) a big "if/elif" chain, which is then # turned into a switch(). while opcode == opcodedesc.EXTENDED_ARG.index: opcode = ord(co_code[next_instr]) if opcode < HAVE_ARGUMENT: raise BytecodeCorruption lo = ord(co_code[next_instr+1]) hi = ord(co_code[next_instr+2]) next_instr += 3 oparg = (oparg * 65536) | (hi * 256) | lo if opcode == opcodedesc.RETURN_VALUE.index: if not self.blockstack_non_empty(): self.frame_finished_execution = True # for generators raise Return w_returnvalue = self.popvalue() block = self.unrollstack(SReturnValue.kind) if block is None: self.pushvalue(w_returnvalue) raise Return else: unroller = SReturnValue(w_returnvalue) next_instr = block.handle(self, unroller) return next_instr # now inside a 'finally' block elif opcode == opcodedesc.END_FINALLY.index: unroller = self.end_finally() if isinstance(unroller, SuspendedUnroller): # go on unrolling the stack block = self.unrollstack(unroller.kind) if block is None: w_result = unroller.nomoreblocks() self.pushvalue(w_result) raise Return else: next_instr = block.handle(self, unroller) return next_instr elif opcode == opcodedesc.JUMP_ABSOLUTE.index: return self.jump_absolute(oparg, ec) elif opcode == opcodedesc.BREAK_LOOP.index: next_instr = self.BREAK_LOOP(oparg, next_instr) elif opcode == opcodedesc.CONTINUE_LOOP.index: return self.CONTINUE_LOOP(oparg, next_instr) elif opcode == opcodedesc.FOR_ITER.index: next_instr = self.FOR_ITER(oparg, next_instr) elif opcode == opcodedesc.JUMP_FORWARD.index: next_instr = self.JUMP_FORWARD(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_FALSE_OR_POP.index: next_instr = self.JUMP_IF_FALSE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_NOT_DEBUG.index: next_instr = self.JUMP_IF_NOT_DEBUG(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_TRUE_OR_POP.index: next_instr = self.JUMP_IF_TRUE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_FALSE.index: next_instr = self.POP_JUMP_IF_FALSE(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_TRUE.index: next_instr = self.POP_JUMP_IF_TRUE(oparg, next_instr) elif opcode == opcodedesc.BINARY_ADD.index: self.BINARY_ADD(oparg, next_instr) elif opcode == opcodedesc.BINARY_AND.index: self.BINARY_AND(oparg, next_instr) elif opcode == opcodedesc.BINARY_DIVIDE.index: self.BINARY_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_FLOOR_DIVIDE.index: self.BINARY_FLOOR_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_LSHIFT.index: self.BINARY_LSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_MODULO.index: self.BINARY_MODULO(oparg, next_instr) elif opcode == opcodedesc.BINARY_MULTIPLY.index: self.BINARY_MULTIPLY(oparg, next_instr) elif opcode == opcodedesc.BINARY_OR.index: self.BINARY_OR(oparg, next_instr) elif opcode == opcodedesc.BINARY_POWER.index: self.BINARY_POWER(oparg, next_instr) elif opcode == opcodedesc.BINARY_RSHIFT.index: self.BINARY_RSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBSCR.index: self.BINARY_SUBSCR(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBTRACT.index: self.BINARY_SUBTRACT(oparg, next_instr) elif opcode == opcodedesc.BINARY_TRUE_DIVIDE.index: self.BINARY_TRUE_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_XOR.index: self.BINARY_XOR(oparg, next_instr) elif opcode == opcodedesc.BUILD_CLASS.index: self.BUILD_CLASS(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST.index: self.BUILD_LIST(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST_FROM_ARG.index: self.BUILD_LIST_FROM_ARG(oparg, next_instr) elif opcode == opcodedesc.BUILD_MAP.index: self.BUILD_MAP(oparg, next_instr) elif opcode == opcodedesc.BUILD_SET.index: self.BUILD_SET(oparg, next_instr) elif opcode == opcodedesc.BUILD_SLICE.index: self.BUILD_SLICE(oparg, next_instr) elif opcode == opcodedesc.BUILD_TUPLE.index: self.BUILD_TUPLE(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION.index: self.CALL_FUNCTION(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_KW.index: self.CALL_FUNCTION_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR.index: self.CALL_FUNCTION_VAR(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR_KW.index: self.CALL_FUNCTION_VAR_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_METHOD.index: > self.CALL_METHOD(oparg, next_instr) interpreter\pyopcode.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ f = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_address_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:884]', line 1> at line 4 oparg = 3, ignored = (18L,), n_args = 3, n_kwargs = 0, w_self = None @jit.unroll_safe def CALL_METHOD(f, oparg, *ignored): # opargs contains the arg, and kwarg count, excluding the implicit 'self' n_args = oparg & 0xff n_kwargs = (oparg >> 8) & 0xff w_self = f.peekvalue_maybe_none(n_args + (2 * n_kwargs)) n = n_args + (w_self is not None) if not n_kwargs: w_callable = f.peekvalue(n_args + (2 * n_kwargs) + 1) w_result = f.space.call_valuestack( > w_callable, n, f, methodcall=w_self is not None, dropvalues=n_args + 2) objspace\std\callmethod.py:96: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_address_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:884]', line 1> at line 4 dropvalues = 5, methodcall = False def call_valuestack(self, w_func, nargs, frame, dropvalues, methodcall=False): # methodcall is only used for better error messages in argument.py from pypy.interpreter.function import Function, Method, is_builtin_code if frame.get_is_being_profiled() and is_builtin_code(w_func): # XXX: this code is copied&pasted :-( from the slow path below # call_valuestack(). args = frame.make_arguments(nargs) frame.dropvalues(dropvalues) return self.call_args_and_c_profile(frame, w_func, args) if not self.config.objspace.disable_call_speedhacks: # start of hack for performance if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: w_func = w_func.w_function # reuse callable stack place for w_inst frame.settopvalue(w_inst, nargs) nargs += 1 methodcall = True elif nargs > 0 and ( self.abstract_isinstance_w(frame.peekvalue(nargs-1), # :-( w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): return w_func.funccall_valuestack( > nargs, frame, methodcall=methodcall, dropvalues=dropvalues) interpreter\baseobjspace.py:1243: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_address_...uild\pypy\module\_cffi_backend\test\test_recompiler.py:884]', line 1> at line 4 dropvalues = 5, methodcall = False def funccall_valuestack(self, nargs, frame, dropvalues, methodcall=False): # speed hack # methodcall is only for better error messages from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit # if (jit.we_are_jitted() and code is self.space._code_of_sys_exc_info and nargs == 0): frame.dropvalues(dropvalues) from pypy.module.sys.vm import exc_info_direct return exc_info_direct(self.space, frame) # fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: f_0 = frame.peekvalue(0) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, f_0) elif nargs == 2: f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, f_1, f_0) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) frame.dropvalues(dropvalues) return code.fastcall_3(self.space, self, f_2, f_1, f_0) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) f_3 = frame.peekvalue(3) frame.dropvalues(dropvalues) return code.fastcall_4(self.space, self, f_3, f_2, f_1, f_0) elif (nargs | Code.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) return self._flat_pycall(code, nargs, frame, dropvalues) elif fast_natural_arity & Code.FLATPYCALL: natural_arity = fast_natural_arity & 0xff if natural_arity > nargs >= natural_arity - len(self.defs_w): assert isinstance(code, PyCode) return self._flat_pycall_defaults(code, nargs, frame, natural_arity - nargs, dropvalues) elif fast_natural_arity == Code.PASSTHROUGHARGS1 and nargs >= 1: assert isinstance(code, gateway.BuiltinCodePassThroughArguments1) w_obj = frame.peekvalue(nargs-1) args = frame.make_arguments(nargs-1) frame.dropvalues(dropvalues) return code.funcrun_obj(self, w_obj, args) args = frame.make_arguments(nargs, methodcall=methodcall) frame.dropvalues(dropvalues) > return self.call_args(args) interpreter\function.py:190: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('struct foo_s { int x; }; long myfunc(struct foo_s);'...r myfunc(struct foo_s input) { return (char)(input.x + 42); }\n ')]) def call_args(self, args): # delegate activation to code > w_res = self.getcode().funcrun(self, args) interpreter\function.py:68: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('struct foo_s { int x; }; long myfunc(struct foo_s);'...r myfunc(struct foo_s input) { return (char)(input.x + 42); }\n ')]) def funcrun(self, func, args): > return BuiltinCode.funcrun_obj(self, func, None, args) interpreter\gateway.py:781: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('struct foo_s { int x; }; long myfunc(struct foo_s);'...r myfunc(struct foo_s input) { return (char)(input.x + 42); }\n ')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: w_result = activation._run(space, scope_w) except DescrMismatch: if w_obj is not None: args = args.prepend(w_obj) return self._type_unwrap_mismatch(space, args) except Exception as e: > self.handle_exception(space, e) interpreter\gateway.py:795: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> space = StdObjSpace e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def handle_exception(self, space, e): try: if not we_are_translated(): raise raise e except OperationError: raise except Exception as e: # general fall-back from pypy.interpreter import error > raise error.get_converted_unexpected_exception(space, e) interpreter\gateway.py:819: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('struct foo_s { int x; }; long myfunc(struct foo_s);'...r myfunc(struct foo_s input) { return (char)(input.x + 42); }\n ')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: > w_result = activation._run(space, scope_w) interpreter\gateway.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinActivation_UwS_ObjSpace_text_text_text_W_Root_W_Root_W_Root_int_W_Root object at 0x000002791c13af38> space = StdObjSpace scope_w = [W_BytesObject('struct foo_s { int x; }; long myfunc(struct foo_s);'), W_BytesObject('test_addressof_function_with_str... char myfunc(struct foo_s input) { return (char)(input.x + 42); }\n '), None, None, None, ...] def _run(self, space, scope_w): > return self.behavior(space, space.text_w(scope_w[0]), space.text_w(scope_w[1]), space.text_w(scope_w[2]), scope_w[3], scope_w[4], scope_w[5], space.gateway_int_w(scope_w[6]), scope_w[7]) <3152-codegen d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\rpython\tool\sourcetools.py:200>:3: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace cdef = 'struct foo_s { int x; }; long myfunc(struct foo_s);' module_name = '_CFFI_test_addressof_function_with_struct' source = '\n struct foo_s { int x; };\n char myfunc(struct foo_s input) { return (char)(input.x + 42); }\n ' w_includes = None, w_extra_source = None, w_min_version = None, packed = 0 w_extra_compile_args = None @unwrap_spec(cdef='text', module_name='text', source='text', packed=int) def prepare(space, cdef, module_name, source, w_includes=None, w_extra_source=None, w_min_version=None, packed=False, w_extra_compile_args=None): try: import cffi from cffi import FFI # <== the system one, which from cffi import recompiler # needs to be at least cffi 1.0.4 from cffi import ffiplatform except ImportError: pytest.skip("system cffi module not found or older than 1.0.0") if w_min_version is None: min_version = (1, 4, 0) else: min_version = tuple(space.unwrap(w_min_version)) if cffi.__version_info__ < min_version: pytest.skip("system cffi module needs to be at least %s, got %s" % ( min_version, cffi.__version_info__)) space.appexec([], """(): import _cffi_backend # force it to be initialized """) includes = [] if w_includes: includes += space.unpackiterable(w_includes) assert module_name.startswith('test_') module_name = '_CFFI_' + module_name rdir = udir.ensure('recompiler', dir=1) rdir.join('Python.h').write( '#include <stdio.h>\n' '#define PYPY_VERSION XX\n' '#define PyMODINIT_FUNC /*exported*/ void\n' ) path = module_name.replace('.', os.sep) if '.' in module_name: subrdir = rdir.join(module_name[:module_name.index('.')]) os.mkdir(str(subrdir)) else: subrdir = rdir c_file = str(rdir.join('%s.c' % path)) ffi = FFI() for include_ffi_object in includes: ffi.include(include_ffi_object._test_recompiler_source_ffi) ffi.cdef(cdef, packed=packed) ffi.set_source(module_name, source) ffi.emit_c_code(c_file) base_module_name = module_name.split('.')[-1] sources = [] if w_extra_source is not None: sources.append(space.str_w(w_extra_source)) kwargs = {} # GCC 14 promotes -Wincompatible-pointer-types from a warning to an error # by default, which breaks cffi's intentionally-mismatched field-check # probes (e.g. test_misdeclared_field_1). Keep it a warning so the module # compiles and cffi's runtime checks can run. extra = ['-Wno-error=incompatible-pointer-types'] if w_extra_compile_args is not None: extra = extra + space.unwrap(w_extra_compile_args) kwargs['extra_compile_args'] = extra ext = ffiplatform.get_extension(c_file, module_name, include_dirs=[str(rdir)], export_symbols=['_cffi_pypyinit_' + base_module_name], sources=sources, **kwargs) > ffiplatform.compile(str(rdir), ext) module\_cffi_backend\test\test_recompiler.py:86: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x000002792b74f4a0> compiler_verbose = 0, debug = None def compile(tmpdir, ext, compiler_verbose=0, debug=None): """Compile a C extension module using distutils.""" saved_environ = os.environ.copy() try: > outputfilename = _build(tmpdir, ext, compiler_verbose, debug) d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x000002792b74f4a0> compiler_verbose = 0, debug = 0 def _build(tmpdir, ext, compiler_verbose=0, debug=None): # XXX compact but horrible :-( from cffi._shimmed_dist_utils import Distribution, CompileError, LinkError, set_threshold, set_verbosity dist = Distribution({'ext_modules': [ext]}) dist.parse_config_files() options = dist.get_option_dict('build_ext') if debug is None: debug = sys.flags.debug options['debug'] = ('ffiplatform', debug) options['force'] = ('ffiplatform', True) options['build_lib'] = ('ffiplatform', tmpdir) options['build_temp'] = ('ffiplatform', tmpdir) # try: old_level = set_threshold(0) or 0 try: set_verbosity(compiler_verbose) dist.run_command('build_ext') cmd_obj = dist.get_command_obj('build_ext') [soname] = cmd_obj.get_outputs() finally: set_threshold(old_level) except (CompileError, LinkError) as e: > raise VerificationError('%s: %s' % (e.__class__.__name__, e)) E VerificationError: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2 d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:54: VerificationError ---------------------------- Captured stdout call ----------------------------- generating d:\systemtemp\pytest\usession-main-595\recompiler\_CFFI_test_addressof_function_with_struct.c ---------------------------- Captured stderr call ----------------------------- cl : Command line error D8021 : invalid numeric argument '/Wno-error=incompatible-pointer-types' _______________________ AppTestRecompiler.test_issue198 _______________________ self = <CallInfo when='call' exception: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2> func = <function <lambda> at 0x000002792d5b7f88>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ..\_pytest\runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ..\_pytest\runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_issue198'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_issue198'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ..\_pytest\vendored_packages\pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00000279153616a8> hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_issue198'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_issue198'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ..\_pytest\vendored_packages\pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_issue198'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_issue198'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ..\_pytest\vendored_packages\pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_issue198'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791a58aef8> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...t_issue198'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002791bda5260> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002791bda5260> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...t_issue198'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_issue198'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791a58aea8> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...t_issue198'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002791bda5220> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002791bda5220> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...t_issue198'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_issue198'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ..\_pytest\vendored_packages\pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_issue198'> def pytest_runtest_call(item): try: > item.runtest() ..\_pytest\runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_issue198'> def runtest(self): target = self.obj if self.config.option.runappdirect: return target() space = target.im_self.space filename = self._getdynfilename(target) func = app2interp_temp(target.im_func, filename=filename) w_instance = self.parent.w_instance > self.execute_appex(space, func, space, w_instance) tool\pytest\apptest.py:89: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_issue198'>, space = StdObjSpace target = <function test_issue198 at 0x000002791bb7e6b0> args = (StdObjSpace, <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>) def execute_appex(self, space, target, *args): self.space = space try: > target(*args) tool\pytest\apptest.py:30: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) w_func = <Function test_issue198> args = <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8> def appcaller(space, *args_w): if not isinstance(space, ObjSpace): raise TypeError("first argument must be a space instance.") # the last argument can be an Arguments w_func = self.wget(space, name) if not args_w: return space.call_function(w_func) else: args = args_w[-1] assert args is not None if not isinstance(args, Arguments): > return space.call_function(w_func, *args_w) interpreter\gateway.py:1227: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <Function test_issue198> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) nargs = 1, Function = <class 'pypy.interpreter.function.Function'> Method = <class 'pypy.interpreter.function.Method'> def call_function(self, w_func, *args_w): nargs = len(args_w) # used for pruning funccall versions if not self.config.objspace.disable_call_speedhacks and nargs < 5: # start of hack for performance from pypy.interpreter.function import Function, Method if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: if nargs < 4: func = w_func.w_function if isinstance(func, Function): return func.funccall(w_inst, *args_w) elif args_w and ( self.abstract_isinstance_w(args_w[0], w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): > return w_func.funccall(*args_w) interpreter\baseobjspace.py:1210: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <Function test_issue198> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) gateway = <module 'pypy.interpreter.gateway' from 'd:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\interpreter\\gateway.pyc'> PyCode = <class 'pypy.interpreter.pycode.PyCode'> code = <code object test_issue198, file '[d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:900]', line 1> def funccall(self, *args_w): # speed hack from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit nargs = len(args_w) fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, args_w[0]) elif nargs == 2: assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, args_w[0], args_w[1]) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) return code.fastcall_3(self.space, self, args_w[0], args_w[1], args_w[2]) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) return code.fastcall_4(self.space, self, args_w[0], args_w[1], args_w[2], args_w[3]) elif (nargs | PyCode.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) if nargs < 5: new_frame = self.space.createframe(code, self.w_func_globals, self) for i in funccallunrolling: if i < nargs: new_frame.locals_cells_stack_w[i] = args_w[i] > return new_frame.run() interpreter\function.py:118: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_issue198...uild\pypy\module\_cffi_backend\test\test_recompiler.py:900]', line 1> at line 6 def run(self): """Start this frame's execution.""" if self.getcode().co_flags & pycode.CO_GENERATOR: from pypy.interpreter.generator import GeneratorIterator return GeneratorIterator(self) else: > return self.execute_frame() interpreter\pyframe.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_issue198...uild\pypy\module\_cffi_backend\test\test_recompiler.py:900]', line 1> at line 6 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, executioncontext) except OperationError: raise except Exception as e: # general fall-back > raise self._convert_unexpected_exception(e) interpreter\pyframe.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_issue198...uild\pypy\module\_cffi_backend\test\test_recompiler.py:900]', line 1> at line 6 e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def _convert_unexpected_exception(self, e): from pypy.interpreter import error > operr = error.get_converted_unexpected_exception(self.space, e) interpreter\pyframe.py:943: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_issue198...uild\pypy\module\_cffi_backend\test\test_recompiler.py:900]', line 1> at line 6 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, > executioncontext) interpreter\pyframe.py:286: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_issue198...uild\pypy\module\_cffi_backend\test\test_recompiler.py:900]', line 1> at line 6 pycode = <code object test_issue198, file '[d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:900]', line 1> next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def dispatch(self, pycode, next_instr, ec): # For the sequel, force 'next_instr' to be unsigned for performance next_instr = r_uint(next_instr) co_code = pycode.co_code try: while True: > next_instr = self.handle_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:64: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_issue198...uild\pypy\module\_cffi_backend\test\test_recompiler.py:900]', line 1> at line 6 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00d\x04\x00\x84\x00\x00}\x03\x0...x00\xc9\x01\x00|\x02\x00j\x02\x00\xca\x01\x00d\x05\x00k\x02\x00sm\x00t\x03\x00\x82\x01\x00d\x00\x00S\x01\x00d\x00\x00S' next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def handle_bytecode(self, co_code, next_instr, ec): try: > next_instr = self.dispatch_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:71: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_issue198...uild\pypy\module\_cffi_backend\test\test_recompiler.py:900]', line 1> at line 6 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00d\x04\x00\x84\x00\x00}\x03\x0...x00\xc9\x01\x00|\x02\x00j\x02\x00\xca\x01\x00d\x05\x00k\x02\x00sm\x00t\x03\x00\x82\x01\x00d\x00\x00S\x01\x00d\x00\x00S' next_instr = 18L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> @jit.unroll_safe def dispatch_bytecode(self, co_code, next_instr, ec): while True: self.last_instr = intmask(next_instr) if jit.we_are_jitted(): if self.debugdata: ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) else: # Only reload next_instr from last_instr when something that # can modify it actually ran (trace function or action # dispatcher). In the common case (no trace, positive ticker) # next_instr is unchanged and the round-trip is skipped. _d = self.debugdata if ec.space.reverse_debugging or ( _d is not None and _d.w_f_trace is not None) or ( not we_are_translated() and 'bytecode_only_trace' in ec.__dict__): ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) actionflag = ec.space.actionflag if actionflag.decrement_ticker(TICK_COUNTER_STEP) < 0: actionflag.action_dispatcher(ec, self) next_instr = r_uint(self.last_instr) opcode = ord(co_code[next_instr]) next_instr += 1 if opcode >= HAVE_ARGUMENT: lo = ord(co_code[next_instr]) hi = ord(co_code[next_instr+1]) next_instr += 2 oparg = (hi * 256) | lo else: oparg = 0 # note: the structure of the code here is such that it makes # (after translation) a big "if/elif" chain, which is then # turned into a switch(). while opcode == opcodedesc.EXTENDED_ARG.index: opcode = ord(co_code[next_instr]) if opcode < HAVE_ARGUMENT: raise BytecodeCorruption lo = ord(co_code[next_instr+1]) hi = ord(co_code[next_instr+2]) next_instr += 3 oparg = (oparg * 65536) | (hi * 256) | lo if opcode == opcodedesc.RETURN_VALUE.index: if not self.blockstack_non_empty(): self.frame_finished_execution = True # for generators raise Return w_returnvalue = self.popvalue() block = self.unrollstack(SReturnValue.kind) if block is None: self.pushvalue(w_returnvalue) raise Return else: unroller = SReturnValue(w_returnvalue) next_instr = block.handle(self, unroller) return next_instr # now inside a 'finally' block elif opcode == opcodedesc.END_FINALLY.index: unroller = self.end_finally() if isinstance(unroller, SuspendedUnroller): # go on unrolling the stack block = self.unrollstack(unroller.kind) if block is None: w_result = unroller.nomoreblocks() self.pushvalue(w_result) raise Return else: next_instr = block.handle(self, unroller) return next_instr elif opcode == opcodedesc.JUMP_ABSOLUTE.index: return self.jump_absolute(oparg, ec) elif opcode == opcodedesc.BREAK_LOOP.index: next_instr = self.BREAK_LOOP(oparg, next_instr) elif opcode == opcodedesc.CONTINUE_LOOP.index: return self.CONTINUE_LOOP(oparg, next_instr) elif opcode == opcodedesc.FOR_ITER.index: next_instr = self.FOR_ITER(oparg, next_instr) elif opcode == opcodedesc.JUMP_FORWARD.index: next_instr = self.JUMP_FORWARD(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_FALSE_OR_POP.index: next_instr = self.JUMP_IF_FALSE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_NOT_DEBUG.index: next_instr = self.JUMP_IF_NOT_DEBUG(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_TRUE_OR_POP.index: next_instr = self.JUMP_IF_TRUE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_FALSE.index: next_instr = self.POP_JUMP_IF_FALSE(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_TRUE.index: next_instr = self.POP_JUMP_IF_TRUE(oparg, next_instr) elif opcode == opcodedesc.BINARY_ADD.index: self.BINARY_ADD(oparg, next_instr) elif opcode == opcodedesc.BINARY_AND.index: self.BINARY_AND(oparg, next_instr) elif opcode == opcodedesc.BINARY_DIVIDE.index: self.BINARY_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_FLOOR_DIVIDE.index: self.BINARY_FLOOR_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_LSHIFT.index: self.BINARY_LSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_MODULO.index: self.BINARY_MODULO(oparg, next_instr) elif opcode == opcodedesc.BINARY_MULTIPLY.index: self.BINARY_MULTIPLY(oparg, next_instr) elif opcode == opcodedesc.BINARY_OR.index: self.BINARY_OR(oparg, next_instr) elif opcode == opcodedesc.BINARY_POWER.index: self.BINARY_POWER(oparg, next_instr) elif opcode == opcodedesc.BINARY_RSHIFT.index: self.BINARY_RSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBSCR.index: self.BINARY_SUBSCR(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBTRACT.index: self.BINARY_SUBTRACT(oparg, next_instr) elif opcode == opcodedesc.BINARY_TRUE_DIVIDE.index: self.BINARY_TRUE_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_XOR.index: self.BINARY_XOR(oparg, next_instr) elif opcode == opcodedesc.BUILD_CLASS.index: self.BUILD_CLASS(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST.index: self.BUILD_LIST(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST_FROM_ARG.index: self.BUILD_LIST_FROM_ARG(oparg, next_instr) elif opcode == opcodedesc.BUILD_MAP.index: self.BUILD_MAP(oparg, next_instr) elif opcode == opcodedesc.BUILD_SET.index: self.BUILD_SET(oparg, next_instr) elif opcode == opcodedesc.BUILD_SLICE.index: self.BUILD_SLICE(oparg, next_instr) elif opcode == opcodedesc.BUILD_TUPLE.index: self.BUILD_TUPLE(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION.index: self.CALL_FUNCTION(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_KW.index: self.CALL_FUNCTION_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR.index: self.CALL_FUNCTION_VAR(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR_KW.index: self.CALL_FUNCTION_VAR_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_METHOD.index: > self.CALL_METHOD(oparg, next_instr) interpreter\pyopcode.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ f = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_issue198...uild\pypy\module\_cffi_backend\test\test_recompiler.py:900]', line 1> at line 6 oparg = 3, ignored = (18L,), n_args = 3, n_kwargs = 0, w_self = None @jit.unroll_safe def CALL_METHOD(f, oparg, *ignored): # opargs contains the arg, and kwarg count, excluding the implicit 'self' n_args = oparg & 0xff n_kwargs = (oparg >> 8) & 0xff w_self = f.peekvalue_maybe_none(n_args + (2 * n_kwargs)) n = n_args + (w_self is not None) if not n_kwargs: w_callable = f.peekvalue(n_args + (2 * n_kwargs) + 1) w_result = f.space.call_valuestack( > w_callable, n, f, methodcall=w_self is not None, dropvalues=n_args + 2) objspace\std\callmethod.py:96: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_issue198...uild\pypy\module\_cffi_backend\test\test_recompiler.py:900]', line 1> at line 6 dropvalues = 5, methodcall = False def call_valuestack(self, w_func, nargs, frame, dropvalues, methodcall=False): # methodcall is only used for better error messages in argument.py from pypy.interpreter.function import Function, Method, is_builtin_code if frame.get_is_being_profiled() and is_builtin_code(w_func): # XXX: this code is copied&pasted :-( from the slow path below # call_valuestack(). args = frame.make_arguments(nargs) frame.dropvalues(dropvalues) return self.call_args_and_c_profile(frame, w_func, args) if not self.config.objspace.disable_call_speedhacks: # start of hack for performance if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: w_func = w_func.w_function # reuse callable stack place for w_inst frame.settopvalue(w_inst, nargs) nargs += 1 methodcall = True elif nargs > 0 and ( self.abstract_isinstance_w(frame.peekvalue(nargs-1), # :-( w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): return w_func.funccall_valuestack( > nargs, frame, methodcall=methodcall, dropvalues=dropvalues) interpreter\baseobjspace.py:1243: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_issue198...uild\pypy\module\_cffi_backend\test\test_recompiler.py:900]', line 1> at line 6 dropvalues = 5, methodcall = False def funccall_valuestack(self, nargs, frame, dropvalues, methodcall=False): # speed hack # methodcall is only for better error messages from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit # if (jit.we_are_jitted() and code is self.space._code_of_sys_exc_info and nargs == 0): frame.dropvalues(dropvalues) from pypy.module.sys.vm import exc_info_direct return exc_info_direct(self.space, frame) # fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: f_0 = frame.peekvalue(0) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, f_0) elif nargs == 2: f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, f_1, f_0) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) frame.dropvalues(dropvalues) return code.fastcall_3(self.space, self, f_2, f_1, f_0) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) f_3 = frame.peekvalue(3) frame.dropvalues(dropvalues) return code.fastcall_4(self.space, self, f_3, f_2, f_1, f_0) elif (nargs | Code.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) return self._flat_pycall(code, nargs, frame, dropvalues) elif fast_natural_arity & Code.FLATPYCALL: natural_arity = fast_natural_arity & 0xff if natural_arity > nargs >= natural_arity - len(self.defs_w): assert isinstance(code, PyCode) return self._flat_pycall_defaults(code, nargs, frame, natural_arity - nargs, dropvalues) elif fast_natural_arity == Code.PASSTHROUGHARGS1 and nargs >= 1: assert isinstance(code, gateway.BuiltinCodePassThroughArguments1) w_obj = frame.peekvalue(nargs-1) args = frame.make_arguments(nargs-1) frame.dropvalues(dropvalues) return code.funcrun_obj(self, w_obj, args) args = frame.make_arguments(nargs, methodcall=methodcall) frame.dropvalues(dropvalues) > return self.call_args(args) interpreter\function.py:190: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('\n typedef struct{...;} opaque_t;\n ...que_t)42)\n static int toint(opaque_t o) { return o; }\n ')]) def call_args(self, args): # delegate activation to code > w_res = self.getcode().funcrun(self, args) interpreter\function.py:68: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('\n typedef struct{...;} opaque_t;\n ...que_t)42)\n static int toint(opaque_t o) { return o; }\n ')]) def funcrun(self, func, args): > return BuiltinCode.funcrun_obj(self, func, None, args) interpreter\gateway.py:781: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('\n typedef struct{...;} opaque_t;\n ...que_t)42)\n static int toint(opaque_t o) { return o; }\n ')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: w_result = activation._run(space, scope_w) except DescrMismatch: if w_obj is not None: args = args.prepend(w_obj) return self._type_unwrap_mismatch(space, args) except Exception as e: > self.handle_exception(space, e) interpreter\gateway.py:795: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> space = StdObjSpace e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def handle_exception(self, space, e): try: if not we_are_translated(): raise raise e except OperationError: raise except Exception as e: # general fall-back from pypy.interpreter import error > raise error.get_converted_unexpected_exception(space, e) interpreter\gateway.py:819: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('\n typedef struct{...;} opaque_t;\n ...que_t)42)\n static int toint(opaque_t o) { return o; }\n ')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: > w_result = activation._run(space, scope_w) interpreter\gateway.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinActivation_UwS_ObjSpace_text_text_text_W_Root_W_Root_W_Root_int_W_Root object at 0x000002791c13af38> space = StdObjSpace scope_w = [W_BytesObject('\n typedef struct{...;} opaque_t;\n const opaque_t CONSTANT;\n int to...define CONSTA...paque_t)42)\n static int toint(opaque_t o) { return o; }\n '), None, None, None, ...] def _run(self, space, scope_w): > return self.behavior(space, space.text_w(scope_w[0]), space.text_w(scope_w[1]), space.text_w(scope_w[2]), scope_w[3], scope_w[4], scope_w[5], space.gateway_int_w(scope_w[6]), scope_w[7]) <3152-codegen d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\rpython\tool\sourcetools.py:200>:3: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace cdef = '\n typedef struct{...;} opaque_t;\n const opaque_t CONSTANT;\n int toint(opaque_t);\n ' module_name = '_CFFI_test_issue198' source = '\n typedef int opaque_t;\n #define CONSTANT ((opaque_t)42)\n static int toint(opaque_t o) { return o; }\n ' w_includes = None, w_extra_source = None, w_min_version = None, packed = 0 w_extra_compile_args = None @unwrap_spec(cdef='text', module_name='text', source='text', packed=int) def prepare(space, cdef, module_name, source, w_includes=None, w_extra_source=None, w_min_version=None, packed=False, w_extra_compile_args=None): try: import cffi from cffi import FFI # <== the system one, which from cffi import recompiler # needs to be at least cffi 1.0.4 from cffi import ffiplatform except ImportError: pytest.skip("system cffi module not found or older than 1.0.0") if w_min_version is None: min_version = (1, 4, 0) else: min_version = tuple(space.unwrap(w_min_version)) if cffi.__version_info__ < min_version: pytest.skip("system cffi module needs to be at least %s, got %s" % ( min_version, cffi.__version_info__)) space.appexec([], """(): import _cffi_backend # force it to be initialized """) includes = [] if w_includes: includes += space.unpackiterable(w_includes) assert module_name.startswith('test_') module_name = '_CFFI_' + module_name rdir = udir.ensure('recompiler', dir=1) rdir.join('Python.h').write( '#include <stdio.h>\n' '#define PYPY_VERSION XX\n' '#define PyMODINIT_FUNC /*exported*/ void\n' ) path = module_name.replace('.', os.sep) if '.' in module_name: subrdir = rdir.join(module_name[:module_name.index('.')]) os.mkdir(str(subrdir)) else: subrdir = rdir c_file = str(rdir.join('%s.c' % path)) ffi = FFI() for include_ffi_object in includes: ffi.include(include_ffi_object._test_recompiler_source_ffi) ffi.cdef(cdef, packed=packed) ffi.set_source(module_name, source) ffi.emit_c_code(c_file) base_module_name = module_name.split('.')[-1] sources = [] if w_extra_source is not None: sources.append(space.str_w(w_extra_source)) kwargs = {} # GCC 14 promotes -Wincompatible-pointer-types from a warning to an error # by default, which breaks cffi's intentionally-mismatched field-check # probes (e.g. test_misdeclared_field_1). Keep it a warning so the module # compiles and cffi's runtime checks can run. extra = ['-Wno-error=incompatible-pointer-types'] if w_extra_compile_args is not None: extra = extra + space.unwrap(w_extra_compile_args) kwargs['extra_compile_args'] = extra ext = ffiplatform.get_extension(c_file, module_name, include_dirs=[str(rdir)], export_symbols=['_cffi_pypyinit_' + base_module_name], sources=sources, **kwargs) > ffiplatform.compile(str(rdir), ext) module\_cffi_backend\test\test_recompiler.py:86: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x000002791a6a56a0> compiler_verbose = 0, debug = None def compile(tmpdir, ext, compiler_verbose=0, debug=None): """Compile a C extension module using distutils.""" saved_environ = os.environ.copy() try: > outputfilename = _build(tmpdir, ext, compiler_verbose, debug) d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x000002791a6a56a0> compiler_verbose = 0, debug = 0 def _build(tmpdir, ext, compiler_verbose=0, debug=None): # XXX compact but horrible :-( from cffi._shimmed_dist_utils import Distribution, CompileError, LinkError, set_threshold, set_verbosity dist = Distribution({'ext_modules': [ext]}) dist.parse_config_files() options = dist.get_option_dict('build_ext') if debug is None: debug = sys.flags.debug options['debug'] = ('ffiplatform', debug) options['force'] = ('ffiplatform', True) options['build_lib'] = ('ffiplatform', tmpdir) options['build_temp'] = ('ffiplatform', tmpdir) # try: old_level = set_threshold(0) or 0 try: set_verbosity(compiler_verbose) dist.run_command('build_ext') cmd_obj = dist.get_command_obj('build_ext') [soname] = cmd_obj.get_outputs() finally: set_threshold(old_level) except (CompileError, LinkError) as e: > raise VerificationError('%s: %s' % (e.__class__.__name__, e)) E VerificationError: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2 d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:54: VerificationError ---------------------------- Captured stdout call ----------------------------- generating d:\systemtemp\pytest\usession-main-595\recompiler\_CFFI_test_issue198.c ---------------------------- Captured stderr call ----------------------------- cl : Command line error D8021 : invalid numeric argument '/Wno-error=incompatible-pointer-types' _________ AppTestRecompiler.test_constant_is_not_a_compiler_constant __________ self = <CallInfo when='call' exception: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2> func = <function <lambda> at 0x000002792aa89b50>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ..\_pytest\runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ..\_pytest\runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_constant_is_not_a_compiler_cons...': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_constant_is_not_a_compiler_constant'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ..\_pytest\vendored_packages\pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00000279153616a8> hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_constant_is_not_a_compiler_cons...': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_constant_is_not_a_compiler_constant'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ..\_pytest\vendored_packages\pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_constant_is_not_a_compiler_cons...': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_constant_is_not_a_compiler_constant'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ..\_pytest\vendored_packages\pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_constant_is_not_a_compiler_constant'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002792b80cf48> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...r_constant'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792875a9a0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792875a9a0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...r_constant'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_constant_is_not_a_compiler_constant'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002792b80ce08> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...r_constant'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792875a960> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792875a960> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...r_constant'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_constant_is_not_a_compiler_constant'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ..\_pytest\vendored_packages\pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_constant_is_not_a_compiler_constant'> def pytest_runtest_call(item): try: > item.runtest() ..\_pytest\runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_constant_is_not_a_compiler_constant'> def runtest(self): target = self.obj if self.config.option.runappdirect: return target() space = target.im_self.space filename = self._getdynfilename(target) func = app2interp_temp(target.im_func, filename=filename) w_instance = self.parent.w_instance > self.execute_appex(space, func, space, w_instance) tool\pytest\apptest.py:89: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_constant_is_not_a_compiler_constant'> space = StdObjSpace target = <function test_constant_is_not_a_compiler_constant at 0x000002792aa89c40> args = (StdObjSpace, <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>) def execute_appex(self, space, target, *args): self.space = space try: > target(*args) tool\pytest\apptest.py:30: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) w_func = <Function test_constant_is_not_a_compiler_constant> args = <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8> def appcaller(space, *args_w): if not isinstance(space, ObjSpace): raise TypeError("first argument must be a space instance.") # the last argument can be an Arguments w_func = self.wget(space, name) if not args_w: return space.call_function(w_func) else: args = args_w[-1] assert args is not None if not isinstance(args, Arguments): > return space.call_function(w_func, *args_w) interpreter\gateway.py:1227: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <Function test_constant_is_not_a_compiler_constant> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) nargs = 1, Function = <class 'pypy.interpreter.function.Function'> Method = <class 'pypy.interpreter.function.Method'> def call_function(self, w_func, *args_w): nargs = len(args_w) # used for pruning funccall versions if not self.config.objspace.disable_call_speedhacks and nargs < 5: # start of hack for performance from pypy.interpreter.function import Function, Method if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: if nargs < 4: func = w_func.w_function if isinstance(func, Function): return func.funccall(w_inst, *args_w) elif args_w and ( self.abstract_isinstance_w(args_w[0], w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): > return w_func.funccall(*args_w) interpreter\baseobjspace.py:1210: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <Function test_constant_is_not_a_compiler_constant> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) gateway = <module 'pypy.interpreter.gateway' from 'd:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\interpreter\\gateway.pyc'> PyCode = <class 'pypy.interpreter.pycode.PyCode'> code = <code object test_constant_is_not_a_compiler_constant, file '[d:\pypy_stuff\bu...n-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:916]', line 1> def funccall(self, *args_w): # speed hack from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit nargs = len(args_w) fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, args_w[0]) elif nargs == 2: assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, args_w[0], args_w[1]) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) return code.fastcall_3(self.space, self, args_w[0], args_w[1], args_w[2]) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) return code.fastcall_4(self.space, self, args_w[0], args_w[1], args_w[2], args_w[3]) elif (nargs | PyCode.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) if nargs < 5: new_frame = self.space.createframe(code, self.w_func_globals, self) for i in funccallunrolling: if i < nargs: new_frame.locals_cells_stack_w[i] = args_w[i] > return new_frame.run() interpreter\function.py:118: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_constant...uild\pypy\module\_cffi_backend\test\test_recompiler.py:916]', line 1> at line 4 def run(self): """Start this frame's execution.""" if self.getcode().co_flags & pycode.CO_GENERATOR: from pypy.interpreter.generator import GeneratorIterator return GeneratorIterator(self) else: > return self.execute_frame() interpreter\pyframe.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_constant...uild\pypy\module\_cffi_backend\test\test_recompiler.py:916]', line 1> at line 4 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, executioncontext) except OperationError: raise except Exception as e: # general fall-back > raise self._convert_unexpected_exception(e) interpreter\pyframe.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_constant...uild\pypy\module\_cffi_backend\test\test_recompiler.py:916]', line 1> at line 4 e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def _convert_unexpected_exception(self, e): from pypy.interpreter import error > operr = error.get_converted_unexpected_exception(self.space, e) interpreter\pyframe.py:943: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_constant...uild\pypy\module\_cffi_backend\test\test_recompiler.py:916]', line 1> at line 4 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, > executioncontext) interpreter\pyframe.py:286: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_constant...uild\pypy\module\_cffi_backend\test\test_recompiler.py:916]', line 1> at line 4 pycode = <code object test_constant_is_not_a_compiler_constant, file '[d:\pypy_stuff\bu...n-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:916]', line 1> next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def dispatch(self, pycode, next_instr, ec): # For the sequel, force 'next_instr' to be unsigned for performance next_instr = r_uint(next_instr) co_code = pycode.co_code try: while True: > next_instr = self.handle_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:64: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_constant...uild\pypy\module\_cffi_backend\test\test_recompiler.py:916]', line 1> at line 4 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00\xcc\x15\x00|\x02\x00j\x01\x00d\x04\x00k\x02\x00s3\x00t\x02\x00\x82\x01\x00d\x00\x00S' next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def handle_bytecode(self, co_code, next_instr, ec): try: > next_instr = self.dispatch_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:71: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_constant...uild\pypy\module\_cffi_backend\test\test_recompiler.py:916]', line 1> at line 4 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00\xcc\x15\x00|\x02\x00j\x01\x00d\x04\x00k\x02\x00s3\x00t\x02\x00\x82\x01\x00d\x00\x00S' next_instr = 18L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> @jit.unroll_safe def dispatch_bytecode(self, co_code, next_instr, ec): while True: self.last_instr = intmask(next_instr) if jit.we_are_jitted(): if self.debugdata: ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) else: # Only reload next_instr from last_instr when something that # can modify it actually ran (trace function or action # dispatcher). In the common case (no trace, positive ticker) # next_instr is unchanged and the round-trip is skipped. _d = self.debugdata if ec.space.reverse_debugging or ( _d is not None and _d.w_f_trace is not None) or ( not we_are_translated() and 'bytecode_only_trace' in ec.__dict__): ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) actionflag = ec.space.actionflag if actionflag.decrement_ticker(TICK_COUNTER_STEP) < 0: actionflag.action_dispatcher(ec, self) next_instr = r_uint(self.last_instr) opcode = ord(co_code[next_instr]) next_instr += 1 if opcode >= HAVE_ARGUMENT: lo = ord(co_code[next_instr]) hi = ord(co_code[next_instr+1]) next_instr += 2 oparg = (hi * 256) | lo else: oparg = 0 # note: the structure of the code here is such that it makes # (after translation) a big "if/elif" chain, which is then # turned into a switch(). while opcode == opcodedesc.EXTENDED_ARG.index: opcode = ord(co_code[next_instr]) if opcode < HAVE_ARGUMENT: raise BytecodeCorruption lo = ord(co_code[next_instr+1]) hi = ord(co_code[next_instr+2]) next_instr += 3 oparg = (oparg * 65536) | (hi * 256) | lo if opcode == opcodedesc.RETURN_VALUE.index: if not self.blockstack_non_empty(): self.frame_finished_execution = True # for generators raise Return w_returnvalue = self.popvalue() block = self.unrollstack(SReturnValue.kind) if block is None: self.pushvalue(w_returnvalue) raise Return else: unroller = SReturnValue(w_returnvalue) next_instr = block.handle(self, unroller) return next_instr # now inside a 'finally' block elif opcode == opcodedesc.END_FINALLY.index: unroller = self.end_finally() if isinstance(unroller, SuspendedUnroller): # go on unrolling the stack block = self.unrollstack(unroller.kind) if block is None: w_result = unroller.nomoreblocks() self.pushvalue(w_result) raise Return else: next_instr = block.handle(self, unroller) return next_instr elif opcode == opcodedesc.JUMP_ABSOLUTE.index: return self.jump_absolute(oparg, ec) elif opcode == opcodedesc.BREAK_LOOP.index: next_instr = self.BREAK_LOOP(oparg, next_instr) elif opcode == opcodedesc.CONTINUE_LOOP.index: return self.CONTINUE_LOOP(oparg, next_instr) elif opcode == opcodedesc.FOR_ITER.index: next_instr = self.FOR_ITER(oparg, next_instr) elif opcode == opcodedesc.JUMP_FORWARD.index: next_instr = self.JUMP_FORWARD(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_FALSE_OR_POP.index: next_instr = self.JUMP_IF_FALSE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_NOT_DEBUG.index: next_instr = self.JUMP_IF_NOT_DEBUG(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_TRUE_OR_POP.index: next_instr = self.JUMP_IF_TRUE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_FALSE.index: next_instr = self.POP_JUMP_IF_FALSE(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_TRUE.index: next_instr = self.POP_JUMP_IF_TRUE(oparg, next_instr) elif opcode == opcodedesc.BINARY_ADD.index: self.BINARY_ADD(oparg, next_instr) elif opcode == opcodedesc.BINARY_AND.index: self.BINARY_AND(oparg, next_instr) elif opcode == opcodedesc.BINARY_DIVIDE.index: self.BINARY_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_FLOOR_DIVIDE.index: self.BINARY_FLOOR_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_LSHIFT.index: self.BINARY_LSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_MODULO.index: self.BINARY_MODULO(oparg, next_instr) elif opcode == opcodedesc.BINARY_MULTIPLY.index: self.BINARY_MULTIPLY(oparg, next_instr) elif opcode == opcodedesc.BINARY_OR.index: self.BINARY_OR(oparg, next_instr) elif opcode == opcodedesc.BINARY_POWER.index: self.BINARY_POWER(oparg, next_instr) elif opcode == opcodedesc.BINARY_RSHIFT.index: self.BINARY_RSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBSCR.index: self.BINARY_SUBSCR(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBTRACT.index: self.BINARY_SUBTRACT(oparg, next_instr) elif opcode == opcodedesc.BINARY_TRUE_DIVIDE.index: self.BINARY_TRUE_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_XOR.index: self.BINARY_XOR(oparg, next_instr) elif opcode == opcodedesc.BUILD_CLASS.index: self.BUILD_CLASS(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST.index: self.BUILD_LIST(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST_FROM_ARG.index: self.BUILD_LIST_FROM_ARG(oparg, next_instr) elif opcode == opcodedesc.BUILD_MAP.index: self.BUILD_MAP(oparg, next_instr) elif opcode == opcodedesc.BUILD_SET.index: self.BUILD_SET(oparg, next_instr) elif opcode == opcodedesc.BUILD_SLICE.index: self.BUILD_SLICE(oparg, next_instr) elif opcode == opcodedesc.BUILD_TUPLE.index: self.BUILD_TUPLE(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION.index: self.CALL_FUNCTION(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_KW.index: self.CALL_FUNCTION_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR.index: self.CALL_FUNCTION_VAR(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR_KW.index: self.CALL_FUNCTION_VAR_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_METHOD.index: > self.CALL_METHOD(oparg, next_instr) interpreter\pyopcode.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ f = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_constant...uild\pypy\module\_cffi_backend\test\test_recompiler.py:916]', line 1> at line 4 oparg = 3, ignored = (18L,), n_args = 3, n_kwargs = 0, w_self = None @jit.unroll_safe def CALL_METHOD(f, oparg, *ignored): # opargs contains the arg, and kwarg count, excluding the implicit 'self' n_args = oparg & 0xff n_kwargs = (oparg >> 8) & 0xff w_self = f.peekvalue_maybe_none(n_args + (2 * n_kwargs)) n = n_args + (w_self is not None) if not n_kwargs: w_callable = f.peekvalue(n_args + (2 * n_kwargs) + 1) w_result = f.space.call_valuestack( > w_callable, n, f, methodcall=w_self is not None, dropvalues=n_args + 2) objspace\std\callmethod.py:96: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_constant...uild\pypy\module\_cffi_backend\test\test_recompiler.py:916]', line 1> at line 4 dropvalues = 5, methodcall = False def call_valuestack(self, w_func, nargs, frame, dropvalues, methodcall=False): # methodcall is only used for better error messages in argument.py from pypy.interpreter.function import Function, Method, is_builtin_code if frame.get_is_being_profiled() and is_builtin_code(w_func): # XXX: this code is copied&pasted :-( from the slow path below # call_valuestack(). args = frame.make_arguments(nargs) frame.dropvalues(dropvalues) return self.call_args_and_c_profile(frame, w_func, args) if not self.config.objspace.disable_call_speedhacks: # start of hack for performance if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: w_func = w_func.w_function # reuse callable stack place for w_inst frame.settopvalue(w_inst, nargs) nargs += 1 methodcall = True elif nargs > 0 and ( self.abstract_isinstance_w(frame.peekvalue(nargs-1), # :-( w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): return w_func.funccall_valuestack( > nargs, frame, methodcall=methodcall, dropvalues=dropvalues) interpreter\baseobjspace.py:1243: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_constant...uild\pypy\module\_cffi_backend\test\test_recompiler.py:916]', line 1> at line 4 dropvalues = 5, methodcall = False def funccall_valuestack(self, nargs, frame, dropvalues, methodcall=False): # speed hack # methodcall is only for better error messages from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit # if (jit.we_are_jitted() and code is self.space._code_of_sys_exc_info and nargs == 0): frame.dropvalues(dropvalues) from pypy.module.sys.vm import exc_info_direct return exc_info_direct(self.space, frame) # fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: f_0 = frame.peekvalue(0) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, f_0) elif nargs == 2: f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, f_1, f_0) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) frame.dropvalues(dropvalues) return code.fastcall_3(self.space, self, f_2, f_1, f_0) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) f_3 = frame.peekvalue(3) frame.dropvalues(dropvalues) return code.fastcall_4(self.space, self, f_3, f_2, f_1, f_0) elif (nargs | Code.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) return self._flat_pycall(code, nargs, frame, dropvalues) elif fast_natural_arity & Code.FLATPYCALL: natural_arity = fast_natural_arity & 0xff if natural_arity > nargs >= natural_arity - len(self.defs_w): assert isinstance(code, PyCode) return self._flat_pycall_defaults(code, nargs, frame, natural_arity - nargs, dropvalues) elif fast_natural_arity == Code.PASSTHROUGHARGS1 and nargs >= 1: assert isinstance(code, gateway.BuiltinCodePassThroughArguments1) w_obj = frame.peekvalue(nargs-1) args = frame.make_arguments(nargs-1) frame.dropvalues(dropvalues) return code.funcrun_obj(self, w_obj, args) args = frame.make_arguments(nargs, methodcall=methodcall) frame.dropvalues(dropvalues) > return self.call_args(args) interpreter\function.py:190: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('static const float almost_forty_two;'), W_BytesObjec...turn 42.25; }\n #define almost_forty_two (f())\n ')]) def call_args(self, args): # delegate activation to code > w_res = self.getcode().funcrun(self, args) interpreter\function.py:68: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('static const float almost_forty_two;'), W_BytesObjec...turn 42.25; }\n #define almost_forty_two (f())\n ')]) def funcrun(self, func, args): > return BuiltinCode.funcrun_obj(self, func, None, args) interpreter\gateway.py:781: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('static const float almost_forty_two;'), W_BytesObjec...turn 42.25; }\n #define almost_forty_two (f())\n ')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: w_result = activation._run(space, scope_w) except DescrMismatch: if w_obj is not None: args = args.prepend(w_obj) return self._type_unwrap_mismatch(space, args) except Exception as e: > self.handle_exception(space, e) interpreter\gateway.py:795: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> space = StdObjSpace e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def handle_exception(self, space, e): try: if not we_are_translated(): raise raise e except OperationError: raise except Exception as e: # general fall-back from pypy.interpreter import error > raise error.get_converted_unexpected_exception(space, e) interpreter\gateway.py:819: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('static const float almost_forty_two;'), W_BytesObjec...turn 42.25; }\n #define almost_forty_two (f())\n ')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: > w_result = activation._run(space, scope_w) interpreter\gateway.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinActivation_UwS_ObjSpace_text_text_text_W_Root_W_Root_W_Root_int_W_Root object at 0x000002791c13af38> space = StdObjSpace scope_w = [W_BytesObject('static const float almost_forty_two;'), W_BytesObject('test_constant_is_not_a_compiler_constant'), W_B...float f(void) { return 42.25; }\n #define almost_forty_two (f())\n '), None, None, None, ...] def _run(self, space, scope_w): > return self.behavior(space, space.text_w(scope_w[0]), space.text_w(scope_w[1]), space.text_w(scope_w[2]), scope_w[3], scope_w[4], scope_w[5], space.gateway_int_w(scope_w[6]), scope_w[7]) <3152-codegen d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\rpython\tool\sourcetools.py:200>:3: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace, cdef = 'static const float almost_forty_two;' module_name = '_CFFI_test_constant_is_not_a_compiler_constant' source = '\n static float f(void) { return 42.25; }\n #define almost_forty_two (f())\n ' w_includes = None, w_extra_source = None, w_min_version = None, packed = 0 w_extra_compile_args = None @unwrap_spec(cdef='text', module_name='text', source='text', packed=int) def prepare(space, cdef, module_name, source, w_includes=None, w_extra_source=None, w_min_version=None, packed=False, w_extra_compile_args=None): try: import cffi from cffi import FFI # <== the system one, which from cffi import recompiler # needs to be at least cffi 1.0.4 from cffi import ffiplatform except ImportError: pytest.skip("system cffi module not found or older than 1.0.0") if w_min_version is None: min_version = (1, 4, 0) else: min_version = tuple(space.unwrap(w_min_version)) if cffi.__version_info__ < min_version: pytest.skip("system cffi module needs to be at least %s, got %s" % ( min_version, cffi.__version_info__)) space.appexec([], """(): import _cffi_backend # force it to be initialized """) includes = [] if w_includes: includes += space.unpackiterable(w_includes) assert module_name.startswith('test_') module_name = '_CFFI_' + module_name rdir = udir.ensure('recompiler', dir=1) rdir.join('Python.h').write( '#include <stdio.h>\n' '#define PYPY_VERSION XX\n' '#define PyMODINIT_FUNC /*exported*/ void\n' ) path = module_name.replace('.', os.sep) if '.' in module_name: subrdir = rdir.join(module_name[:module_name.index('.')]) os.mkdir(str(subrdir)) else: subrdir = rdir c_file = str(rdir.join('%s.c' % path)) ffi = FFI() for include_ffi_object in includes: ffi.include(include_ffi_object._test_recompiler_source_ffi) ffi.cdef(cdef, packed=packed) ffi.set_source(module_name, source) ffi.emit_c_code(c_file) base_module_name = module_name.split('.')[-1] sources = [] if w_extra_source is not None: sources.append(space.str_w(w_extra_source)) kwargs = {} # GCC 14 promotes -Wincompatible-pointer-types from a warning to an error # by default, which breaks cffi's intentionally-mismatched field-check # probes (e.g. test_misdeclared_field_1). Keep it a warning so the module # compiles and cffi's runtime checks can run. extra = ['-Wno-error=incompatible-pointer-types'] if w_extra_compile_args is not None: extra = extra + space.unwrap(w_extra_compile_args) kwargs['extra_compile_args'] = extra ext = ffiplatform.get_extension(c_file, module_name, include_dirs=[str(rdir)], export_symbols=['_cffi_pypyinit_' + base_module_name], sources=sources, **kwargs) > ffiplatform.compile(str(rdir), ext) module\_cffi_backend\test\test_recompiler.py:86: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x000002792875b2e0> compiler_verbose = 0, debug = None def compile(tmpdir, ext, compiler_verbose=0, debug=None): """Compile a C extension module using distutils.""" saved_environ = os.environ.copy() try: > outputfilename = _build(tmpdir, ext, compiler_verbose, debug) d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x000002792875b2e0> compiler_verbose = 0, debug = 0 def _build(tmpdir, ext, compiler_verbose=0, debug=None): # XXX compact but horrible :-( from cffi._shimmed_dist_utils import Distribution, CompileError, LinkError, set_threshold, set_verbosity dist = Distribution({'ext_modules': [ext]}) dist.parse_config_files() options = dist.get_option_dict('build_ext') if debug is None: debug = sys.flags.debug options['debug'] = ('ffiplatform', debug) options['force'] = ('ffiplatform', True) options['build_lib'] = ('ffiplatform', tmpdir) options['build_temp'] = ('ffiplatform', tmpdir) # try: old_level = set_threshold(0) or 0 try: set_verbosity(compiler_verbose) dist.run_command('build_ext') cmd_obj = dist.get_command_obj('build_ext') [soname] = cmd_obj.get_outputs() finally: set_threshold(old_level) except (CompileError, LinkError) as e: > raise VerificationError('%s: %s' % (e.__class__.__name__, e)) E VerificationError: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2 d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:54: VerificationError ---------------------------- Captured stdout call ----------------------------- generating d:\systemtemp\pytest\usession-main-595\recompiler\_CFFI_test_constant_is_not_a_compiler_constant.c ---------------------------- Captured stderr call ----------------------------- cl : Command line error D8021 : invalid numeric argument '/Wno-error=incompatible-pointer-types' _______________ AppTestRecompiler.test_constant_of_unknown_size _______________ self = <CallInfo when='call' exception: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2> func = <function <lambda> at 0x000002792ba04ea8>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ..\_pytest\runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ..\_pytest\runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_constant_of_unknown_size'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_constant_of_unknown_size'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ..\_pytest\vendored_packages\pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00000279153616a8> hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_constant_of_unknown_size'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_constant_of_unknown_size'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ..\_pytest\vendored_packages\pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_constant_of_unknown_size'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_constant_of_unknown_size'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ..\_pytest\vendored_packages\pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_constant_of_unknown_size'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002792001d970> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...known_size'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00000279251d6ea0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00000279251d6ea0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...known_size'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_constant_of_unknown_size'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002792001d8d0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...known_size'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00000279251d6e60> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00000279251d6e60> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...known_size'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_constant_of_unknown_size'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ..\_pytest\vendored_packages\pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_constant_of_unknown_size'> def pytest_runtest_call(item): try: > item.runtest() ..\_pytest\runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_constant_of_unknown_size'> def runtest(self): target = self.obj if self.config.option.runappdirect: return target() space = target.im_self.space filename = self._getdynfilename(target) func = app2interp_temp(target.im_func, filename=filename) w_instance = self.parent.w_instance > self.execute_appex(space, func, space, w_instance) tool\pytest\apptest.py:89: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_constant_of_unknown_size'>, space = StdObjSpace target = <function test_constant_of_unknown_size at 0x000002792ba04f20> args = (StdObjSpace, <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>) def execute_appex(self, space, target, *args): self.space = space try: > target(*args) tool\pytest\apptest.py:30: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) w_func = <Function test_constant_of_unknown_size> args = <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8> def appcaller(space, *args_w): if not isinstance(space, ObjSpace): raise TypeError("first argument must be a space instance.") # the last argument can be an Arguments w_func = self.wget(space, name) if not args_w: return space.call_function(w_func) else: args = args_w[-1] assert args is not None if not isinstance(args, Arguments): > return space.call_function(w_func, *args_w) interpreter\gateway.py:1227: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <Function test_constant_of_unknown_size> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) nargs = 1, Function = <class 'pypy.interpreter.function.Function'> Method = <class 'pypy.interpreter.function.Method'> def call_function(self, w_func, *args_w): nargs = len(args_w) # used for pruning funccall versions if not self.config.objspace.disable_call_speedhacks and nargs < 5: # start of hack for performance from pypy.interpreter.function import Function, Method if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: if nargs < 4: func = w_func.w_function if isinstance(func, Function): return func.funccall(w_inst, *args_w) elif args_w and ( self.abstract_isinstance_w(args_w[0], w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): > return w_func.funccall(*args_w) interpreter\baseobjspace.py:1210: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <Function test_constant_of_unknown_size> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) gateway = <module 'pypy.interpreter.gateway' from 'd:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\interpreter\\gateway.pyc'> PyCode = <class 'pypy.interpreter.pycode.PyCode'> code = <code object test_constant_of_unknown_size, file '[d:\pypy_stuff\buildbot64\sl...n-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:925]', line 1> def funccall(self, *args_w): # speed hack from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit nargs = len(args_w) fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, args_w[0]) elif nargs == 2: assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, args_w[0], args_w[1]) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) return code.fastcall_3(self.space, self, args_w[0], args_w[1], args_w[2]) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) return code.fastcall_4(self.space, self, args_w[0], args_w[1], args_w[2], args_w[3]) elif (nargs | PyCode.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) if nargs < 5: new_frame = self.space.createframe(code, self.w_func_globals, self) for i in funccallunrolling: if i < nargs: new_frame.locals_cells_stack_w[i] = args_w[i] > return new_frame.run() interpreter\function.py:118: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_constant...uild\pypy\module\_cffi_backend\test\test_recompiler.py:925]', line 1> at line 6 def run(self): """Start this frame's execution.""" if self.getcode().co_flags & pycode.CO_GENERATOR: from pypy.interpreter.generator import GeneratorIterator return GeneratorIterator(self) else: > return self.execute_frame() interpreter\pyframe.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_constant...uild\pypy\module\_cffi_backend\test\test_recompiler.py:925]', line 1> at line 6 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, executioncontext) except OperationError: raise except Exception as e: # general fall-back > raise self._convert_unexpected_exception(e) interpreter\pyframe.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_constant...uild\pypy\module\_cffi_backend\test\test_recompiler.py:925]', line 1> at line 6 e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def _convert_unexpected_exception(self, e): from pypy.interpreter import error > operr = error.get_converted_unexpected_exception(self.space, e) interpreter\pyframe.py:943: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_constant...uild\pypy\module\_cffi_backend\test\test_recompiler.py:925]', line 1> at line 6 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, > executioncontext) interpreter\pyframe.py:286: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_constant...uild\pypy\module\_cffi_backend\test\test_recompiler.py:925]', line 1> at line 6 pycode = <code object test_constant_of_unknown_size, file '[d:\pypy_stuff\buildbot64\sl...n-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:925]', line 1> next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def dispatch(self, pycode, next_instr, ec): # For the sequel, force 'next_instr' to be unsigned for performance next_instr = r_uint(next_instr) co_code = pycode.co_code try: while True: > next_instr = self.handle_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:64: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_constant...uild\pypy\module\_cffi_backend\test\test_recompiler.py:925]', line 1> at line 6 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00t\x01\x00|\x01\x00j\x02\x00t\...00d\x00\x00S\xcc\x1b\x00t\x04\x00|\x03\x00j\x05\x00\x83\x01\x00d\x05\x00k\x02\x00sQ\x00t\x06\x00\x82\x01\x00d\x00\x00S' next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def handle_bytecode(self, co_code, next_instr, ec): try: > next_instr = self.dispatch_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:71: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_constant...uild\pypy\module\_cffi_backend\test\test_recompiler.py:925]', line 1> at line 6 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00t\x01\x00|\x01\x00j\x02\x00t\...00d\x00\x00S\xcc\x1b\x00t\x04\x00|\x03\x00j\x05\x00\x83\x01\x00d\x05\x00k\x02\x00sQ\x00t\x06\x00\x82\x01\x00d\x00\x00S' next_instr = 18L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> @jit.unroll_safe def dispatch_bytecode(self, co_code, next_instr, ec): while True: self.last_instr = intmask(next_instr) if jit.we_are_jitted(): if self.debugdata: ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) else: # Only reload next_instr from last_instr when something that # can modify it actually ran (trace function or action # dispatcher). In the common case (no trace, positive ticker) # next_instr is unchanged and the round-trip is skipped. _d = self.debugdata if ec.space.reverse_debugging or ( _d is not None and _d.w_f_trace is not None) or ( not we_are_translated() and 'bytecode_only_trace' in ec.__dict__): ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) actionflag = ec.space.actionflag if actionflag.decrement_ticker(TICK_COUNTER_STEP) < 0: actionflag.action_dispatcher(ec, self) next_instr = r_uint(self.last_instr) opcode = ord(co_code[next_instr]) next_instr += 1 if opcode >= HAVE_ARGUMENT: lo = ord(co_code[next_instr]) hi = ord(co_code[next_instr+1]) next_instr += 2 oparg = (hi * 256) | lo else: oparg = 0 # note: the structure of the code here is such that it makes # (after translation) a big "if/elif" chain, which is then # turned into a switch(). while opcode == opcodedesc.EXTENDED_ARG.index: opcode = ord(co_code[next_instr]) if opcode < HAVE_ARGUMENT: raise BytecodeCorruption lo = ord(co_code[next_instr+1]) hi = ord(co_code[next_instr+2]) next_instr += 3 oparg = (oparg * 65536) | (hi * 256) | lo if opcode == opcodedesc.RETURN_VALUE.index: if not self.blockstack_non_empty(): self.frame_finished_execution = True # for generators raise Return w_returnvalue = self.popvalue() block = self.unrollstack(SReturnValue.kind) if block is None: self.pushvalue(w_returnvalue) raise Return else: unroller = SReturnValue(w_returnvalue) next_instr = block.handle(self, unroller) return next_instr # now inside a 'finally' block elif opcode == opcodedesc.END_FINALLY.index: unroller = self.end_finally() if isinstance(unroller, SuspendedUnroller): # go on unrolling the stack block = self.unrollstack(unroller.kind) if block is None: w_result = unroller.nomoreblocks() self.pushvalue(w_result) raise Return else: next_instr = block.handle(self, unroller) return next_instr elif opcode == opcodedesc.JUMP_ABSOLUTE.index: return self.jump_absolute(oparg, ec) elif opcode == opcodedesc.BREAK_LOOP.index: next_instr = self.BREAK_LOOP(oparg, next_instr) elif opcode == opcodedesc.CONTINUE_LOOP.index: return self.CONTINUE_LOOP(oparg, next_instr) elif opcode == opcodedesc.FOR_ITER.index: next_instr = self.FOR_ITER(oparg, next_instr) elif opcode == opcodedesc.JUMP_FORWARD.index: next_instr = self.JUMP_FORWARD(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_FALSE_OR_POP.index: next_instr = self.JUMP_IF_FALSE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_NOT_DEBUG.index: next_instr = self.JUMP_IF_NOT_DEBUG(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_TRUE_OR_POP.index: next_instr = self.JUMP_IF_TRUE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_FALSE.index: next_instr = self.POP_JUMP_IF_FALSE(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_TRUE.index: next_instr = self.POP_JUMP_IF_TRUE(oparg, next_instr) elif opcode == opcodedesc.BINARY_ADD.index: self.BINARY_ADD(oparg, next_instr) elif opcode == opcodedesc.BINARY_AND.index: self.BINARY_AND(oparg, next_instr) elif opcode == opcodedesc.BINARY_DIVIDE.index: self.BINARY_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_FLOOR_DIVIDE.index: self.BINARY_FLOOR_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_LSHIFT.index: self.BINARY_LSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_MODULO.index: self.BINARY_MODULO(oparg, next_instr) elif opcode == opcodedesc.BINARY_MULTIPLY.index: self.BINARY_MULTIPLY(oparg, next_instr) elif opcode == opcodedesc.BINARY_OR.index: self.BINARY_OR(oparg, next_instr) elif opcode == opcodedesc.BINARY_POWER.index: self.BINARY_POWER(oparg, next_instr) elif opcode == opcodedesc.BINARY_RSHIFT.index: self.BINARY_RSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBSCR.index: self.BINARY_SUBSCR(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBTRACT.index: self.BINARY_SUBTRACT(oparg, next_instr) elif opcode == opcodedesc.BINARY_TRUE_DIVIDE.index: self.BINARY_TRUE_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_XOR.index: self.BINARY_XOR(oparg, next_instr) elif opcode == opcodedesc.BUILD_CLASS.index: self.BUILD_CLASS(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST.index: self.BUILD_LIST(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST_FROM_ARG.index: self.BUILD_LIST_FROM_ARG(oparg, next_instr) elif opcode == opcodedesc.BUILD_MAP.index: self.BUILD_MAP(oparg, next_instr) elif opcode == opcodedesc.BUILD_SET.index: self.BUILD_SET(oparg, next_instr) elif opcode == opcodedesc.BUILD_SLICE.index: self.BUILD_SLICE(oparg, next_instr) elif opcode == opcodedesc.BUILD_TUPLE.index: self.BUILD_TUPLE(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION.index: self.CALL_FUNCTION(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_KW.index: self.CALL_FUNCTION_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR.index: self.CALL_FUNCTION_VAR(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR_KW.index: self.CALL_FUNCTION_VAR_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_METHOD.index: > self.CALL_METHOD(oparg, next_instr) interpreter\pyopcode.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ f = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_constant...uild\pypy\module\_cffi_backend\test\test_recompiler.py:925]', line 1> at line 6 oparg = 3, ignored = (18L,), n_args = 3, n_kwargs = 0, w_self = None @jit.unroll_safe def CALL_METHOD(f, oparg, *ignored): # opargs contains the arg, and kwarg count, excluding the implicit 'self' n_args = oparg & 0xff n_kwargs = (oparg >> 8) & 0xff w_self = f.peekvalue_maybe_none(n_args + (2 * n_kwargs)) n = n_args + (w_self is not None) if not n_kwargs: w_callable = f.peekvalue(n_args + (2 * n_kwargs) + 1) w_result = f.space.call_valuestack( > w_callable, n, f, methodcall=w_self is not None, dropvalues=n_args + 2) objspace\std\callmethod.py:96: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_constant...uild\pypy\module\_cffi_backend\test\test_recompiler.py:925]', line 1> at line 6 dropvalues = 5, methodcall = False def call_valuestack(self, w_func, nargs, frame, dropvalues, methodcall=False): # methodcall is only used for better error messages in argument.py from pypy.interpreter.function import Function, Method, is_builtin_code if frame.get_is_being_profiled() and is_builtin_code(w_func): # XXX: this code is copied&pasted :-( from the slow path below # call_valuestack(). args = frame.make_arguments(nargs) frame.dropvalues(dropvalues) return self.call_args_and_c_profile(frame, w_func, args) if not self.config.objspace.disable_call_speedhacks: # start of hack for performance if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: w_func = w_func.w_function # reuse callable stack place for w_inst frame.settopvalue(w_inst, nargs) nargs += 1 methodcall = True elif nargs > 0 and ( self.abstract_isinstance_w(frame.peekvalue(nargs-1), # :-( w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): return w_func.funccall_valuestack( > nargs, frame, methodcall=methodcall, dropvalues=dropvalues) interpreter\baseobjspace.py:1243: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_constant...uild\pypy\module\_cffi_backend\test\test_recompiler.py:925]', line 1> at line 6 dropvalues = 5, methodcall = False def funccall_valuestack(self, nargs, frame, dropvalues, methodcall=False): # speed hack # methodcall is only for better error messages from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit # if (jit.we_are_jitted() and code is self.space._code_of_sys_exc_info and nargs == 0): frame.dropvalues(dropvalues) from pypy.module.sys.vm import exc_info_direct return exc_info_direct(self.space, frame) # fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: f_0 = frame.peekvalue(0) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, f_0) elif nargs == 2: f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, f_1, f_0) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) frame.dropvalues(dropvalues) return code.fastcall_3(self.space, self, f_2, f_1, f_0) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) f_3 = frame.peekvalue(3) frame.dropvalues(dropvalues) return code.fastcall_4(self.space, self, f_3, f_2, f_1, f_0) elif (nargs | Code.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) return self._flat_pycall(code, nargs, frame, dropvalues) elif fast_natural_arity & Code.FLATPYCALL: natural_arity = fast_natural_arity & 0xff if natural_arity > nargs >= natural_arity - len(self.defs_w): assert isinstance(code, PyCode) return self._flat_pycall_defaults(code, nargs, frame, natural_arity - nargs, dropvalues) elif fast_natural_arity == Code.PASSTHROUGHARGS1 and nargs >= 1: assert isinstance(code, gateway.BuiltinCodePassThroughArguments1) w_obj = frame.peekvalue(nargs-1) args = frame.make_arguments(nargs-1) frame.dropvalues(dropvalues) return code.funcrun_obj(self, w_obj, args) args = frame.make_arguments(nargs, methodcall=methodcall) frame.dropvalues(dropvalues) > return self.call_args(args) interpreter\function.py:190: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('typedef ... opaque_t;const opaque_t CONSTANT;'), W_B...nknown_size'), W_BytesObject('typedef int opaque_t;const int CONSTANT = 42;')]) def call_args(self, args): # delegate activation to code > w_res = self.getcode().funcrun(self, args) interpreter\function.py:68: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('typedef ... opaque_t;const opaque_t CONSTANT;'), W_B...nknown_size'), W_BytesObject('typedef int opaque_t;const int CONSTANT = 42;')]) def funcrun(self, func, args): > return BuiltinCode.funcrun_obj(self, func, None, args) interpreter\gateway.py:781: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('typedef ... opaque_t;const opaque_t CONSTANT;'), W_B...nknown_size'), W_BytesObject('typedef int opaque_t;const int CONSTANT = 42;')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: w_result = activation._run(space, scope_w) except DescrMismatch: if w_obj is not None: args = args.prepend(w_obj) return self._type_unwrap_mismatch(space, args) except Exception as e: > self.handle_exception(space, e) interpreter\gateway.py:795: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> space = StdObjSpace e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def handle_exception(self, space, e): try: if not we_are_translated(): raise raise e except OperationError: raise except Exception as e: # general fall-back from pypy.interpreter import error > raise error.get_converted_unexpected_exception(space, e) interpreter\gateway.py:819: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('typedef ... opaque_t;const opaque_t CONSTANT;'), W_B...nknown_size'), W_BytesObject('typedef int opaque_t;const int CONSTANT = 42;')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: > w_result = activation._run(space, scope_w) interpreter\gateway.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinActivation_UwS_ObjSpace_text_text_text_W_Root_W_Root_W_Root_int_W_Root object at 0x000002791c13af38> space = StdObjSpace scope_w = [W_BytesObject('typedef ... opaque_t;const opaque_t CONSTANT;'), W_BytesObject('test_constant_of_unknown_size'), W_BytesObject('typedef int opaque_t;const int CONSTANT = 42;'), None, None, None, ...] def _run(self, space, scope_w): > return self.behavior(space, space.text_w(scope_w[0]), space.text_w(scope_w[1]), space.text_w(scope_w[2]), scope_w[3], scope_w[4], scope_w[5], space.gateway_int_w(scope_w[6]), scope_w[7]) <3152-codegen d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\rpython\tool\sourcetools.py:200>:3: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace, cdef = 'typedef ... opaque_t;const opaque_t CONSTANT;' module_name = '_CFFI_test_constant_of_unknown_size' source = 'typedef int opaque_t;const int CONSTANT = 42;', w_includes = None w_extra_source = None, w_min_version = None, packed = 0 w_extra_compile_args = None @unwrap_spec(cdef='text', module_name='text', source='text', packed=int) def prepare(space, cdef, module_name, source, w_includes=None, w_extra_source=None, w_min_version=None, packed=False, w_extra_compile_args=None): try: import cffi from cffi import FFI # <== the system one, which from cffi import recompiler # needs to be at least cffi 1.0.4 from cffi import ffiplatform except ImportError: pytest.skip("system cffi module not found or older than 1.0.0") if w_min_version is None: min_version = (1, 4, 0) else: min_version = tuple(space.unwrap(w_min_version)) if cffi.__version_info__ < min_version: pytest.skip("system cffi module needs to be at least %s, got %s" % ( min_version, cffi.__version_info__)) space.appexec([], """(): import _cffi_backend # force it to be initialized """) includes = [] if w_includes: includes += space.unpackiterable(w_includes) assert module_name.startswith('test_') module_name = '_CFFI_' + module_name rdir = udir.ensure('recompiler', dir=1) rdir.join('Python.h').write( '#include <stdio.h>\n' '#define PYPY_VERSION XX\n' '#define PyMODINIT_FUNC /*exported*/ void\n' ) path = module_name.replace('.', os.sep) if '.' in module_name: subrdir = rdir.join(module_name[:module_name.index('.')]) os.mkdir(str(subrdir)) else: subrdir = rdir c_file = str(rdir.join('%s.c' % path)) ffi = FFI() for include_ffi_object in includes: ffi.include(include_ffi_object._test_recompiler_source_ffi) ffi.cdef(cdef, packed=packed) ffi.set_source(module_name, source) ffi.emit_c_code(c_file) base_module_name = module_name.split('.')[-1] sources = [] if w_extra_source is not None: sources.append(space.str_w(w_extra_source)) kwargs = {} # GCC 14 promotes -Wincompatible-pointer-types from a warning to an error # by default, which breaks cffi's intentionally-mismatched field-check # probes (e.g. test_misdeclared_field_1). Keep it a warning so the module # compiles and cffi's runtime checks can run. extra = ['-Wno-error=incompatible-pointer-types'] if w_extra_compile_args is not None: extra = extra + space.unwrap(w_extra_compile_args) kwargs['extra_compile_args'] = extra ext = ffiplatform.get_extension(c_file, module_name, include_dirs=[str(rdir)], export_symbols=['_cffi_pypyinit_' + base_module_name], sources=sources, **kwargs) > ffiplatform.compile(str(rdir), ext) module\_cffi_backend\test\test_recompiler.py:86: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x00000279251d7ba0> compiler_verbose = 0, debug = None def compile(tmpdir, ext, compiler_verbose=0, debug=None): """Compile a C extension module using distutils.""" saved_environ = os.environ.copy() try: > outputfilename = _build(tmpdir, ext, compiler_verbose, debug) d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x00000279251d7ba0> compiler_verbose = 0, debug = 0 def _build(tmpdir, ext, compiler_verbose=0, debug=None): # XXX compact but horrible :-( from cffi._shimmed_dist_utils import Distribution, CompileError, LinkError, set_threshold, set_verbosity dist = Distribution({'ext_modules': [ext]}) dist.parse_config_files() options = dist.get_option_dict('build_ext') if debug is None: debug = sys.flags.debug options['debug'] = ('ffiplatform', debug) options['force'] = ('ffiplatform', True) options['build_lib'] = ('ffiplatform', tmpdir) options['build_temp'] = ('ffiplatform', tmpdir) # try: old_level = set_threshold(0) or 0 try: set_verbosity(compiler_verbose) dist.run_command('build_ext') cmd_obj = dist.get_command_obj('build_ext') [soname] = cmd_obj.get_outputs() finally: set_threshold(old_level) except (CompileError, LinkError) as e: > raise VerificationError('%s: %s' % (e.__class__.__name__, e)) E VerificationError: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2 d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:54: VerificationError ---------------------------- Captured stdout call ----------------------------- generating d:\systemtemp\pytest\usession-main-595\recompiler\_CFFI_test_constant_of_unknown_size.c ---------------------------- Captured stderr call ----------------------------- cl : Command line error D8021 : invalid numeric argument '/Wno-error=incompatible-pointer-types' _______________ AppTestRecompiler.test_variable_of_unknown_size _______________ self = <CallInfo when='call' exception: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2> func = <function <lambda> at 0x000002792c976f20>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ..\_pytest\runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ..\_pytest\runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_variable_of_unknown_size'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_variable_of_unknown_size'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ..\_pytest\vendored_packages\pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00000279153616a8> hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_variable_of_unknown_size'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_variable_of_unknown_size'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ..\_pytest\vendored_packages\pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_variable_of_unknown_size'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_variable_of_unknown_size'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ..\_pytest\vendored_packages\pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_variable_of_unknown_size'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791aabc958> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...known_size'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792679e420> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792679e420> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...known_size'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_variable_of_unknown_size'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791aabc8e0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...known_size'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792679e3e0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792679e3e0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...known_size'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_variable_of_unknown_size'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ..\_pytest\vendored_packages\pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_variable_of_unknown_size'> def pytest_runtest_call(item): try: > item.runtest() ..\_pytest\runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_variable_of_unknown_size'> def runtest(self): target = self.obj if self.config.option.runappdirect: return target() space = target.im_self.space filename = self._getdynfilename(target) func = app2interp_temp(target.im_func, filename=filename) w_instance = self.parent.w_instance > self.execute_appex(space, func, space, w_instance) tool\pytest\apptest.py:89: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_variable_of_unknown_size'>, space = StdObjSpace target = <function test_variable_of_unknown_size at 0x000002792c977010> args = (StdObjSpace, <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>) def execute_appex(self, space, target, *args): self.space = space try: > target(*args) tool\pytest\apptest.py:30: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) w_func = <Function test_variable_of_unknown_size> args = <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8> def appcaller(space, *args_w): if not isinstance(space, ObjSpace): raise TypeError("first argument must be a space instance.") # the last argument can be an Arguments w_func = self.wget(space, name) if not args_w: return space.call_function(w_func) else: args = args_w[-1] assert args is not None if not isinstance(args, Arguments): > return space.call_function(w_func, *args_w) interpreter\gateway.py:1227: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <Function test_variable_of_unknown_size> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) nargs = 1, Function = <class 'pypy.interpreter.function.Function'> Method = <class 'pypy.interpreter.function.Method'> def call_function(self, w_func, *args_w): nargs = len(args_w) # used for pruning funccall versions if not self.config.objspace.disable_call_speedhacks and nargs < 5: # start of hack for performance from pypy.interpreter.function import Function, Method if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: if nargs < 4: func = w_func.w_function if isinstance(func, Function): return func.funccall(w_inst, *args_w) elif args_w and ( self.abstract_isinstance_w(args_w[0], w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): > return w_func.funccall(*args_w) interpreter\baseobjspace.py:1210: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <Function test_variable_of_unknown_size> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) gateway = <module 'pypy.interpreter.gateway' from 'd:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\interpreter\\gateway.pyc'> PyCode = <class 'pypy.interpreter.pycode.PyCode'> code = <code object test_variable_of_unknown_size, file '[d:\pypy_stuff\buildbot64\sl...n-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:936]', line 1> def funccall(self, *args_w): # speed hack from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit nargs = len(args_w) fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, args_w[0]) elif nargs == 2: assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, args_w[0], args_w[1]) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) return code.fastcall_3(self.space, self, args_w[0], args_w[1], args_w[2]) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) return code.fastcall_4(self.space, self, args_w[0], args_w[1], args_w[2], args_w[3]) elif (nargs | PyCode.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) if nargs < 5: new_frame = self.space.createframe(code, self.w_func_globals, self) for i in funccallunrolling: if i < nargs: new_frame.locals_cells_stack_w[i] = args_w[i] > return new_frame.run() interpreter\function.py:118: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_variable...uild\pypy\module\_cffi_backend\test\test_recompiler.py:936]', line 1> at line 5 def run(self): """Start this frame's execution.""" if self.getcode().co_flags & pycode.CO_GENERATOR: from pypy.interpreter.generator import GeneratorIterator return GeneratorIterator(self) else: > return self.execute_frame() interpreter\pyframe.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_variable...uild\pypy\module\_cffi_backend\test\test_recompiler.py:936]', line 1> at line 5 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, executioncontext) except OperationError: raise except Exception as e: # general fall-back > raise self._convert_unexpected_exception(e) interpreter\pyframe.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_variable...uild\pypy\module\_cffi_backend\test\test_recompiler.py:936]', line 1> at line 5 e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def _convert_unexpected_exception(self, e): from pypy.interpreter import error > operr = error.get_converted_unexpected_exception(self.space, e) interpreter\pyframe.py:943: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_variable...uild\pypy\module\_cffi_backend\test\test_recompiler.py:936]', line 1> at line 5 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, > executioncontext) interpreter\pyframe.py:286: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_variable...uild\pypy\module\_cffi_backend\test\test_recompiler.py:936]', line 1> at line 5 pycode = <code object test_variable_of_unknown_size, file '[d:\pypy_stuff\buildbot64\sl...n-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:936]', line 1> next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def dispatch(self, pycode, next_instr, ec): # For the sequel, force 'next_instr' to be unsigned for performance next_instr = r_uint(next_instr) co_code = pycode.co_code try: while True: > next_instr = self.handle_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:64: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_variable...uild\pypy\module\_cffi_backend\test\test_recompiler.py:936]', line 1> at line 5 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00t\x01\x00t\x02\x00t\x03\x00|\...xc9\x0b\x00d\x07\x00|\x04\x00\xca\x02\x00d\x08\x00\xca\x02\x00d\t\x00k\x02\x00s\xea\x00t\x06\x00\x82\x01\x00d\x00\x00S' next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def handle_bytecode(self, co_code, next_instr, ec): try: > next_instr = self.dispatch_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:71: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_variable...uild\pypy\module\_cffi_backend\test\test_recompiler.py:936]', line 1> at line 5 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00t\x01\x00t\x02\x00t\x03\x00|\...xc9\x0b\x00d\x07\x00|\x04\x00\xca\x02\x00d\x08\x00\xca\x02\x00d\t\x00k\x02\x00s\xea\x00t\x06\x00\x82\x01\x00d\x00\x00S' next_instr = 18L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> @jit.unroll_safe def dispatch_bytecode(self, co_code, next_instr, ec): while True: self.last_instr = intmask(next_instr) if jit.we_are_jitted(): if self.debugdata: ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) else: # Only reload next_instr from last_instr when something that # can modify it actually ran (trace function or action # dispatcher). In the common case (no trace, positive ticker) # next_instr is unchanged and the round-trip is skipped. _d = self.debugdata if ec.space.reverse_debugging or ( _d is not None and _d.w_f_trace is not None) or ( not we_are_translated() and 'bytecode_only_trace' in ec.__dict__): ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) actionflag = ec.space.actionflag if actionflag.decrement_ticker(TICK_COUNTER_STEP) < 0: actionflag.action_dispatcher(ec, self) next_instr = r_uint(self.last_instr) opcode = ord(co_code[next_instr]) next_instr += 1 if opcode >= HAVE_ARGUMENT: lo = ord(co_code[next_instr]) hi = ord(co_code[next_instr+1]) next_instr += 2 oparg = (hi * 256) | lo else: oparg = 0 # note: the structure of the code here is such that it makes # (after translation) a big "if/elif" chain, which is then # turned into a switch(). while opcode == opcodedesc.EXTENDED_ARG.index: opcode = ord(co_code[next_instr]) if opcode < HAVE_ARGUMENT: raise BytecodeCorruption lo = ord(co_code[next_instr+1]) hi = ord(co_code[next_instr+2]) next_instr += 3 oparg = (oparg * 65536) | (hi * 256) | lo if opcode == opcodedesc.RETURN_VALUE.index: if not self.blockstack_non_empty(): self.frame_finished_execution = True # for generators raise Return w_returnvalue = self.popvalue() block = self.unrollstack(SReturnValue.kind) if block is None: self.pushvalue(w_returnvalue) raise Return else: unroller = SReturnValue(w_returnvalue) next_instr = block.handle(self, unroller) return next_instr # now inside a 'finally' block elif opcode == opcodedesc.END_FINALLY.index: unroller = self.end_finally() if isinstance(unroller, SuspendedUnroller): # go on unrolling the stack block = self.unrollstack(unroller.kind) if block is None: w_result = unroller.nomoreblocks() self.pushvalue(w_result) raise Return else: next_instr = block.handle(self, unroller) return next_instr elif opcode == opcodedesc.JUMP_ABSOLUTE.index: return self.jump_absolute(oparg, ec) elif opcode == opcodedesc.BREAK_LOOP.index: next_instr = self.BREAK_LOOP(oparg, next_instr) elif opcode == opcodedesc.CONTINUE_LOOP.index: return self.CONTINUE_LOOP(oparg, next_instr) elif opcode == opcodedesc.FOR_ITER.index: next_instr = self.FOR_ITER(oparg, next_instr) elif opcode == opcodedesc.JUMP_FORWARD.index: next_instr = self.JUMP_FORWARD(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_FALSE_OR_POP.index: next_instr = self.JUMP_IF_FALSE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_NOT_DEBUG.index: next_instr = self.JUMP_IF_NOT_DEBUG(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_TRUE_OR_POP.index: next_instr = self.JUMP_IF_TRUE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_FALSE.index: next_instr = self.POP_JUMP_IF_FALSE(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_TRUE.index: next_instr = self.POP_JUMP_IF_TRUE(oparg, next_instr) elif opcode == opcodedesc.BINARY_ADD.index: self.BINARY_ADD(oparg, next_instr) elif opcode == opcodedesc.BINARY_AND.index: self.BINARY_AND(oparg, next_instr) elif opcode == opcodedesc.BINARY_DIVIDE.index: self.BINARY_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_FLOOR_DIVIDE.index: self.BINARY_FLOOR_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_LSHIFT.index: self.BINARY_LSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_MODULO.index: self.BINARY_MODULO(oparg, next_instr) elif opcode == opcodedesc.BINARY_MULTIPLY.index: self.BINARY_MULTIPLY(oparg, next_instr) elif opcode == opcodedesc.BINARY_OR.index: self.BINARY_OR(oparg, next_instr) elif opcode == opcodedesc.BINARY_POWER.index: self.BINARY_POWER(oparg, next_instr) elif opcode == opcodedesc.BINARY_RSHIFT.index: self.BINARY_RSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBSCR.index: self.BINARY_SUBSCR(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBTRACT.index: self.BINARY_SUBTRACT(oparg, next_instr) elif opcode == opcodedesc.BINARY_TRUE_DIVIDE.index: self.BINARY_TRUE_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_XOR.index: self.BINARY_XOR(oparg, next_instr) elif opcode == opcodedesc.BUILD_CLASS.index: self.BUILD_CLASS(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST.index: self.BUILD_LIST(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST_FROM_ARG.index: self.BUILD_LIST_FROM_ARG(oparg, next_instr) elif opcode == opcodedesc.BUILD_MAP.index: self.BUILD_MAP(oparg, next_instr) elif opcode == opcodedesc.BUILD_SET.index: self.BUILD_SET(oparg, next_instr) elif opcode == opcodedesc.BUILD_SLICE.index: self.BUILD_SLICE(oparg, next_instr) elif opcode == opcodedesc.BUILD_TUPLE.index: self.BUILD_TUPLE(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION.index: self.CALL_FUNCTION(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_KW.index: self.CALL_FUNCTION_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR.index: self.CALL_FUNCTION_VAR(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR_KW.index: self.CALL_FUNCTION_VAR_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_METHOD.index: > self.CALL_METHOD(oparg, next_instr) interpreter\pyopcode.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ f = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_variable...uild\pypy\module\_cffi_backend\test\test_recompiler.py:936]', line 1> at line 5 oparg = 3, ignored = (18L,), n_args = 3, n_kwargs = 0, w_self = None @jit.unroll_safe def CALL_METHOD(f, oparg, *ignored): # opargs contains the arg, and kwarg count, excluding the implicit 'self' n_args = oparg & 0xff n_kwargs = (oparg >> 8) & 0xff w_self = f.peekvalue_maybe_none(n_args + (2 * n_kwargs)) n = n_args + (w_self is not None) if not n_kwargs: w_callable = f.peekvalue(n_args + (2 * n_kwargs) + 1) w_result = f.space.call_valuestack( > w_callable, n, f, methodcall=w_self is not None, dropvalues=n_args + 2) objspace\std\callmethod.py:96: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_variable...uild\pypy\module\_cffi_backend\test\test_recompiler.py:936]', line 1> at line 5 dropvalues = 5, methodcall = False def call_valuestack(self, w_func, nargs, frame, dropvalues, methodcall=False): # methodcall is only used for better error messages in argument.py from pypy.interpreter.function import Function, Method, is_builtin_code if frame.get_is_being_profiled() and is_builtin_code(w_func): # XXX: this code is copied&pasted :-( from the slow path below # call_valuestack(). args = frame.make_arguments(nargs) frame.dropvalues(dropvalues) return self.call_args_and_c_profile(frame, w_func, args) if not self.config.objspace.disable_call_speedhacks: # start of hack for performance if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: w_func = w_func.w_function # reuse callable stack place for w_inst frame.settopvalue(w_inst, nargs) nargs += 1 methodcall = True elif nargs > 0 and ( self.abstract_isinstance_w(frame.peekvalue(nargs-1), # :-( w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): return w_func.funccall_valuestack( > nargs, frame, methodcall=methodcall, dropvalues=dropvalues) interpreter\baseobjspace.py:1243: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_variable...uild\pypy\module\_cffi_backend\test\test_recompiler.py:936]', line 1> at line 5 dropvalues = 5, methodcall = False def funccall_valuestack(self, nargs, frame, dropvalues, methodcall=False): # speed hack # methodcall is only for better error messages from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit # if (jit.we_are_jitted() and code is self.space._code_of_sys_exc_info and nargs == 0): frame.dropvalues(dropvalues) from pypy.module.sys.vm import exc_info_direct return exc_info_direct(self.space, frame) # fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: f_0 = frame.peekvalue(0) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, f_0) elif nargs == 2: f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, f_1, f_0) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) frame.dropvalues(dropvalues) return code.fastcall_3(self.space, self, f_2, f_1, f_0) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) f_3 = frame.peekvalue(3) frame.dropvalues(dropvalues) return code.fastcall_4(self.space, self, f_3, f_2, f_1, f_0) elif (nargs | Code.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) return self._flat_pycall(code, nargs, frame, dropvalues) elif fast_natural_arity & Code.FLATPYCALL: natural_arity = fast_natural_arity & 0xff if natural_arity > nargs >= natural_arity - len(self.defs_w): assert isinstance(code, PyCode) return self._flat_pycall_defaults(code, nargs, frame, natural_arity - nargs, dropvalues) elif fast_natural_arity == Code.PASSTHROUGHARGS1 and nargs >= 1: assert isinstance(code, gateway.BuiltinCodePassThroughArguments1) w_obj = frame.peekvalue(nargs-1) args = frame.make_arguments(nargs-1) frame.dropvalues(dropvalues) return code.funcrun_obj(self, w_obj, args) args = frame.make_arguments(nargs, methodcall=methodcall) frame.dropvalues(dropvalues) > return self.call_args(args) interpreter\function.py:190: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('\n typedef ... opaque_t;\n opa...ypedef char opaque_t[6];\n opaque_t globvar = "hello";\n ')]) def call_args(self, args): # delegate activation to code > w_res = self.getcode().funcrun(self, args) interpreter\function.py:68: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('\n typedef ... opaque_t;\n opa...ypedef char opaque_t[6];\n opaque_t globvar = "hello";\n ')]) def funcrun(self, func, args): > return BuiltinCode.funcrun_obj(self, func, None, args) interpreter\gateway.py:781: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('\n typedef ... opaque_t;\n opa...ypedef char opaque_t[6];\n opaque_t globvar = "hello";\n ')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: w_result = activation._run(space, scope_w) except DescrMismatch: if w_obj is not None: args = args.prepend(w_obj) return self._type_unwrap_mismatch(space, args) except Exception as e: > self.handle_exception(space, e) interpreter\gateway.py:795: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> space = StdObjSpace e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def handle_exception(self, space, e): try: if not we_are_translated(): raise raise e except OperationError: raise except Exception as e: # general fall-back from pypy.interpreter import error > raise error.get_converted_unexpected_exception(space, e) interpreter\gateway.py:819: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('\n typedef ... opaque_t;\n opa...ypedef char opaque_t[6];\n opaque_t globvar = "hello";\n ')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: > w_result = activation._run(space, scope_w) interpreter\gateway.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinActivation_UwS_ObjSpace_text_text_text_W_Root_W_Root_W_Root_int_W_Root object at 0x000002791c13af38> space = StdObjSpace scope_w = [W_BytesObject('\n typedef ... opaque_t;\n opaque_t globvar;\n '), W_BytesObject('test_va...t('\n typedef char opaque_t[6];\n opaque_t globvar = "hello";\n '), None, None, None, ...] def _run(self, space, scope_w): > return self.behavior(space, space.text_w(scope_w[0]), space.text_w(scope_w[1]), space.text_w(scope_w[2]), scope_w[3], scope_w[4], scope_w[5], space.gateway_int_w(scope_w[6]), scope_w[7]) <3152-codegen d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\rpython\tool\sourcetools.py:200>:3: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace cdef = '\n typedef ... opaque_t;\n opaque_t globvar;\n ' module_name = '_CFFI_test_variable_of_unknown_size' source = '\n typedef char opaque_t[6];\n opaque_t globvar = "hello";\n ' w_includes = None, w_extra_source = None, w_min_version = None, packed = 0 w_extra_compile_args = None @unwrap_spec(cdef='text', module_name='text', source='text', packed=int) def prepare(space, cdef, module_name, source, w_includes=None, w_extra_source=None, w_min_version=None, packed=False, w_extra_compile_args=None): try: import cffi from cffi import FFI # <== the system one, which from cffi import recompiler # needs to be at least cffi 1.0.4 from cffi import ffiplatform except ImportError: pytest.skip("system cffi module not found or older than 1.0.0") if w_min_version is None: min_version = (1, 4, 0) else: min_version = tuple(space.unwrap(w_min_version)) if cffi.__version_info__ < min_version: pytest.skip("system cffi module needs to be at least %s, got %s" % ( min_version, cffi.__version_info__)) space.appexec([], """(): import _cffi_backend # force it to be initialized """) includes = [] if w_includes: includes += space.unpackiterable(w_includes) assert module_name.startswith('test_') module_name = '_CFFI_' + module_name rdir = udir.ensure('recompiler', dir=1) rdir.join('Python.h').write( '#include <stdio.h>\n' '#define PYPY_VERSION XX\n' '#define PyMODINIT_FUNC /*exported*/ void\n' ) path = module_name.replace('.', os.sep) if '.' in module_name: subrdir = rdir.join(module_name[:module_name.index('.')]) os.mkdir(str(subrdir)) else: subrdir = rdir c_file = str(rdir.join('%s.c' % path)) ffi = FFI() for include_ffi_object in includes: ffi.include(include_ffi_object._test_recompiler_source_ffi) ffi.cdef(cdef, packed=packed) ffi.set_source(module_name, source) ffi.emit_c_code(c_file) base_module_name = module_name.split('.')[-1] sources = [] if w_extra_source is not None: sources.append(space.str_w(w_extra_source)) kwargs = {} # GCC 14 promotes -Wincompatible-pointer-types from a warning to an error # by default, which breaks cffi's intentionally-mismatched field-check # probes (e.g. test_misdeclared_field_1). Keep it a warning so the module # compiles and cffi's runtime checks can run. extra = ['-Wno-error=incompatible-pointer-types'] if w_extra_compile_args is not None: extra = extra + space.unwrap(w_extra_compile_args) kwargs['extra_compile_args'] = extra ext = ffiplatform.get_extension(c_file, module_name, include_dirs=[str(rdir)], export_symbols=['_cffi_pypyinit_' + base_module_name], sources=sources, **kwargs) > ffiplatform.compile(str(rdir), ext) module\_cffi_backend\test\test_recompiler.py:86: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x000002792679ebe0> compiler_verbose = 0, debug = None def compile(tmpdir, ext, compiler_verbose=0, debug=None): """Compile a C extension module using distutils.""" saved_environ = os.environ.copy() try: > outputfilename = _build(tmpdir, ext, compiler_verbose, debug) d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x000002792679ebe0> compiler_verbose = 0, debug = 0 def _build(tmpdir, ext, compiler_verbose=0, debug=None): # XXX compact but horrible :-( from cffi._shimmed_dist_utils import Distribution, CompileError, LinkError, set_threshold, set_verbosity dist = Distribution({'ext_modules': [ext]}) dist.parse_config_files() options = dist.get_option_dict('build_ext') if debug is None: debug = sys.flags.debug options['debug'] = ('ffiplatform', debug) options['force'] = ('ffiplatform', True) options['build_lib'] = ('ffiplatform', tmpdir) options['build_temp'] = ('ffiplatform', tmpdir) # try: old_level = set_threshold(0) or 0 try: set_verbosity(compiler_verbose) dist.run_command('build_ext') cmd_obj = dist.get_command_obj('build_ext') [soname] = cmd_obj.get_outputs() finally: set_threshold(old_level) except (CompileError, LinkError) as e: > raise VerificationError('%s: %s' % (e.__class__.__name__, e)) E VerificationError: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2 d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:54: VerificationError ---------------------------- Captured stdout call ----------------------------- generating d:\systemtemp\pytest\usession-main-595\recompiler\_CFFI_test_variable_of_unknown_size.c ---------------------------- Captured stderr call ----------------------------- d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\cparser.py:165: UserWarning: Global variable 'globvar' in cdef(): for consistency with C it should have a storage class specifier (usually 'extern') "(usually 'extern')" % (decl.name,)) cl : Command line error D8021 : invalid numeric argument '/Wno-error=incompatible-pointer-types' ______ AppTestRecompiler.test_constant_of_value_unknown_to_the_compiler _______ self = <CallInfo when='call' exception: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2> func = <function <lambda> at 0x00000279270c4098>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ..\_pytest\runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ..\_pytest\runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_constant_of_value_unknown_to_th...ultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_constant_of_value_unknown_to_the_compiler'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ..\_pytest\vendored_packages\pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00000279153616a8> hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_constant_of_value_unknown_to_th...ultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_constant_of_value_unknown_to_the_compiler'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ..\_pytest\vendored_packages\pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_constant_of_value_unknown_to_th...ultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_constant_of_value_unknown_to_the_compiler'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ..\_pytest\vendored_packages\pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_constant_of_value_unknown_to_the_compiler'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791ded4c00> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...e_compiler'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002791af5fca0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002791af5fca0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...e_compiler'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_constant_of_value_unknown_to_the_compiler'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791ded4bb0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...e_compiler'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002791af5fc20> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002791af5fc20> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...e_compiler'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_constant_of_value_unknown_to_the_compiler'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ..\_pytest\vendored_packages\pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_constant_of_value_unknown_to_the_compiler'> def pytest_runtest_call(item): try: > item.runtest() ..\_pytest\runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_constant_of_value_unknown_to_the_compiler'> def runtest(self): target = self.obj if self.config.option.runappdirect: return target() space = target.im_self.space filename = self._getdynfilename(target) func = app2interp_temp(target.im_func, filename=filename) w_instance = self.parent.w_instance > self.execute_appex(space, func, space, w_instance) tool\pytest\apptest.py:89: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_constant_of_value_unknown_to_the_compiler'> space = StdObjSpace target = <function test_constant_of_value_unknown_to_the_compiler at 0x00000279270c4110> args = (StdObjSpace, <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>) def execute_appex(self, space, target, *args): self.space = space try: > target(*args) tool\pytest\apptest.py:30: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) w_func = <Function test_constant_of_value_unknown_to_the_compiler> args = <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8> def appcaller(space, *args_w): if not isinstance(space, ObjSpace): raise TypeError("first argument must be a space instance.") # the last argument can be an Arguments w_func = self.wget(space, name) if not args_w: return space.call_function(w_func) else: args = args_w[-1] assert args is not None if not isinstance(args, Arguments): > return space.call_function(w_func, *args_w) interpreter\gateway.py:1227: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace w_func = <Function test_constant_of_value_unknown_to_the_compiler> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) nargs = 1, Function = <class 'pypy.interpreter.function.Function'> Method = <class 'pypy.interpreter.function.Method'> def call_function(self, w_func, *args_w): nargs = len(args_w) # used for pruning funccall versions if not self.config.objspace.disable_call_speedhacks and nargs < 5: # start of hack for performance from pypy.interpreter.function import Function, Method if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: if nargs < 4: func = w_func.w_function if isinstance(func, Function): return func.funccall(w_inst, *args_w) elif args_w and ( self.abstract_isinstance_w(args_w[0], w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): > return w_func.funccall(*args_w) interpreter\baseobjspace.py:1210: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <Function test_constant_of_value_unknown_to_the_compiler> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) gateway = <module 'pypy.interpreter.gateway' from 'd:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\interpreter\\gateway.pyc'> PyCode = <class 'pypy.interpreter.pycode.PyCode'> code = <code object test_constant_of_value_unknown_to_the_compiler, file '[d:\pypy_st...n-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:954]', line 1> def funccall(self, *args_w): # speed hack from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit nargs = len(args_w) fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, args_w[0]) elif nargs == 2: assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, args_w[0], args_w[1]) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) return code.fastcall_3(self.space, self, args_w[0], args_w[1], args_w[2]) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) return code.fastcall_4(self.space, self, args_w[0], args_w[1], args_w[2], args_w[3]) elif (nargs | PyCode.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) if nargs < 5: new_frame = self.space.createframe(code, self.w_func_globals, self) for i in funccallunrolling: if i < nargs: new_frame.locals_cells_stack_w[i] = args_w[i] > return new_frame.run() interpreter\function.py:118: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_constant...ild\pypy\module\_cffi_backend\test\test_recompiler.py:954]', line 1> at line 10 def run(self): """Start this frame's execution.""" if self.getcode().co_flags & pycode.CO_GENERATOR: from pypy.interpreter.generator import GeneratorIterator return GeneratorIterator(self) else: > return self.execute_frame() interpreter\pyframe.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_constant...ild\pypy\module\_cffi_backend\test\test_recompiler.py:954]', line 1> at line 10 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, executioncontext) except OperationError: raise except Exception as e: # general fall-back > raise self._convert_unexpected_exception(e) interpreter\pyframe.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_constant...ild\pypy\module\_cffi_backend\test\test_recompiler.py:954]', line 1> at line 10 e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def _convert_unexpected_exception(self, e): from pypy.interpreter import error > operr = error.get_converted_unexpected_exception(self.space, e) interpreter\pyframe.py:943: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_constant...ild\pypy\module\_cffi_backend\test\test_recompiler.py:954]', line 1> at line 10 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, > executioncontext) interpreter\pyframe.py:286: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_constant...ild\pypy\module\_cffi_backend\test\test_recompiler.py:954]', line 1> at line 10 pycode = <code object test_constant_of_value_unknown_to_the_compiler, file '[d:\pypy_st...n-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:954]', line 1> next_instr = 57L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def dispatch(self, pycode, next_instr, ec): # For the sequel, force 'next_instr' to be unsigned for performance next_instr = r_uint(next_instr) co_code = pycode.co_code try: while True: > next_instr = self.handle_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:64: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_constant...ild\pypy\module\_cffi_backend\test\test_recompiler.py:954]', line 1> at line 10 co_code = '|\x00\x00j\x00\x00|\x00\x00j\x01\x00\x17d\x01\x00\x17}\x01\x00t\x02\x00|\x01\x00d\x02\x00\x83\x02\x00\x8f\x14\x00}\x0...\x01\\\x02\x00}\x03\x00}\x04\x00\xcc\x15\x00|\x04\x00j\x05\x00d\x08\x00k\x02\x00sr\x00t\x06\x00\x82\x01\x00d\x00\x00SS' next_instr = 57L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def handle_bytecode(self, co_code, next_instr, ec): try: > next_instr = self.dispatch_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:71: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_constant...ild\pypy\module\_cffi_backend\test\test_recompiler.py:954]', line 1> at line 10 co_code = '|\x00\x00j\x00\x00|\x00\x00j\x01\x00\x17d\x01\x00\x17}\x01\x00t\x02\x00|\x01\x00d\x02\x00\x83\x02\x00\x8f\x14\x00}\x0...\x01\\\x02\x00}\x03\x00}\x04\x00\xcc\x15\x00|\x04\x00j\x05\x00d\x08\x00k\x02\x00sr\x00t\x06\x00\x82\x01\x00d\x00\x00SS' next_instr = 81L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> @jit.unroll_safe def dispatch_bytecode(self, co_code, next_instr, ec): while True: self.last_instr = intmask(next_instr) if jit.we_are_jitted(): if self.debugdata: ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) else: # Only reload next_instr from last_instr when something that # can modify it actually ran (trace function or action # dispatcher). In the common case (no trace, positive ticker) # next_instr is unchanged and the round-trip is skipped. _d = self.debugdata if ec.space.reverse_debugging or ( _d is not None and _d.w_f_trace is not None) or ( not we_are_translated() and 'bytecode_only_trace' in ec.__dict__): ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) actionflag = ec.space.actionflag if actionflag.decrement_ticker(TICK_COUNTER_STEP) < 0: actionflag.action_dispatcher(ec, self) next_instr = r_uint(self.last_instr) opcode = ord(co_code[next_instr]) next_instr += 1 if opcode >= HAVE_ARGUMENT: lo = ord(co_code[next_instr]) hi = ord(co_code[next_instr+1]) next_instr += 2 oparg = (hi * 256) | lo else: oparg = 0 # note: the structure of the code here is such that it makes # (after translation) a big "if/elif" chain, which is then # turned into a switch(). while opcode == opcodedesc.EXTENDED_ARG.index: opcode = ord(co_code[next_instr]) if opcode < HAVE_ARGUMENT: raise BytecodeCorruption lo = ord(co_code[next_instr+1]) hi = ord(co_code[next_instr+2]) next_instr += 3 oparg = (oparg * 65536) | (hi * 256) | lo if opcode == opcodedesc.RETURN_VALUE.index: if not self.blockstack_non_empty(): self.frame_finished_execution = True # for generators raise Return w_returnvalue = self.popvalue() block = self.unrollstack(SReturnValue.kind) if block is None: self.pushvalue(w_returnvalue) raise Return else: unroller = SReturnValue(w_returnvalue) next_instr = block.handle(self, unroller) return next_instr # now inside a 'finally' block elif opcode == opcodedesc.END_FINALLY.index: unroller = self.end_finally() if isinstance(unroller, SuspendedUnroller): # go on unrolling the stack block = self.unrollstack(unroller.kind) if block is None: w_result = unroller.nomoreblocks() self.pushvalue(w_result) raise Return else: next_instr = block.handle(self, unroller) return next_instr elif opcode == opcodedesc.JUMP_ABSOLUTE.index: return self.jump_absolute(oparg, ec) elif opcode == opcodedesc.BREAK_LOOP.index: next_instr = self.BREAK_LOOP(oparg, next_instr) elif opcode == opcodedesc.CONTINUE_LOOP.index: return self.CONTINUE_LOOP(oparg, next_instr) elif opcode == opcodedesc.FOR_ITER.index: next_instr = self.FOR_ITER(oparg, next_instr) elif opcode == opcodedesc.JUMP_FORWARD.index: next_instr = self.JUMP_FORWARD(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_FALSE_OR_POP.index: next_instr = self.JUMP_IF_FALSE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_NOT_DEBUG.index: next_instr = self.JUMP_IF_NOT_DEBUG(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_TRUE_OR_POP.index: next_instr = self.JUMP_IF_TRUE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_FALSE.index: next_instr = self.POP_JUMP_IF_FALSE(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_TRUE.index: next_instr = self.POP_JUMP_IF_TRUE(oparg, next_instr) elif opcode == opcodedesc.BINARY_ADD.index: self.BINARY_ADD(oparg, next_instr) elif opcode == opcodedesc.BINARY_AND.index: self.BINARY_AND(oparg, next_instr) elif opcode == opcodedesc.BINARY_DIVIDE.index: self.BINARY_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_FLOOR_DIVIDE.index: self.BINARY_FLOOR_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_LSHIFT.index: self.BINARY_LSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_MODULO.index: self.BINARY_MODULO(oparg, next_instr) elif opcode == opcodedesc.BINARY_MULTIPLY.index: self.BINARY_MULTIPLY(oparg, next_instr) elif opcode == opcodedesc.BINARY_OR.index: self.BINARY_OR(oparg, next_instr) elif opcode == opcodedesc.BINARY_POWER.index: self.BINARY_POWER(oparg, next_instr) elif opcode == opcodedesc.BINARY_RSHIFT.index: self.BINARY_RSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBSCR.index: self.BINARY_SUBSCR(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBTRACT.index: self.BINARY_SUBTRACT(oparg, next_instr) elif opcode == opcodedesc.BINARY_TRUE_DIVIDE.index: self.BINARY_TRUE_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_XOR.index: self.BINARY_XOR(oparg, next_instr) elif opcode == opcodedesc.BUILD_CLASS.index: self.BUILD_CLASS(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST.index: self.BUILD_LIST(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST_FROM_ARG.index: self.BUILD_LIST_FROM_ARG(oparg, next_instr) elif opcode == opcodedesc.BUILD_MAP.index: self.BUILD_MAP(oparg, next_instr) elif opcode == opcodedesc.BUILD_SET.index: self.BUILD_SET(oparg, next_instr) elif opcode == opcodedesc.BUILD_SLICE.index: self.BUILD_SLICE(oparg, next_instr) elif opcode == opcodedesc.BUILD_TUPLE.index: self.BUILD_TUPLE(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION.index: self.CALL_FUNCTION(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_KW.index: self.CALL_FUNCTION_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR.index: self.CALL_FUNCTION_VAR(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR_KW.index: self.CALL_FUNCTION_VAR_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_METHOD.index: > self.CALL_METHOD(oparg, next_instr) interpreter\pyopcode.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ f = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_constant...ild\pypy\module\_cffi_backend\test\test_recompiler.py:954]', line 1> at line 10 oparg = 259, ignored = (81L,), n_args = 3, n_kwargs = -1, w_self = None @jit.unroll_safe def CALL_METHOD(f, oparg, *ignored): # opargs contains the arg, and kwarg count, excluding the implicit 'self' n_args = oparg & 0xff n_kwargs = (oparg >> 8) & 0xff w_self = f.peekvalue_maybe_none(n_args + (2 * n_kwargs)) n = n_args + (w_self is not None) if not n_kwargs: w_callable = f.peekvalue(n_args + (2 * n_kwargs) + 1) w_result = f.space.call_valuestack( w_callable, n, f, methodcall=w_self is not None, dropvalues=n_args + 2) else: keywords = [None] * n_kwargs keywords_w = [None] * n_kwargs while True: n_kwargs -= 1 if n_kwargs < 0: break w_value = f.popvalue() w_key = f.popvalue() key = f.space.text_w(w_key) keywords[n_kwargs] = key keywords_w[n_kwargs] = w_value arguments = f.popvalues(n) # includes w_self if it is not None args = f.argument_factory( arguments, keywords, keywords_w, None, None, methodcall=w_self is not None) if w_self is None: f.popvalue_maybe_none() # removes w_self, which is None w_callable = f.popvalue() if f.get_is_being_profiled() and function.is_builtin_code(w_callable): w_result = f.space.call_args_and_c_profile(f, w_callable, args) else: > w_result = f.space.call_args(w_callable, args) objspace\std\callmethod.py:120: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace, w_obj = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('const int external_foo;'), W_BytesObject('test_const...\\usession-main-595\\extra_test_constant_of_value_unknown_to_the_compiler.c')]) def call_args(space, w_obj, args): # two special cases for performance if isinstance(w_obj, Function): > return w_obj.call_args(args) objspace\descroperation.py:186: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('const int external_foo;'), W_BytesObject('test_const...\\usession-main-595\\extra_test_constant_of_value_unknown_to_the_compiler.c')]) def call_args(self, args): # delegate activation to code > w_res = self.getcode().funcrun(self, args) interpreter\function.py:68: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('const int external_foo;'), W_BytesObject('test_const...\\usession-main-595\\extra_test_constant_of_value_unknown_to_the_compiler.c')]) def funcrun(self, func, args): > return BuiltinCode.funcrun_obj(self, func, None, args) interpreter\gateway.py:781: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('const int external_foo;'), W_BytesObject('test_const...\\usession-main-595\\extra_test_constant_of_value_unknown_to_the_compiler.c')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: w_result = activation._run(space, scope_w) except DescrMismatch: if w_obj is not None: args = args.prepend(w_obj) return self._type_unwrap_mismatch(space, args) except Exception as e: > self.handle_exception(space, e) interpreter\gateway.py:795: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> space = StdObjSpace e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def handle_exception(self, space, e): try: if not we_are_translated(): raise raise e except OperationError: raise except Exception as e: # general fall-back from pypy.interpreter import error > raise error.get_converted_unexpected_exception(space, e) interpreter\gateway.py:819: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('const int external_foo;'), W_BytesObject('test_const...\\usession-main-595\\extra_test_constant_of_value_unknown_to_the_compiler.c')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: > w_result = activation._run(space, scope_w) interpreter\gateway.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinActivation_UwS_ObjSpace_text_text_text_W_Root_W_Root_W_Root_int_W_Root object at 0x000002791c13af38> space = StdObjSpace scope_w = [W_BytesObject('const int external_foo;'), W_BytesObject('test_constant_of_value_unknown_to_the_compiler'), W_BytesObj...Object('d:\\systemtemp\\pytest\\usession-main-595\\extra_test_constant_of_value_unknown_to_the_compiler.c'), None, ...] def _run(self, space, scope_w): > return self.behavior(space, space.text_w(scope_w[0]), space.text_w(scope_w[1]), space.text_w(scope_w[2]), scope_w[3], scope_w[4], scope_w[5], space.gateway_int_w(scope_w[6]), scope_w[7]) <3152-codegen d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\rpython\tool\sourcetools.py:200>:3: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace, cdef = 'const int external_foo;' module_name = '_CFFI_test_constant_of_value_unknown_to_the_compiler' source = 'extern const int external_foo;', w_includes = None w_extra_source = W_BytesObject('d:\\systemtemp\\pytest\\usession-main-595\\extra_test_constant_of_value_unknown_to_the_compiler.c') w_min_version = None, packed = 0, w_extra_compile_args = None @unwrap_spec(cdef='text', module_name='text', source='text', packed=int) def prepare(space, cdef, module_name, source, w_includes=None, w_extra_source=None, w_min_version=None, packed=False, w_extra_compile_args=None): try: import cffi from cffi import FFI # <== the system one, which from cffi import recompiler # needs to be at least cffi 1.0.4 from cffi import ffiplatform except ImportError: pytest.skip("system cffi module not found or older than 1.0.0") if w_min_version is None: min_version = (1, 4, 0) else: min_version = tuple(space.unwrap(w_min_version)) if cffi.__version_info__ < min_version: pytest.skip("system cffi module needs to be at least %s, got %s" % ( min_version, cffi.__version_info__)) space.appexec([], """(): import _cffi_backend # force it to be initialized """) includes = [] if w_includes: includes += space.unpackiterable(w_includes) assert module_name.startswith('test_') module_name = '_CFFI_' + module_name rdir = udir.ensure('recompiler', dir=1) rdir.join('Python.h').write( '#include <stdio.h>\n' '#define PYPY_VERSION XX\n' '#define PyMODINIT_FUNC /*exported*/ void\n' ) path = module_name.replace('.', os.sep) if '.' in module_name: subrdir = rdir.join(module_name[:module_name.index('.')]) os.mkdir(str(subrdir)) else: subrdir = rdir c_file = str(rdir.join('%s.c' % path)) ffi = FFI() for include_ffi_object in includes: ffi.include(include_ffi_object._test_recompiler_source_ffi) ffi.cdef(cdef, packed=packed) ffi.set_source(module_name, source) ffi.emit_c_code(c_file) base_module_name = module_name.split('.')[-1] sources = [] if w_extra_source is not None: sources.append(space.str_w(w_extra_source)) kwargs = {} # GCC 14 promotes -Wincompatible-pointer-types from a warning to an error # by default, which breaks cffi's intentionally-mismatched field-check # probes (e.g. test_misdeclared_field_1). Keep it a warning so the module # compiles and cffi's runtime checks can run. extra = ['-Wno-error=incompatible-pointer-types'] if w_extra_compile_args is not None: extra = extra + space.unwrap(w_extra_compile_args) kwargs['extra_compile_args'] = extra ext = ffiplatform.get_extension(c_file, module_name, include_dirs=[str(rdir)], export_symbols=['_cffi_pypyinit_' + base_module_name], sources=sources, **kwargs) > ffiplatform.compile(str(rdir), ext) module\_cffi_backend\test\test_recompiler.py:86: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x000002791a6a4ba0> compiler_verbose = 0, debug = None def compile(tmpdir, ext, compiler_verbose=0, debug=None): """Compile a C extension module using distutils.""" saved_environ = os.environ.copy() try: > outputfilename = _build(tmpdir, ext, compiler_verbose, debug) d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x000002791a6a4ba0> compiler_verbose = 0, debug = 0 def _build(tmpdir, ext, compiler_verbose=0, debug=None): # XXX compact but horrible :-( from cffi._shimmed_dist_utils import Distribution, CompileError, LinkError, set_threshold, set_verbosity dist = Distribution({'ext_modules': [ext]}) dist.parse_config_files() options = dist.get_option_dict('build_ext') if debug is None: debug = sys.flags.debug options['debug'] = ('ffiplatform', debug) options['force'] = ('ffiplatform', True) options['build_lib'] = ('ffiplatform', tmpdir) options['build_temp'] = ('ffiplatform', tmpdir) # try: old_level = set_threshold(0) or 0 try: set_verbosity(compiler_verbose) dist.run_command('build_ext') cmd_obj = dist.get_command_obj('build_ext') [soname] = cmd_obj.get_outputs() finally: set_threshold(old_level) except (CompileError, LinkError) as e: > raise VerificationError('%s: %s' % (e.__class__.__name__, e)) E VerificationError: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2 d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:54: VerificationError ---------------------------- Captured stdout call ----------------------------- generating d:\systemtemp\pytest\usession-main-595\recompiler\_CFFI_test_constant_of_value_unknown_to_the_compiler.c ---------------------------- Captured stderr call ----------------------------- cl : Command line error D8021 : invalid numeric argument '/Wno-error=incompatible-pointer-types' _____________ AppTestRecompiler.test_call_with_incomplete_structs _____________ self = <CallInfo when='call' exception: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2> func = <function <lambda> at 0x00000279200319e8>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ..\_pytest\runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ..\_pytest\runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_call_with_incomplete_structs'>,...icall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_call_with_incomplete_structs'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ..\_pytest\vendored_packages\pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00000279153616a8> hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_call_with_incomplete_structs'>,...icall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_call_with_incomplete_structs'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ..\_pytest\vendored_packages\pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_call_with_incomplete_structs'>,...icall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_call_with_incomplete_structs'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ..\_pytest\vendored_packages\pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_call_with_incomplete_structs'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002792be8ee80> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...te_structs'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027928b2ada0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027928b2ada0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...te_structs'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_call_with_incomplete_structs'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002792be8ed68> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...te_structs'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027928b2ad60> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027928b2ad60> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...te_structs'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_call_with_incomplete_structs'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ..\_pytest\vendored_packages\pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_call_with_incomplete_structs'> def pytest_runtest_call(item): try: > item.runtest() ..\_pytest\runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_call_with_incomplete_structs'> def runtest(self): target = self.obj if self.config.option.runappdirect: return target() space = target.im_self.space filename = self._getdynfilename(target) func = app2interp_temp(target.im_func, filename=filename) w_instance = self.parent.w_instance > self.execute_appex(space, func, space, w_instance) tool\pytest\apptest.py:89: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_call_with_incomplete_structs'>, space = StdObjSpace target = <function test_call_with_incomplete_structs at 0x0000027920031ad8> args = (StdObjSpace, <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>) def execute_appex(self, space, target, *args): self.space = space try: > target(*args) tool\pytest\apptest.py:30: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) w_func = <Function test_call_with_incomplete_structs> args = <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8> def appcaller(space, *args_w): if not isinstance(space, ObjSpace): raise TypeError("first argument must be a space instance.") # the last argument can be an Arguments w_func = self.wget(space, name) if not args_w: return space.call_function(w_func) else: args = args_w[-1] assert args is not None if not isinstance(args, Arguments): > return space.call_function(w_func, *args_w) interpreter\gateway.py:1227: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <Function test_call_with_incomplete_structs> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) nargs = 1, Function = <class 'pypy.interpreter.function.Function'> Method = <class 'pypy.interpreter.function.Method'> def call_function(self, w_func, *args_w): nargs = len(args_w) # used for pruning funccall versions if not self.config.objspace.disable_call_speedhacks and nargs < 5: # start of hack for performance from pypy.interpreter.function import Function, Method if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: if nargs < 4: func = w_func.w_function if isinstance(func, Function): return func.funccall(w_inst, *args_w) elif args_w and ( self.abstract_isinstance_w(args_w[0], w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): > return w_func.funccall(*args_w) interpreter\baseobjspace.py:1210: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <Function test_call_with_incomplete_structs> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) gateway = <module 'pypy.interpreter.gateway' from 'd:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\interpreter\\gateway.pyc'> PyCode = <class 'pypy.interpreter.pycode.PyCode'> code = <code object test_call_with_incomplete_structs, file '[d:\pypy_stuff\buildbot6...n-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:966]', line 1> def funccall(self, *args_w): # speed hack from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit nargs = len(args_w) fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, args_w[0]) elif nargs == 2: assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, args_w[0], args_w[1]) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) return code.fastcall_3(self.space, self, args_w[0], args_w[1], args_w[2]) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) return code.fastcall_4(self.space, self, args_w[0], args_w[1], args_w[2], args_w[3]) elif (nargs | PyCode.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) if nargs < 5: new_frame = self.space.createframe(code, self.w_func_globals, self) for i in funccallunrolling: if i < nargs: new_frame.locals_cells_stack_w[i] = args_w[i] > return new_frame.run() interpreter\function.py:118: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_call_wit...uild\pypy\module\_cffi_backend\test\test_recompiler.py:966]', line 1> at line 7 def run(self): """Start this frame's execution.""" if self.getcode().co_flags & pycode.CO_GENERATOR: from pypy.interpreter.generator import GeneratorIterator return GeneratorIterator(self) else: > return self.execute_frame() interpreter\pyframe.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_call_wit...uild\pypy\module\_cffi_backend\test\test_recompiler.py:966]', line 1> at line 7 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, executioncontext) except OperationError: raise except Exception as e: # general fall-back > raise self._convert_unexpected_exception(e) interpreter\pyframe.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_call_wit...uild\pypy\module\_cffi_backend\test\test_recompiler.py:966]', line 1> at line 7 e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def _convert_unexpected_exception(self, e): from pypy.interpreter import error > operr = error.get_converted_unexpected_exception(self.space, e) interpreter\pyframe.py:943: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_call_wit...uild\pypy\module\_cffi_backend\test\test_recompiler.py:966]', line 1> at line 7 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, > executioncontext) interpreter\pyframe.py:286: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_call_wit...uild\pypy\module\_cffi_backend\test\test_recompiler.py:966]', line 1> at line 7 pycode = <code object test_call_with_incomplete_structs, file '[d:\pypy_stuff\buildbot6...n-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:966]', line 1> next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def dispatch(self, pycode, next_instr, ec): # For the sequel, force 'next_instr' to be unsigned for performance next_instr = r_uint(next_instr) co_code = pycode.co_code try: while True: > next_instr = self.handle_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:64: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_call_wit...uild\pypy\module\_cffi_backend\test\test_recompiler.py:966]', line 1> at line 7 co_code = "|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00\xcc\x1e\x00|\x02\x00\xc9\x01...00\xca\x01\x00\xca\x01\x00d\x05\x00k\x02\x00sf\x00t\x03\x00\x82\x01\x00d\x00\x00Ssf\x00t\x03\x00\x82\x01\x00d\x00\x00S" next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def handle_bytecode(self, co_code, next_instr, ec): try: > next_instr = self.dispatch_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:71: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_call_wit...uild\pypy\module\_cffi_backend\test\test_recompiler.py:966]', line 1> at line 7 co_code = "|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00\xcc\x1e\x00|\x02\x00\xc9\x01...00\xca\x01\x00\xca\x01\x00d\x05\x00k\x02\x00sf\x00t\x03\x00\x82\x01\x00d\x00\x00Ssf\x00t\x03\x00\x82\x01\x00d\x00\x00S" next_instr = 18L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> @jit.unroll_safe def dispatch_bytecode(self, co_code, next_instr, ec): while True: self.last_instr = intmask(next_instr) if jit.we_are_jitted(): if self.debugdata: ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) else: # Only reload next_instr from last_instr when something that # can modify it actually ran (trace function or action # dispatcher). In the common case (no trace, positive ticker) # next_instr is unchanged and the round-trip is skipped. _d = self.debugdata if ec.space.reverse_debugging or ( _d is not None and _d.w_f_trace is not None) or ( not we_are_translated() and 'bytecode_only_trace' in ec.__dict__): ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) actionflag = ec.space.actionflag if actionflag.decrement_ticker(TICK_COUNTER_STEP) < 0: actionflag.action_dispatcher(ec, self) next_instr = r_uint(self.last_instr) opcode = ord(co_code[next_instr]) next_instr += 1 if opcode >= HAVE_ARGUMENT: lo = ord(co_code[next_instr]) hi = ord(co_code[next_instr+1]) next_instr += 2 oparg = (hi * 256) | lo else: oparg = 0 # note: the structure of the code here is such that it makes # (after translation) a big "if/elif" chain, which is then # turned into a switch(). while opcode == opcodedesc.EXTENDED_ARG.index: opcode = ord(co_code[next_instr]) if opcode < HAVE_ARGUMENT: raise BytecodeCorruption lo = ord(co_code[next_instr+1]) hi = ord(co_code[next_instr+2]) next_instr += 3 oparg = (oparg * 65536) | (hi * 256) | lo if opcode == opcodedesc.RETURN_VALUE.index: if not self.blockstack_non_empty(): self.frame_finished_execution = True # for generators raise Return w_returnvalue = self.popvalue() block = self.unrollstack(SReturnValue.kind) if block is None: self.pushvalue(w_returnvalue) raise Return else: unroller = SReturnValue(w_returnvalue) next_instr = block.handle(self, unroller) return next_instr # now inside a 'finally' block elif opcode == opcodedesc.END_FINALLY.index: unroller = self.end_finally() if isinstance(unroller, SuspendedUnroller): # go on unrolling the stack block = self.unrollstack(unroller.kind) if block is None: w_result = unroller.nomoreblocks() self.pushvalue(w_result) raise Return else: next_instr = block.handle(self, unroller) return next_instr elif opcode == opcodedesc.JUMP_ABSOLUTE.index: return self.jump_absolute(oparg, ec) elif opcode == opcodedesc.BREAK_LOOP.index: next_instr = self.BREAK_LOOP(oparg, next_instr) elif opcode == opcodedesc.CONTINUE_LOOP.index: return self.CONTINUE_LOOP(oparg, next_instr) elif opcode == opcodedesc.FOR_ITER.index: next_instr = self.FOR_ITER(oparg, next_instr) elif opcode == opcodedesc.JUMP_FORWARD.index: next_instr = self.JUMP_FORWARD(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_FALSE_OR_POP.index: next_instr = self.JUMP_IF_FALSE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_NOT_DEBUG.index: next_instr = self.JUMP_IF_NOT_DEBUG(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_TRUE_OR_POP.index: next_instr = self.JUMP_IF_TRUE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_FALSE.index: next_instr = self.POP_JUMP_IF_FALSE(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_TRUE.index: next_instr = self.POP_JUMP_IF_TRUE(oparg, next_instr) elif opcode == opcodedesc.BINARY_ADD.index: self.BINARY_ADD(oparg, next_instr) elif opcode == opcodedesc.BINARY_AND.index: self.BINARY_AND(oparg, next_instr) elif opcode == opcodedesc.BINARY_DIVIDE.index: self.BINARY_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_FLOOR_DIVIDE.index: self.BINARY_FLOOR_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_LSHIFT.index: self.BINARY_LSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_MODULO.index: self.BINARY_MODULO(oparg, next_instr) elif opcode == opcodedesc.BINARY_MULTIPLY.index: self.BINARY_MULTIPLY(oparg, next_instr) elif opcode == opcodedesc.BINARY_OR.index: self.BINARY_OR(oparg, next_instr) elif opcode == opcodedesc.BINARY_POWER.index: self.BINARY_POWER(oparg, next_instr) elif opcode == opcodedesc.BINARY_RSHIFT.index: self.BINARY_RSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBSCR.index: self.BINARY_SUBSCR(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBTRACT.index: self.BINARY_SUBTRACT(oparg, next_instr) elif opcode == opcodedesc.BINARY_TRUE_DIVIDE.index: self.BINARY_TRUE_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_XOR.index: self.BINARY_XOR(oparg, next_instr) elif opcode == opcodedesc.BUILD_CLASS.index: self.BUILD_CLASS(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST.index: self.BUILD_LIST(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST_FROM_ARG.index: self.BUILD_LIST_FROM_ARG(oparg, next_instr) elif opcode == opcodedesc.BUILD_MAP.index: self.BUILD_MAP(oparg, next_instr) elif opcode == opcodedesc.BUILD_SET.index: self.BUILD_SET(oparg, next_instr) elif opcode == opcodedesc.BUILD_SLICE.index: self.BUILD_SLICE(oparg, next_instr) elif opcode == opcodedesc.BUILD_TUPLE.index: self.BUILD_TUPLE(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION.index: self.CALL_FUNCTION(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_KW.index: self.CALL_FUNCTION_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR.index: self.CALL_FUNCTION_VAR(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR_KW.index: self.CALL_FUNCTION_VAR_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_METHOD.index: > self.CALL_METHOD(oparg, next_instr) interpreter\pyopcode.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ f = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_call_wit...uild\pypy\module\_cffi_backend\test\test_recompiler.py:966]', line 1> at line 7 oparg = 3, ignored = (18L,), n_args = 3, n_kwargs = 0, w_self = None @jit.unroll_safe def CALL_METHOD(f, oparg, *ignored): # opargs contains the arg, and kwarg count, excluding the implicit 'self' n_args = oparg & 0xff n_kwargs = (oparg >> 8) & 0xff w_self = f.peekvalue_maybe_none(n_args + (2 * n_kwargs)) n = n_args + (w_self is not None) if not n_kwargs: w_callable = f.peekvalue(n_args + (2 * n_kwargs) + 1) w_result = f.space.call_valuestack( > w_callable, n, f, methodcall=w_self is not None, dropvalues=n_args + 2) objspace\std\callmethod.py:96: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_call_wit...uild\pypy\module\_cffi_backend\test\test_recompiler.py:966]', line 1> at line 7 dropvalues = 5, methodcall = False def call_valuestack(self, w_func, nargs, frame, dropvalues, methodcall=False): # methodcall is only used for better error messages in argument.py from pypy.interpreter.function import Function, Method, is_builtin_code if frame.get_is_being_profiled() and is_builtin_code(w_func): # XXX: this code is copied&pasted :-( from the slow path below # call_valuestack(). args = frame.make_arguments(nargs) frame.dropvalues(dropvalues) return self.call_args_and_c_profile(frame, w_func, args) if not self.config.objspace.disable_call_speedhacks: # start of hack for performance if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: w_func = w_func.w_function # reuse callable stack place for w_inst frame.settopvalue(w_inst, nargs) nargs += 1 methodcall = True elif nargs > 0 and ( self.abstract_isinstance_w(frame.peekvalue(nargs-1), # :-( w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): return w_func.funccall_valuestack( > nargs, frame, methodcall=methodcall, dropvalues=dropvalues) interpreter\baseobjspace.py:1243: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_call_wit...uild\pypy\module\_cffi_backend\test\test_recompiler.py:966]', line 1> at line 7 dropvalues = 5, methodcall = False def funccall_valuestack(self, nargs, frame, dropvalues, methodcall=False): # speed hack # methodcall is only for better error messages from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit # if (jit.we_are_jitted() and code is self.space._code_of_sys_exc_info and nargs == 0): frame.dropvalues(dropvalues) from pypy.module.sys.vm import exc_info_direct return exc_info_direct(self.space, frame) # fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: f_0 = frame.peekvalue(0) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, f_0) elif nargs == 2: f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, f_1, f_0) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) frame.dropvalues(dropvalues) return code.fastcall_3(self.space, self, f_2, f_1, f_0) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) f_3 = frame.peekvalue(3) frame.dropvalues(dropvalues) return code.fastcall_4(self.space, self, f_3, f_2, f_1, f_0) elif (nargs | Code.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) return self._flat_pycall(code, nargs, frame, dropvalues) elif fast_natural_arity & Code.FLATPYCALL: natural_arity = fast_natural_arity & 0xff if natural_arity > nargs >= natural_arity - len(self.defs_w): assert isinstance(code, PyCode) return self._flat_pycall_defaults(code, nargs, frame, natural_arity - nargs, dropvalues) elif fast_natural_arity == Code.PASSTHROUGHARGS1 and nargs >= 1: assert isinstance(code, gateway.BuiltinCodePassThroughArguments1) w_obj = frame.peekvalue(nargs-1) args = frame.make_arguments(nargs-1) frame.dropvalues(dropvalues) return code.funcrun_obj(self, w_obj, args) args = frame.make_arguments(nargs, methodcall=methodcall) frame.dropvalues(dropvalues) > return self.call_args(args) interpreter\function.py:190: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('typedef struct {...;} foo_t; foo_t myglob; foo_t inc...rn x; }\n double increment(double x) { return x + 1; }\n ')]) def call_args(self, args): # delegate activation to code > w_res = self.getcode().funcrun(self, args) interpreter\function.py:68: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('typedef struct {...;} foo_t; foo_t myglob; foo_t inc...rn x; }\n double increment(double x) { return x + 1; }\n ')]) def funcrun(self, func, args): > return BuiltinCode.funcrun_obj(self, func, None, args) interpreter\gateway.py:781: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('typedef struct {...;} foo_t; foo_t myglob; foo_t inc...rn x; }\n double increment(double x) { return x + 1; }\n ')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: w_result = activation._run(space, scope_w) except DescrMismatch: if w_obj is not None: args = args.prepend(w_obj) return self._type_unwrap_mismatch(space, args) except Exception as e: > self.handle_exception(space, e) interpreter\gateway.py:795: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> space = StdObjSpace e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def handle_exception(self, space, e): try: if not we_are_translated(): raise raise e except OperationError: raise except Exception as e: # general fall-back from pypy.interpreter import error > raise error.get_converted_unexpected_exception(space, e) interpreter\gateway.py:819: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('typedef struct {...;} foo_t; foo_t myglob; foo_t inc...rn x; }\n double increment(double x) { return x + 1; }\n ')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: > w_result = activation._run(space, scope_w) interpreter\gateway.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinActivation_UwS_ObjSpace_text_text_text_W_Root_W_Root_W_Root_int_W_Root object at 0x000002791c13af38> space = StdObjSpace scope_w = [W_BytesObject('typedef struct {...;} foo_t; foo_t myglob; foo_t increment(foo_t s); double getx(foo_t s);'), W_BytesO...ouble myglob ...turn x; }\n double increment(double x) { return x + 1; }\n '), None, None, None, ...] def _run(self, space, scope_w): > return self.behavior(space, space.text_w(scope_w[0]), space.text_w(scope_w[1]), space.text_w(scope_w[2]), scope_w[3], scope_w[4], scope_w[5], space.gateway_int_w(scope_w[6]), scope_w[7]) <3152-codegen d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\rpython\tool\sourcetools.py:200>:3: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace cdef = 'typedef struct {...;} foo_t; foo_t myglob; foo_t increment(foo_t s); double getx(foo_t s);' module_name = '_CFFI_test_call_with_incomplete_structs' source = '\n typedef double foo_t;\n double myglob = 42.5;\n double getx(double x) { return x; }\n double increment(double x) { return x + 1; }\n ' w_includes = None, w_extra_source = None, w_min_version = None, packed = 0 w_extra_compile_args = None @unwrap_spec(cdef='text', module_name='text', source='text', packed=int) def prepare(space, cdef, module_name, source, w_includes=None, w_extra_source=None, w_min_version=None, packed=False, w_extra_compile_args=None): try: import cffi from cffi import FFI # <== the system one, which from cffi import recompiler # needs to be at least cffi 1.0.4 from cffi import ffiplatform except ImportError: pytest.skip("system cffi module not found or older than 1.0.0") if w_min_version is None: min_version = (1, 4, 0) else: min_version = tuple(space.unwrap(w_min_version)) if cffi.__version_info__ < min_version: pytest.skip("system cffi module needs to be at least %s, got %s" % ( min_version, cffi.__version_info__)) space.appexec([], """(): import _cffi_backend # force it to be initialized """) includes = [] if w_includes: includes += space.unpackiterable(w_includes) assert module_name.startswith('test_') module_name = '_CFFI_' + module_name rdir = udir.ensure('recompiler', dir=1) rdir.join('Python.h').write( '#include <stdio.h>\n' '#define PYPY_VERSION XX\n' '#define PyMODINIT_FUNC /*exported*/ void\n' ) path = module_name.replace('.', os.sep) if '.' in module_name: subrdir = rdir.join(module_name[:module_name.index('.')]) os.mkdir(str(subrdir)) else: subrdir = rdir c_file = str(rdir.join('%s.c' % path)) ffi = FFI() for include_ffi_object in includes: ffi.include(include_ffi_object._test_recompiler_source_ffi) ffi.cdef(cdef, packed=packed) ffi.set_source(module_name, source) ffi.emit_c_code(c_file) base_module_name = module_name.split('.')[-1] sources = [] if w_extra_source is not None: sources.append(space.str_w(w_extra_source)) kwargs = {} # GCC 14 promotes -Wincompatible-pointer-types from a warning to an error # by default, which breaks cffi's intentionally-mismatched field-check # probes (e.g. test_misdeclared_field_1). Keep it a warning so the module # compiles and cffi's runtime checks can run. extra = ['-Wno-error=incompatible-pointer-types'] if w_extra_compile_args is not None: extra = extra + space.unwrap(w_extra_compile_args) kwargs['extra_compile_args'] = extra ext = ffiplatform.get_extension(c_file, module_name, include_dirs=[str(rdir)], export_symbols=['_cffi_pypyinit_' + base_module_name], sources=sources, **kwargs) > ffiplatform.compile(str(rdir), ext) module\_cffi_backend\test\test_recompiler.py:86: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x0000027928b38b60> compiler_verbose = 0, debug = None def compile(tmpdir, ext, compiler_verbose=0, debug=None): """Compile a C extension module using distutils.""" saved_environ = os.environ.copy() try: > outputfilename = _build(tmpdir, ext, compiler_verbose, debug) d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x0000027928b38b60> compiler_verbose = 0, debug = 0 def _build(tmpdir, ext, compiler_verbose=0, debug=None): # XXX compact but horrible :-( from cffi._shimmed_dist_utils import Distribution, CompileError, LinkError, set_threshold, set_verbosity dist = Distribution({'ext_modules': [ext]}) dist.parse_config_files() options = dist.get_option_dict('build_ext') if debug is None: debug = sys.flags.debug options['debug'] = ('ffiplatform', debug) options['force'] = ('ffiplatform', True) options['build_lib'] = ('ffiplatform', tmpdir) options['build_temp'] = ('ffiplatform', tmpdir) # try: old_level = set_threshold(0) or 0 try: set_verbosity(compiler_verbose) dist.run_command('build_ext') cmd_obj = dist.get_command_obj('build_ext') [soname] = cmd_obj.get_outputs() finally: set_threshold(old_level) except (CompileError, LinkError) as e: > raise VerificationError('%s: %s' % (e.__class__.__name__, e)) E VerificationError: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2 d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:54: VerificationError ---------------------------- Captured stdout call ----------------------------- generating d:\systemtemp\pytest\usession-main-595\recompiler\_CFFI_test_call_with_incomplete_structs.c ---------------------------- Captured stderr call ----------------------------- d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\cparser.py:165: UserWarning: Global variable 'myglob' in cdef(): for consistency with C it should have a storage class specifier (usually 'extern') "(usually 'extern')" % (decl.name,)) cl : Command line error D8021 : invalid numeric argument '/Wno-error=incompatible-pointer-types' _____________ AppTestRecompiler.test_struct_array_guess_length_2 ______________ self = <CallInfo when='call' exception: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2> func = <function <lambda> at 0x0000027921082ea8>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ..\_pytest\runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ..\_pytest\runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_struct_array_guess_length_2'>, ...ticall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_struct_array_guess_length_2'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ..\_pytest\vendored_packages\pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00000279153616a8> hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_struct_array_guess_length_2'>, ...ticall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_struct_array_guess_length_2'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ..\_pytest\vendored_packages\pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_struct_array_guess_length_2'>, ...ticall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_struct_array_guess_length_2'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ..\_pytest\vendored_packages\pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_struct_array_guess_length_2'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791fe97ad8> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...s_length_2'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027928605b60> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027928605b60> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...s_length_2'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_struct_array_guess_length_2'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791fe97a88> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...s_length_2'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027928605b20> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027928605b20> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...s_length_2'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_struct_array_guess_length_2'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ..\_pytest\vendored_packages\pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_struct_array_guess_length_2'> def pytest_runtest_call(item): try: > item.runtest() ..\_pytest\runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_struct_array_guess_length_2'> def runtest(self): target = self.obj if self.config.option.runappdirect: return target() space = target.im_self.space filename = self._getdynfilename(target) func = app2interp_temp(target.im_func, filename=filename) w_instance = self.parent.w_instance > self.execute_appex(space, func, space, w_instance) tool\pytest\apptest.py:89: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_struct_array_guess_length_2'>, space = StdObjSpace target = <function test_struct_array_guess_length_2 at 0x0000027921082f20> args = (StdObjSpace, <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>) def execute_appex(self, space, target, *args): self.space = space try: > target(*args) tool\pytest\apptest.py:30: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) w_func = <Function test_struct_array_guess_length_2> args = <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8> def appcaller(space, *args_w): if not isinstance(space, ObjSpace): raise TypeError("first argument must be a space instance.") # the last argument can be an Arguments w_func = self.wget(space, name) if not args_w: return space.call_function(w_func) else: args = args_w[-1] assert args is not None if not isinstance(args, Arguments): > return space.call_function(w_func, *args_w) interpreter\gateway.py:1227: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <Function test_struct_array_guess_length_2> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) nargs = 1, Function = <class 'pypy.interpreter.function.Function'> Method = <class 'pypy.interpreter.function.Method'> def call_function(self, w_func, *args_w): nargs = len(args_w) # used for pruning funccall versions if not self.config.objspace.disable_call_speedhacks and nargs < 5: # start of hack for performance from pypy.interpreter.function import Function, Method if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: if nargs < 4: func = w_func.w_function if isinstance(func, Function): return func.funccall(w_inst, *args_w) elif args_w and ( self.abstract_isinstance_w(args_w[0], w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): > return w_func.funccall(*args_w) interpreter\baseobjspace.py:1210: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <Function test_struct_array_guess_length_2> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) gateway = <module 'pypy.interpreter.gateway' from 'd:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\interpreter\\gateway.pyc'> PyCode = <class 'pypy.interpreter.pycode.PyCode'> code = <code object test_struct_array_guess_length_2, file '[d:\pypy_stuff\buildbot64...n-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:981]', line 1> def funccall(self, *args_w): # speed hack from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit nargs = len(args_w) fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, args_w[0]) elif nargs == 2: assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, args_w[0], args_w[1]) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) return code.fastcall_3(self.space, self, args_w[0], args_w[1], args_w[2]) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) return code.fastcall_4(self.space, self, args_w[0], args_w[1], args_w[2], args_w[3]) elif (nargs | PyCode.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) if nargs < 5: new_frame = self.space.createframe(code, self.w_func_globals, self) for i in funccallunrolling: if i < nargs: new_frame.locals_cells_stack_w[i] = args_w[i] > return new_frame.run() interpreter\function.py:118: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_struct_a...uild\pypy\module\_cffi_backend\test\test_recompiler.py:981]', line 1> at line 5 def run(self): """Start this frame's execution.""" if self.getcode().co_flags & pycode.CO_GENERATOR: from pypy.interpreter.generator import GeneratorIterator return GeneratorIterator(self) else: > return self.execute_frame() interpreter\pyframe.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_struct_a...uild\pypy\module\_cffi_backend\test\test_recompiler.py:981]', line 1> at line 5 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, executioncontext) except OperationError: raise except Exception as e: # general fall-back > raise self._convert_unexpected_exception(e) interpreter\pyframe.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_struct_a...uild\pypy\module\_cffi_backend\test\test_recompiler.py:981]', line 1> at line 5 e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def _convert_unexpected_exception(self, e): from pypy.interpreter import error > operr = error.get_converted_unexpected_exception(self.space, e) interpreter\pyframe.py:943: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_struct_a...uild\pypy\module\_cffi_backend\test\test_recompiler.py:981]', line 1> at line 5 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, > executioncontext) interpreter\pyframe.py:286: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_struct_a...uild\pypy\module\_cffi_backend\test\test_recompiler.py:981]', line 1> at line 5 pycode = <code object test_struct_array_guess_length_2, file '[d:\pypy_stuff\buildbot64...n-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:981]', line 1> next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def dispatch(self, pycode, next_instr, ec): # For the sequel, force 'next_instr' to be unsigned for performance next_instr = r_uint(next_instr) co_code = pycode.co_code try: while True: > next_instr = self.handle_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:64: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_struct_a...uild\pypy\module\_cffi_backend\test\test_recompiler.py:981]', line 1> at line 5 co_code = "|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00\xcc(\x00|\x01\x00\xc9\x01\x0...5\x00d\x0c\x00\x19\xca\x01\x00|\x01\x00\xc9\x04\x00d\x0f\x00\xca\x01\x00k\x02\x00s?\x01t\x02\x00\x82\x01\x00d\x00\x00S" next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def handle_bytecode(self, co_code, next_instr, ec): try: > next_instr = self.dispatch_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:71: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_struct_a...uild\pypy\module\_cffi_backend\test\test_recompiler.py:981]', line 1> at line 5 co_code = "|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00\xcc(\x00|\x01\x00\xc9\x01\x0...5\x00d\x0c\x00\x19\xca\x01\x00|\x01\x00\xc9\x04\x00d\x0f\x00\xca\x01\x00k\x02\x00s?\x01t\x02\x00\x82\x01\x00d\x00\x00S" next_instr = 18L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> @jit.unroll_safe def dispatch_bytecode(self, co_code, next_instr, ec): while True: self.last_instr = intmask(next_instr) if jit.we_are_jitted(): if self.debugdata: ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) else: # Only reload next_instr from last_instr when something that # can modify it actually ran (trace function or action # dispatcher). In the common case (no trace, positive ticker) # next_instr is unchanged and the round-trip is skipped. _d = self.debugdata if ec.space.reverse_debugging or ( _d is not None and _d.w_f_trace is not None) or ( not we_are_translated() and 'bytecode_only_trace' in ec.__dict__): ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) actionflag = ec.space.actionflag if actionflag.decrement_ticker(TICK_COUNTER_STEP) < 0: actionflag.action_dispatcher(ec, self) next_instr = r_uint(self.last_instr) opcode = ord(co_code[next_instr]) next_instr += 1 if opcode >= HAVE_ARGUMENT: lo = ord(co_code[next_instr]) hi = ord(co_code[next_instr+1]) next_instr += 2 oparg = (hi * 256) | lo else: oparg = 0 # note: the structure of the code here is such that it makes # (after translation) a big "if/elif" chain, which is then # turned into a switch(). while opcode == opcodedesc.EXTENDED_ARG.index: opcode = ord(co_code[next_instr]) if opcode < HAVE_ARGUMENT: raise BytecodeCorruption lo = ord(co_code[next_instr+1]) hi = ord(co_code[next_instr+2]) next_instr += 3 oparg = (oparg * 65536) | (hi * 256) | lo if opcode == opcodedesc.RETURN_VALUE.index: if not self.blockstack_non_empty(): self.frame_finished_execution = True # for generators raise Return w_returnvalue = self.popvalue() block = self.unrollstack(SReturnValue.kind) if block is None: self.pushvalue(w_returnvalue) raise Return else: unroller = SReturnValue(w_returnvalue) next_instr = block.handle(self, unroller) return next_instr # now inside a 'finally' block elif opcode == opcodedesc.END_FINALLY.index: unroller = self.end_finally() if isinstance(unroller, SuspendedUnroller): # go on unrolling the stack block = self.unrollstack(unroller.kind) if block is None: w_result = unroller.nomoreblocks() self.pushvalue(w_result) raise Return else: next_instr = block.handle(self, unroller) return next_instr elif opcode == opcodedesc.JUMP_ABSOLUTE.index: return self.jump_absolute(oparg, ec) elif opcode == opcodedesc.BREAK_LOOP.index: next_instr = self.BREAK_LOOP(oparg, next_instr) elif opcode == opcodedesc.CONTINUE_LOOP.index: return self.CONTINUE_LOOP(oparg, next_instr) elif opcode == opcodedesc.FOR_ITER.index: next_instr = self.FOR_ITER(oparg, next_instr) elif opcode == opcodedesc.JUMP_FORWARD.index: next_instr = self.JUMP_FORWARD(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_FALSE_OR_POP.index: next_instr = self.JUMP_IF_FALSE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_NOT_DEBUG.index: next_instr = self.JUMP_IF_NOT_DEBUG(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_TRUE_OR_POP.index: next_instr = self.JUMP_IF_TRUE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_FALSE.index: next_instr = self.POP_JUMP_IF_FALSE(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_TRUE.index: next_instr = self.POP_JUMP_IF_TRUE(oparg, next_instr) elif opcode == opcodedesc.BINARY_ADD.index: self.BINARY_ADD(oparg, next_instr) elif opcode == opcodedesc.BINARY_AND.index: self.BINARY_AND(oparg, next_instr) elif opcode == opcodedesc.BINARY_DIVIDE.index: self.BINARY_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_FLOOR_DIVIDE.index: self.BINARY_FLOOR_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_LSHIFT.index: self.BINARY_LSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_MODULO.index: self.BINARY_MODULO(oparg, next_instr) elif opcode == opcodedesc.BINARY_MULTIPLY.index: self.BINARY_MULTIPLY(oparg, next_instr) elif opcode == opcodedesc.BINARY_OR.index: self.BINARY_OR(oparg, next_instr) elif opcode == opcodedesc.BINARY_POWER.index: self.BINARY_POWER(oparg, next_instr) elif opcode == opcodedesc.BINARY_RSHIFT.index: self.BINARY_RSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBSCR.index: self.BINARY_SUBSCR(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBTRACT.index: self.BINARY_SUBTRACT(oparg, next_instr) elif opcode == opcodedesc.BINARY_TRUE_DIVIDE.index: self.BINARY_TRUE_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_XOR.index: self.BINARY_XOR(oparg, next_instr) elif opcode == opcodedesc.BUILD_CLASS.index: self.BUILD_CLASS(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST.index: self.BUILD_LIST(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST_FROM_ARG.index: self.BUILD_LIST_FROM_ARG(oparg, next_instr) elif opcode == opcodedesc.BUILD_MAP.index: self.BUILD_MAP(oparg, next_instr) elif opcode == opcodedesc.BUILD_SET.index: self.BUILD_SET(oparg, next_instr) elif opcode == opcodedesc.BUILD_SLICE.index: self.BUILD_SLICE(oparg, next_instr) elif opcode == opcodedesc.BUILD_TUPLE.index: self.BUILD_TUPLE(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION.index: self.CALL_FUNCTION(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_KW.index: self.CALL_FUNCTION_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR.index: self.CALL_FUNCTION_VAR(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR_KW.index: self.CALL_FUNCTION_VAR_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_METHOD.index: > self.CALL_METHOD(oparg, next_instr) interpreter\pyopcode.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ f = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_struct_a...uild\pypy\module\_cffi_backend\test\test_recompiler.py:981]', line 1> at line 5 oparg = 3, ignored = (18L,), n_args = 3, n_kwargs = 0, w_self = None @jit.unroll_safe def CALL_METHOD(f, oparg, *ignored): # opargs contains the arg, and kwarg count, excluding the implicit 'self' n_args = oparg & 0xff n_kwargs = (oparg >> 8) & 0xff w_self = f.peekvalue_maybe_none(n_args + (2 * n_kwargs)) n = n_args + (w_self is not None) if not n_kwargs: w_callable = f.peekvalue(n_args + (2 * n_kwargs) + 1) w_result = f.space.call_valuestack( > w_callable, n, f, methodcall=w_self is not None, dropvalues=n_args + 2) objspace\std\callmethod.py:96: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_struct_a...uild\pypy\module\_cffi_backend\test\test_recompiler.py:981]', line 1> at line 5 dropvalues = 5, methodcall = False def call_valuestack(self, w_func, nargs, frame, dropvalues, methodcall=False): # methodcall is only used for better error messages in argument.py from pypy.interpreter.function import Function, Method, is_builtin_code if frame.get_is_being_profiled() and is_builtin_code(w_func): # XXX: this code is copied&pasted :-( from the slow path below # call_valuestack(). args = frame.make_arguments(nargs) frame.dropvalues(dropvalues) return self.call_args_and_c_profile(frame, w_func, args) if not self.config.objspace.disable_call_speedhacks: # start of hack for performance if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: w_func = w_func.w_function # reuse callable stack place for w_inst frame.settopvalue(w_inst, nargs) nargs += 1 methodcall = True elif nargs > 0 and ( self.abstract_isinstance_w(frame.peekvalue(nargs-1), # :-( w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): return w_func.funccall_valuestack( > nargs, frame, methodcall=methodcall, dropvalues=dropvalues) interpreter\baseobjspace.py:1243: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_struct_a...uild\pypy\module\_cffi_backend\test\test_recompiler.py:981]', line 1> at line 5 dropvalues = 5, methodcall = False def funccall_valuestack(self, nargs, frame, dropvalues, methodcall=False): # speed hack # methodcall is only for better error messages from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit # if (jit.we_are_jitted() and code is self.space._code_of_sys_exc_info and nargs == 0): frame.dropvalues(dropvalues) from pypy.module.sys.vm import exc_info_direct return exc_info_direct(self.space, frame) # fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: f_0 = frame.peekvalue(0) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, f_0) elif nargs == 2: f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, f_1, f_0) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) frame.dropvalues(dropvalues) return code.fastcall_3(self.space, self, f_2, f_1, f_0) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) f_3 = frame.peekvalue(3) frame.dropvalues(dropvalues) return code.fastcall_4(self.space, self, f_3, f_2, f_1, f_0) elif (nargs | Code.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) return self._flat_pycall(code, nargs, frame, dropvalues) elif fast_natural_arity & Code.FLATPYCALL: natural_arity = fast_natural_arity & 0xff if natural_arity > nargs >= natural_arity - len(self.defs_w): assert isinstance(code, PyCode) return self._flat_pycall_defaults(code, nargs, frame, natural_arity - nargs, dropvalues) elif fast_natural_arity == Code.PASSTHROUGHARGS1 and nargs >= 1: assert isinstance(code, gateway.BuiltinCodePassThroughArguments1) w_obj = frame.peekvalue(nargs-1) args = frame.make_arguments(nargs-1) frame.dropvalues(dropvalues) return code.funcrun_obj(self, w_obj, args) args = frame.make_arguments(nargs, methodcall=methodcall) frame.dropvalues(dropvalues) > return self.call_args(args) interpreter\function.py:190: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('struct foo_s { int a[...][...]; };'), W_BytesObject(...ess_length_2'), W_BytesObject('struct foo_s { int x; int a[5][8]; int y; };')]) def call_args(self, args): # delegate activation to code > w_res = self.getcode().funcrun(self, args) interpreter\function.py:68: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('struct foo_s { int a[...][...]; };'), W_BytesObject(...ess_length_2'), W_BytesObject('struct foo_s { int x; int a[5][8]; int y; };')]) def funcrun(self, func, args): > return BuiltinCode.funcrun_obj(self, func, None, args) interpreter\gateway.py:781: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('struct foo_s { int a[...][...]; };'), W_BytesObject(...ess_length_2'), W_BytesObject('struct foo_s { int x; int a[5][8]; int y; };')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: w_result = activation._run(space, scope_w) except DescrMismatch: if w_obj is not None: args = args.prepend(w_obj) return self._type_unwrap_mismatch(space, args) except Exception as e: > self.handle_exception(space, e) interpreter\gateway.py:795: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> space = StdObjSpace e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def handle_exception(self, space, e): try: if not we_are_translated(): raise raise e except OperationError: raise except Exception as e: # general fall-back from pypy.interpreter import error > raise error.get_converted_unexpected_exception(space, e) interpreter\gateway.py:819: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('struct foo_s { int a[...][...]; };'), W_BytesObject(...ess_length_2'), W_BytesObject('struct foo_s { int x; int a[5][8]; int y; };')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: > w_result = activation._run(space, scope_w) interpreter\gateway.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinActivation_UwS_ObjSpace_text_text_text_W_Root_W_Root_W_Root_int_W_Root object at 0x000002791c13af38> space = StdObjSpace scope_w = [W_BytesObject('struct foo_s { int a[...][...]; };'), W_BytesObject('test_struct_array_guess_length_2'), W_BytesObject('struct foo_s { int x; int a[5][8]; int y; };'), None, None, None, ...] def _run(self, space, scope_w): > return self.behavior(space, space.text_w(scope_w[0]), space.text_w(scope_w[1]), space.text_w(scope_w[2]), scope_w[3], scope_w[4], scope_w[5], space.gateway_int_w(scope_w[6]), scope_w[7]) <3152-codegen d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\rpython\tool\sourcetools.py:200>:3: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace, cdef = 'struct foo_s { int a[...][...]; };' module_name = '_CFFI_test_struct_array_guess_length_2' source = 'struct foo_s { int x; int a[5][8]; int y; };', w_includes = None w_extra_source = None, w_min_version = None, packed = 0 w_extra_compile_args = None @unwrap_spec(cdef='text', module_name='text', source='text', packed=int) def prepare(space, cdef, module_name, source, w_includes=None, w_extra_source=None, w_min_version=None, packed=False, w_extra_compile_args=None): try: import cffi from cffi import FFI # <== the system one, which from cffi import recompiler # needs to be at least cffi 1.0.4 from cffi import ffiplatform except ImportError: pytest.skip("system cffi module not found or older than 1.0.0") if w_min_version is None: min_version = (1, 4, 0) else: min_version = tuple(space.unwrap(w_min_version)) if cffi.__version_info__ < min_version: pytest.skip("system cffi module needs to be at least %s, got %s" % ( min_version, cffi.__version_info__)) space.appexec([], """(): import _cffi_backend # force it to be initialized """) includes = [] if w_includes: includes += space.unpackiterable(w_includes) assert module_name.startswith('test_') module_name = '_CFFI_' + module_name rdir = udir.ensure('recompiler', dir=1) rdir.join('Python.h').write( '#include <stdio.h>\n' '#define PYPY_VERSION XX\n' '#define PyMODINIT_FUNC /*exported*/ void\n' ) path = module_name.replace('.', os.sep) if '.' in module_name: subrdir = rdir.join(module_name[:module_name.index('.')]) os.mkdir(str(subrdir)) else: subrdir = rdir c_file = str(rdir.join('%s.c' % path)) ffi = FFI() for include_ffi_object in includes: ffi.include(include_ffi_object._test_recompiler_source_ffi) ffi.cdef(cdef, packed=packed) ffi.set_source(module_name, source) ffi.emit_c_code(c_file) base_module_name = module_name.split('.')[-1] sources = [] if w_extra_source is not None: sources.append(space.str_w(w_extra_source)) kwargs = {} # GCC 14 promotes -Wincompatible-pointer-types from a warning to an error # by default, which breaks cffi's intentionally-mismatched field-check # probes (e.g. test_misdeclared_field_1). Keep it a warning so the module # compiles and cffi's runtime checks can run. extra = ['-Wno-error=incompatible-pointer-types'] if w_extra_compile_args is not None: extra = extra + space.unwrap(w_extra_compile_args) kwargs['extra_compile_args'] = extra ext = ffiplatform.get_extension(c_file, module_name, include_dirs=[str(rdir)], export_symbols=['_cffi_pypyinit_' + base_module_name], sources=sources, **kwargs) > ffiplatform.compile(str(rdir), ext) module\_cffi_backend\test\test_recompiler.py:86: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x00000279255943a0> compiler_verbose = 0, debug = None def compile(tmpdir, ext, compiler_verbose=0, debug=None): """Compile a C extension module using distutils.""" saved_environ = os.environ.copy() try: > outputfilename = _build(tmpdir, ext, compiler_verbose, debug) d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x00000279255943a0> compiler_verbose = 0, debug = 0 def _build(tmpdir, ext, compiler_verbose=0, debug=None): # XXX compact but horrible :-( from cffi._shimmed_dist_utils import Distribution, CompileError, LinkError, set_threshold, set_verbosity dist = Distribution({'ext_modules': [ext]}) dist.parse_config_files() options = dist.get_option_dict('build_ext') if debug is None: debug = sys.flags.debug options['debug'] = ('ffiplatform', debug) options['force'] = ('ffiplatform', True) options['build_lib'] = ('ffiplatform', tmpdir) options['build_temp'] = ('ffiplatform', tmpdir) # try: old_level = set_threshold(0) or 0 try: set_verbosity(compiler_verbose) dist.run_command('build_ext') cmd_obj = dist.get_command_obj('build_ext') [soname] = cmd_obj.get_outputs() finally: set_threshold(old_level) except (CompileError, LinkError) as e: > raise VerificationError('%s: %s' % (e.__class__.__name__, e)) E VerificationError: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2 d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:54: VerificationError ---------------------------- Captured stdout call ----------------------------- generating d:\systemtemp\pytest\usession-main-595\recompiler\_CFFI_test_struct_array_guess_length_2.c ---------------------------- Captured stderr call ----------------------------- cl : Command line error D8021 : invalid numeric argument '/Wno-error=incompatible-pointer-types' _____________ AppTestRecompiler.test_struct_array_guess_length_3 ______________ self = <CallInfo when='call' exception: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2> func = <function <lambda> at 0x000002791bd6bf88>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ..\_pytest\runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ..\_pytest\runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_struct_array_guess_length_3'>, ...ticall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_struct_array_guess_length_3'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ..\_pytest\vendored_packages\pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00000279153616a8> hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_struct_array_guess_length_3'>, ...ticall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_struct_array_guess_length_3'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ..\_pytest\vendored_packages\pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_struct_array_guess_length_3'>, ...ticall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_struct_array_guess_length_3'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ..\_pytest\vendored_packages\pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_struct_array_guess_length_3'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791ef77448> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...s_length_3'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00000279260212e0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00000279260212e0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...s_length_3'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_struct_array_guess_length_3'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791ef772b8> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...s_length_3'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00000279260212a0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00000279260212a0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...s_length_3'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_struct_array_guess_length_3'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ..\_pytest\vendored_packages\pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_struct_array_guess_length_3'> def pytest_runtest_call(item): try: > item.runtest() ..\_pytest\runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_struct_array_guess_length_3'> def runtest(self): target = self.obj if self.config.option.runappdirect: return target() space = target.im_self.space filename = self._getdynfilename(target) func = app2interp_temp(target.im_func, filename=filename) w_instance = self.parent.w_instance > self.execute_appex(space, func, space, w_instance) tool\pytest\apptest.py:89: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_struct_array_guess_length_3'>, space = StdObjSpace target = <function test_struct_array_guess_length_3 at 0x0000027920575b50> args = (StdObjSpace, <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>) def execute_appex(self, space, target, *args): self.space = space try: > target(*args) tool\pytest\apptest.py:30: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) w_func = <Function test_struct_array_guess_length_3> args = <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8> def appcaller(space, *args_w): if not isinstance(space, ObjSpace): raise TypeError("first argument must be a space instance.") # the last argument can be an Arguments w_func = self.wget(space, name) if not args_w: return space.call_function(w_func) else: args = args_w[-1] assert args is not None if not isinstance(args, Arguments): > return space.call_function(w_func, *args_w) interpreter\gateway.py:1227: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <Function test_struct_array_guess_length_3> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) nargs = 1, Function = <class 'pypy.interpreter.function.Function'> Method = <class 'pypy.interpreter.function.Method'> def call_function(self, w_func, *args_w): nargs = len(args_w) # used for pruning funccall versions if not self.config.objspace.disable_call_speedhacks and nargs < 5: # start of hack for performance from pypy.interpreter.function import Function, Method if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: if nargs < 4: func = w_func.w_function if isinstance(func, Function): return func.funccall(w_inst, *args_w) elif args_w and ( self.abstract_isinstance_w(args_w[0], w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): > return w_func.funccall(*args_w) interpreter\baseobjspace.py:1210: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <Function test_struct_array_guess_length_3> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) gateway = <module 'pypy.interpreter.gateway' from 'd:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\interpreter\\gateway.pyc'> PyCode = <class 'pypy.interpreter.pycode.PyCode'> code = <code object test_struct_array_guess_length_3, file '[d:\pypy_stuff\buildbot64...n-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:996]', line 1> def funccall(self, *args_w): # speed hack from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit nargs = len(args_w) fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, args_w[0]) elif nargs == 2: assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, args_w[0], args_w[1]) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) return code.fastcall_3(self.space, self, args_w[0], args_w[1], args_w[2]) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) return code.fastcall_4(self.space, self, args_w[0], args_w[1], args_w[2], args_w[3]) elif (nargs | PyCode.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) if nargs < 5: new_frame = self.space.createframe(code, self.w_func_globals, self) for i in funccallunrolling: if i < nargs: new_frame.locals_cells_stack_w[i] = args_w[i] > return new_frame.run() interpreter\function.py:118: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_struct_a...uild\pypy\module\_cffi_backend\test\test_recompiler.py:996]', line 1> at line 5 def run(self): """Start this frame's execution.""" if self.getcode().co_flags & pycode.CO_GENERATOR: from pypy.interpreter.generator import GeneratorIterator return GeneratorIterator(self) else: > return self.execute_frame() interpreter\pyframe.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_struct_a...uild\pypy\module\_cffi_backend\test\test_recompiler.py:996]', line 1> at line 5 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, executioncontext) except OperationError: raise except Exception as e: # general fall-back > raise self._convert_unexpected_exception(e) interpreter\pyframe.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_struct_a...uild\pypy\module\_cffi_backend\test\test_recompiler.py:996]', line 1> at line 5 e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def _convert_unexpected_exception(self, e): from pypy.interpreter import error > operr = error.get_converted_unexpected_exception(self.space, e) interpreter\pyframe.py:943: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_struct_a...uild\pypy\module\_cffi_backend\test\test_recompiler.py:996]', line 1> at line 5 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, > executioncontext) interpreter\pyframe.py:286: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_struct_a...uild\pypy\module\_cffi_backend\test\test_recompiler.py:996]', line 1> at line 5 pycode = <code object test_struct_array_guess_length_3, file '[d:\pypy_stuff\buildbot64...n-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:996]', line 1> next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def dispatch(self, pycode, next_instr, ec): # For the sequel, force 'next_instr' to be unsigned for performance next_instr = r_uint(next_instr) co_code = pycode.co_code try: while True: > next_instr = self.handle_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:64: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_struct_a...uild\pypy\module\_cffi_backend\test\test_recompiler.py:996]', line 1> at line 5 co_code = "|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00\xcc(\x00|\x01\x00\xc9\x01\x0...\x00d\x0b\x00\x19\xca\x01\x00|\x01\x00\xc9\x04\x00d\r\x00\xca\x01\x00k\x02\x00s\xda\x00t\x02\x00\x82\x01\x00d\x00\x00S" next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def handle_bytecode(self, co_code, next_instr, ec): try: > next_instr = self.dispatch_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:71: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_struct_a...uild\pypy\module\_cffi_backend\test\test_recompiler.py:996]', line 1> at line 5 co_code = "|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00\xcc(\x00|\x01\x00\xc9\x01\x0...\x00d\x0b\x00\x19\xca\x01\x00|\x01\x00\xc9\x04\x00d\r\x00\xca\x01\x00k\x02\x00s\xda\x00t\x02\x00\x82\x01\x00d\x00\x00S" next_instr = 18L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> @jit.unroll_safe def dispatch_bytecode(self, co_code, next_instr, ec): while True: self.last_instr = intmask(next_instr) if jit.we_are_jitted(): if self.debugdata: ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) else: # Only reload next_instr from last_instr when something that # can modify it actually ran (trace function or action # dispatcher). In the common case (no trace, positive ticker) # next_instr is unchanged and the round-trip is skipped. _d = self.debugdata if ec.space.reverse_debugging or ( _d is not None and _d.w_f_trace is not None) or ( not we_are_translated() and 'bytecode_only_trace' in ec.__dict__): ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) actionflag = ec.space.actionflag if actionflag.decrement_ticker(TICK_COUNTER_STEP) < 0: actionflag.action_dispatcher(ec, self) next_instr = r_uint(self.last_instr) opcode = ord(co_code[next_instr]) next_instr += 1 if opcode >= HAVE_ARGUMENT: lo = ord(co_code[next_instr]) hi = ord(co_code[next_instr+1]) next_instr += 2 oparg = (hi * 256) | lo else: oparg = 0 # note: the structure of the code here is such that it makes # (after translation) a big "if/elif" chain, which is then # turned into a switch(). while opcode == opcodedesc.EXTENDED_ARG.index: opcode = ord(co_code[next_instr]) if opcode < HAVE_ARGUMENT: raise BytecodeCorruption lo = ord(co_code[next_instr+1]) hi = ord(co_code[next_instr+2]) next_instr += 3 oparg = (oparg * 65536) | (hi * 256) | lo if opcode == opcodedesc.RETURN_VALUE.index: if not self.blockstack_non_empty(): self.frame_finished_execution = True # for generators raise Return w_returnvalue = self.popvalue() block = self.unrollstack(SReturnValue.kind) if block is None: self.pushvalue(w_returnvalue) raise Return else: unroller = SReturnValue(w_returnvalue) next_instr = block.handle(self, unroller) return next_instr # now inside a 'finally' block elif opcode == opcodedesc.END_FINALLY.index: unroller = self.end_finally() if isinstance(unroller, SuspendedUnroller): # go on unrolling the stack block = self.unrollstack(unroller.kind) if block is None: w_result = unroller.nomoreblocks() self.pushvalue(w_result) raise Return else: next_instr = block.handle(self, unroller) return next_instr elif opcode == opcodedesc.JUMP_ABSOLUTE.index: return self.jump_absolute(oparg, ec) elif opcode == opcodedesc.BREAK_LOOP.index: next_instr = self.BREAK_LOOP(oparg, next_instr) elif opcode == opcodedesc.CONTINUE_LOOP.index: return self.CONTINUE_LOOP(oparg, next_instr) elif opcode == opcodedesc.FOR_ITER.index: next_instr = self.FOR_ITER(oparg, next_instr) elif opcode == opcodedesc.JUMP_FORWARD.index: next_instr = self.JUMP_FORWARD(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_FALSE_OR_POP.index: next_instr = self.JUMP_IF_FALSE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_NOT_DEBUG.index: next_instr = self.JUMP_IF_NOT_DEBUG(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_TRUE_OR_POP.index: next_instr = self.JUMP_IF_TRUE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_FALSE.index: next_instr = self.POP_JUMP_IF_FALSE(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_TRUE.index: next_instr = self.POP_JUMP_IF_TRUE(oparg, next_instr) elif opcode == opcodedesc.BINARY_ADD.index: self.BINARY_ADD(oparg, next_instr) elif opcode == opcodedesc.BINARY_AND.index: self.BINARY_AND(oparg, next_instr) elif opcode == opcodedesc.BINARY_DIVIDE.index: self.BINARY_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_FLOOR_DIVIDE.index: self.BINARY_FLOOR_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_LSHIFT.index: self.BINARY_LSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_MODULO.index: self.BINARY_MODULO(oparg, next_instr) elif opcode == opcodedesc.BINARY_MULTIPLY.index: self.BINARY_MULTIPLY(oparg, next_instr) elif opcode == opcodedesc.BINARY_OR.index: self.BINARY_OR(oparg, next_instr) elif opcode == opcodedesc.BINARY_POWER.index: self.BINARY_POWER(oparg, next_instr) elif opcode == opcodedesc.BINARY_RSHIFT.index: self.BINARY_RSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBSCR.index: self.BINARY_SUBSCR(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBTRACT.index: self.BINARY_SUBTRACT(oparg, next_instr) elif opcode == opcodedesc.BINARY_TRUE_DIVIDE.index: self.BINARY_TRUE_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_XOR.index: self.BINARY_XOR(oparg, next_instr) elif opcode == opcodedesc.BUILD_CLASS.index: self.BUILD_CLASS(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST.index: self.BUILD_LIST(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST_FROM_ARG.index: self.BUILD_LIST_FROM_ARG(oparg, next_instr) elif opcode == opcodedesc.BUILD_MAP.index: self.BUILD_MAP(oparg, next_instr) elif opcode == opcodedesc.BUILD_SET.index: self.BUILD_SET(oparg, next_instr) elif opcode == opcodedesc.BUILD_SLICE.index: self.BUILD_SLICE(oparg, next_instr) elif opcode == opcodedesc.BUILD_TUPLE.index: self.BUILD_TUPLE(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION.index: self.CALL_FUNCTION(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_KW.index: self.CALL_FUNCTION_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR.index: self.CALL_FUNCTION_VAR(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR_KW.index: self.CALL_FUNCTION_VAR_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_METHOD.index: > self.CALL_METHOD(oparg, next_instr) interpreter\pyopcode.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ f = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_struct_a...uild\pypy\module\_cffi_backend\test\test_recompiler.py:996]', line 1> at line 5 oparg = 3, ignored = (18L,), n_args = 3, n_kwargs = 0, w_self = None @jit.unroll_safe def CALL_METHOD(f, oparg, *ignored): # opargs contains the arg, and kwarg count, excluding the implicit 'self' n_args = oparg & 0xff n_kwargs = (oparg >> 8) & 0xff w_self = f.peekvalue_maybe_none(n_args + (2 * n_kwargs)) n = n_args + (w_self is not None) if not n_kwargs: w_callable = f.peekvalue(n_args + (2 * n_kwargs) + 1) w_result = f.space.call_valuestack( > w_callable, n, f, methodcall=w_self is not None, dropvalues=n_args + 2) objspace\std\callmethod.py:96: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_struct_a...uild\pypy\module\_cffi_backend\test\test_recompiler.py:996]', line 1> at line 5 dropvalues = 5, methodcall = False def call_valuestack(self, w_func, nargs, frame, dropvalues, methodcall=False): # methodcall is only used for better error messages in argument.py from pypy.interpreter.function import Function, Method, is_builtin_code if frame.get_is_being_profiled() and is_builtin_code(w_func): # XXX: this code is copied&pasted :-( from the slow path below # call_valuestack(). args = frame.make_arguments(nargs) frame.dropvalues(dropvalues) return self.call_args_and_c_profile(frame, w_func, args) if not self.config.objspace.disable_call_speedhacks: # start of hack for performance if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: w_func = w_func.w_function # reuse callable stack place for w_inst frame.settopvalue(w_inst, nargs) nargs += 1 methodcall = True elif nargs > 0 and ( self.abstract_isinstance_w(frame.peekvalue(nargs-1), # :-( w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): return w_func.funccall_valuestack( > nargs, frame, methodcall=methodcall, dropvalues=dropvalues) interpreter\baseobjspace.py:1243: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_struct_a...uild\pypy\module\_cffi_backend\test\test_recompiler.py:996]', line 1> at line 5 dropvalues = 5, methodcall = False def funccall_valuestack(self, nargs, frame, dropvalues, methodcall=False): # speed hack # methodcall is only for better error messages from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit # if (jit.we_are_jitted() and code is self.space._code_of_sys_exc_info and nargs == 0): frame.dropvalues(dropvalues) from pypy.module.sys.vm import exc_info_direct return exc_info_direct(self.space, frame) # fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: f_0 = frame.peekvalue(0) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, f_0) elif nargs == 2: f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, f_1, f_0) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) frame.dropvalues(dropvalues) return code.fastcall_3(self.space, self, f_2, f_1, f_0) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) f_3 = frame.peekvalue(3) frame.dropvalues(dropvalues) return code.fastcall_4(self.space, self, f_3, f_2, f_1, f_0) elif (nargs | Code.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) return self._flat_pycall(code, nargs, frame, dropvalues) elif fast_natural_arity & Code.FLATPYCALL: natural_arity = fast_natural_arity & 0xff if natural_arity > nargs >= natural_arity - len(self.defs_w): assert isinstance(code, PyCode) return self._flat_pycall_defaults(code, nargs, frame, natural_arity - nargs, dropvalues) elif fast_natural_arity == Code.PASSTHROUGHARGS1 and nargs >= 1: assert isinstance(code, gateway.BuiltinCodePassThroughArguments1) w_obj = frame.peekvalue(nargs-1) args = frame.make_arguments(nargs-1) frame.dropvalues(dropvalues) return code.funcrun_obj(self, w_obj, args) args = frame.make_arguments(nargs, methodcall=methodcall) frame.dropvalues(dropvalues) > return self.call_args(args) interpreter\function.py:190: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('struct foo_s { int a[][...]; };'), W_BytesObject('te...ess_length_3'), W_BytesObject('struct foo_s { int x; int a[5][7]; int y; };')]) def call_args(self, args): # delegate activation to code > w_res = self.getcode().funcrun(self, args) interpreter\function.py:68: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('struct foo_s { int a[][...]; };'), W_BytesObject('te...ess_length_3'), W_BytesObject('struct foo_s { int x; int a[5][7]; int y; };')]) def funcrun(self, func, args): > return BuiltinCode.funcrun_obj(self, func, None, args) interpreter\gateway.py:781: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('struct foo_s { int a[][...]; };'), W_BytesObject('te...ess_length_3'), W_BytesObject('struct foo_s { int x; int a[5][7]; int y; };')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: w_result = activation._run(space, scope_w) except DescrMismatch: if w_obj is not None: args = args.prepend(w_obj) return self._type_unwrap_mismatch(space, args) except Exception as e: > self.handle_exception(space, e) interpreter\gateway.py:795: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> space = StdObjSpace e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def handle_exception(self, space, e): try: if not we_are_translated(): raise raise e except OperationError: raise except Exception as e: # general fall-back from pypy.interpreter import error > raise error.get_converted_unexpected_exception(space, e) interpreter\gateway.py:819: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('struct foo_s { int a[][...]; };'), W_BytesObject('te...ess_length_3'), W_BytesObject('struct foo_s { int x; int a[5][7]; int y; };')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: > w_result = activation._run(space, scope_w) interpreter\gateway.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinActivation_UwS_ObjSpace_text_text_text_W_Root_W_Root_W_Root_int_W_Root object at 0x000002791c13af38> space = StdObjSpace scope_w = [W_BytesObject('struct foo_s { int a[][...]; };'), W_BytesObject('test_struct_array_guess_length_3'), W_BytesObject('struct foo_s { int x; int a[5][7]; int y; };'), None, None, None, ...] def _run(self, space, scope_w): > return self.behavior(space, space.text_w(scope_w[0]), space.text_w(scope_w[1]), space.text_w(scope_w[2]), scope_w[3], scope_w[4], scope_w[5], space.gateway_int_w(scope_w[6]), scope_w[7]) <3152-codegen d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\rpython\tool\sourcetools.py:200>:3: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace, cdef = 'struct foo_s { int a[][...]; };' module_name = '_CFFI_test_struct_array_guess_length_3' source = 'struct foo_s { int x; int a[5][7]; int y; };', w_includes = None w_extra_source = None, w_min_version = None, packed = 0 w_extra_compile_args = None @unwrap_spec(cdef='text', module_name='text', source='text', packed=int) def prepare(space, cdef, module_name, source, w_includes=None, w_extra_source=None, w_min_version=None, packed=False, w_extra_compile_args=None): try: import cffi from cffi import FFI # <== the system one, which from cffi import recompiler # needs to be at least cffi 1.0.4 from cffi import ffiplatform except ImportError: pytest.skip("system cffi module not found or older than 1.0.0") if w_min_version is None: min_version = (1, 4, 0) else: min_version = tuple(space.unwrap(w_min_version)) if cffi.__version_info__ < min_version: pytest.skip("system cffi module needs to be at least %s, got %s" % ( min_version, cffi.__version_info__)) space.appexec([], """(): import _cffi_backend # force it to be initialized """) includes = [] if w_includes: includes += space.unpackiterable(w_includes) assert module_name.startswith('test_') module_name = '_CFFI_' + module_name rdir = udir.ensure('recompiler', dir=1) rdir.join('Python.h').write( '#include <stdio.h>\n' '#define PYPY_VERSION XX\n' '#define PyMODINIT_FUNC /*exported*/ void\n' ) path = module_name.replace('.', os.sep) if '.' in module_name: subrdir = rdir.join(module_name[:module_name.index('.')]) os.mkdir(str(subrdir)) else: subrdir = rdir c_file = str(rdir.join('%s.c' % path)) ffi = FFI() for include_ffi_object in includes: ffi.include(include_ffi_object._test_recompiler_source_ffi) ffi.cdef(cdef, packed=packed) ffi.set_source(module_name, source) ffi.emit_c_code(c_file) base_module_name = module_name.split('.')[-1] sources = [] if w_extra_source is not None: sources.append(space.str_w(w_extra_source)) kwargs = {} # GCC 14 promotes -Wincompatible-pointer-types from a warning to an error # by default, which breaks cffi's intentionally-mismatched field-check # probes (e.g. test_misdeclared_field_1). Keep it a warning so the module # compiles and cffi's runtime checks can run. extra = ['-Wno-error=incompatible-pointer-types'] if w_extra_compile_args is not None: extra = extra + space.unwrap(w_extra_compile_args) kwargs['extra_compile_args'] = extra ext = ffiplatform.get_extension(c_file, module_name, include_dirs=[str(rdir)], export_symbols=['_cffi_pypyinit_' + base_module_name], sources=sources, **kwargs) > ffiplatform.compile(str(rdir), ext) module\_cffi_backend\test\test_recompiler.py:86: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x0000027926021b20> compiler_verbose = 0, debug = None def compile(tmpdir, ext, compiler_verbose=0, debug=None): """Compile a C extension module using distutils.""" saved_environ = os.environ.copy() try: > outputfilename = _build(tmpdir, ext, compiler_verbose, debug) d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x0000027926021b20> compiler_verbose = 0, debug = 0 def _build(tmpdir, ext, compiler_verbose=0, debug=None): # XXX compact but horrible :-( from cffi._shimmed_dist_utils import Distribution, CompileError, LinkError, set_threshold, set_verbosity dist = Distribution({'ext_modules': [ext]}) dist.parse_config_files() options = dist.get_option_dict('build_ext') if debug is None: debug = sys.flags.debug options['debug'] = ('ffiplatform', debug) options['force'] = ('ffiplatform', True) options['build_lib'] = ('ffiplatform', tmpdir) options['build_temp'] = ('ffiplatform', tmpdir) # try: old_level = set_threshold(0) or 0 try: set_verbosity(compiler_verbose) dist.run_command('build_ext') cmd_obj = dist.get_command_obj('build_ext') [soname] = cmd_obj.get_outputs() finally: set_threshold(old_level) except (CompileError, LinkError) as e: > raise VerificationError('%s: %s' % (e.__class__.__name__, e)) E VerificationError: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2 d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:54: VerificationError ---------------------------- Captured stdout call ----------------------------- generating d:\systemtemp\pytest\usession-main-595\recompiler\_CFFI_test_struct_array_guess_length_3.c ---------------------------- Captured stderr call ----------------------------- cl : Command line error D8021 : invalid numeric argument '/Wno-error=incompatible-pointer-types' __________________ AppTestRecompiler.test_global_var_array_2 __________________ self = <CallInfo when='call' exception: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2> func = <function <lambda> at 0x0000027927822980>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ..\_pytest\runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ..\_pytest\runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_global_var_array_2'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_global_var_array_2'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ..\_pytest\vendored_packages\pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00000279153616a8> hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_global_var_array_2'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_global_var_array_2'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ..\_pytest\vendored_packages\pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_global_var_array_2'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_global_var_array_2'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ..\_pytest\vendored_packages\pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_global_var_array_2'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791dfe5880> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...ar_array_2'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00000279204cc760> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00000279204cc760> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...ar_array_2'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_global_var_array_2'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791dfe5830> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...ar_array_2'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00000279204cc720> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00000279204cc720> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...ar_array_2'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_global_var_array_2'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ..\_pytest\vendored_packages\pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_global_var_array_2'> def pytest_runtest_call(item): try: > item.runtest() ..\_pytest\runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_global_var_array_2'> def runtest(self): target = self.obj if self.config.option.runappdirect: return target() space = target.im_self.space filename = self._getdynfilename(target) func = app2interp_temp(target.im_func, filename=filename) w_instance = self.parent.w_instance > self.execute_appex(space, func, space, w_instance) tool\pytest\apptest.py:89: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_global_var_array_2'>, space = StdObjSpace target = <function test_global_var_array_2 at 0x0000027927822d40> args = (StdObjSpace, <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>) def execute_appex(self, space, target, *args): self.space = space try: > target(*args) tool\pytest\apptest.py:30: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) w_func = <Function test_global_var_array_2> args = <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8> def appcaller(space, *args_w): if not isinstance(space, ObjSpace): raise TypeError("first argument must be a space instance.") # the last argument can be an Arguments w_func = self.wget(space, name) if not args_w: return space.call_function(w_func) else: args = args_w[-1] assert args is not None if not isinstance(args, Arguments): > return space.call_function(w_func, *args_w) interpreter\gateway.py:1227: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <Function test_global_var_array_2> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) nargs = 1, Function = <class 'pypy.interpreter.function.Function'> Method = <class 'pypy.interpreter.function.Method'> def call_function(self, w_func, *args_w): nargs = len(args_w) # used for pruning funccall versions if not self.config.objspace.disable_call_speedhacks and nargs < 5: # start of hack for performance from pypy.interpreter.function import Function, Method if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: if nargs < 4: func = w_func.w_function if isinstance(func, Function): return func.funccall(w_inst, *args_w) elif args_w and ( self.abstract_isinstance_w(args_w[0], w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): > return w_func.funccall(*args_w) interpreter\baseobjspace.py:1210: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <Function test_global_var_array_2> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) gateway = <module 'pypy.interpreter.gateway' from 'd:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\interpreter\\gateway.pyc'> PyCode = <class 'pypy.interpreter.pycode.PyCode'> code = <code object test_global_var_array_2, file '[d:\pypy_stuff\buildbot64\slave\ow...-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:1008]', line 1> def funccall(self, *args_w): # speed hack from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit nargs = len(args_w) fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, args_w[0]) elif nargs == 2: assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, args_w[0], args_w[1]) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) return code.fastcall_3(self.space, self, args_w[0], args_w[1], args_w[2]) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) return code.fastcall_4(self.space, self, args_w[0], args_w[1], args_w[2], args_w[3]) elif (nargs | PyCode.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) if nargs < 5: new_frame = self.space.createframe(code, self.w_func_globals, self) for i in funccallunrolling: if i < nargs: new_frame.locals_cells_stack_w[i] = args_w[i] > return new_frame.run() interpreter\function.py:118: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_global_v...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1008]', line 1> at line 5 def run(self): """Start this frame's execution.""" if self.getcode().co_flags & pycode.CO_GENERATOR: from pypy.interpreter.generator import GeneratorIterator return GeneratorIterator(self) else: > return self.execute_frame() interpreter\pyframe.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_global_v...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1008]', line 1> at line 5 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, executioncontext) except OperationError: raise except Exception as e: # general fall-back > raise self._convert_unexpected_exception(e) interpreter\pyframe.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_global_v...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1008]', line 1> at line 5 e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def _convert_unexpected_exception(self, e): from pypy.interpreter import error > operr = error.get_converted_unexpected_exception(self.space, e) interpreter\pyframe.py:943: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_global_v...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1008]', line 1> at line 5 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, > executioncontext) interpreter\pyframe.py:286: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_global_v...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1008]', line 1> at line 5 pycode = <code object test_global_var_array_2, file '[d:\pypy_stuff\buildbot64\slave\ow...-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:1008]', line 1> next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def dispatch(self, pycode, next_instr, ec): # For the sequel, force 'next_instr' to be unsigned for performance next_instr = r_uint(next_instr) co_code = pycode.co_code try: while True: > next_instr = self.handle_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:64: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_global_v...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1008]', line 1> at line 5 co_code = "|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00d\x04\x00|\x02\x00j\x01\x00d\...\x00d\n\x00\x19\xca\x01\x00|\x01\x00\xc9\x05\x00d\x0b\x00\xca\x01\x00k\x02\x00s\xbe\x00t\x02\x00\x82\x01\x00d\x00\x00S" next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def handle_bytecode(self, co_code, next_instr, ec): try: > next_instr = self.dispatch_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:71: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_global_v...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1008]', line 1> at line 5 co_code = "|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00d\x04\x00|\x02\x00j\x01\x00d\...\x00d\n\x00\x19\xca\x01\x00|\x01\x00\xc9\x05\x00d\x0b\x00\xca\x01\x00k\x02\x00s\xbe\x00t\x02\x00\x82\x01\x00d\x00\x00S" next_instr = 18L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> @jit.unroll_safe def dispatch_bytecode(self, co_code, next_instr, ec): while True: self.last_instr = intmask(next_instr) if jit.we_are_jitted(): if self.debugdata: ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) else: # Only reload next_instr from last_instr when something that # can modify it actually ran (trace function or action # dispatcher). In the common case (no trace, positive ticker) # next_instr is unchanged and the round-trip is skipped. _d = self.debugdata if ec.space.reverse_debugging or ( _d is not None and _d.w_f_trace is not None) or ( not we_are_translated() and 'bytecode_only_trace' in ec.__dict__): ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) actionflag = ec.space.actionflag if actionflag.decrement_ticker(TICK_COUNTER_STEP) < 0: actionflag.action_dispatcher(ec, self) next_instr = r_uint(self.last_instr) opcode = ord(co_code[next_instr]) next_instr += 1 if opcode >= HAVE_ARGUMENT: lo = ord(co_code[next_instr]) hi = ord(co_code[next_instr+1]) next_instr += 2 oparg = (hi * 256) | lo else: oparg = 0 # note: the structure of the code here is such that it makes # (after translation) a big "if/elif" chain, which is then # turned into a switch(). while opcode == opcodedesc.EXTENDED_ARG.index: opcode = ord(co_code[next_instr]) if opcode < HAVE_ARGUMENT: raise BytecodeCorruption lo = ord(co_code[next_instr+1]) hi = ord(co_code[next_instr+2]) next_instr += 3 oparg = (oparg * 65536) | (hi * 256) | lo if opcode == opcodedesc.RETURN_VALUE.index: if not self.blockstack_non_empty(): self.frame_finished_execution = True # for generators raise Return w_returnvalue = self.popvalue() block = self.unrollstack(SReturnValue.kind) if block is None: self.pushvalue(w_returnvalue) raise Return else: unroller = SReturnValue(w_returnvalue) next_instr = block.handle(self, unroller) return next_instr # now inside a 'finally' block elif opcode == opcodedesc.END_FINALLY.index: unroller = self.end_finally() if isinstance(unroller, SuspendedUnroller): # go on unrolling the stack block = self.unrollstack(unroller.kind) if block is None: w_result = unroller.nomoreblocks() self.pushvalue(w_result) raise Return else: next_instr = block.handle(self, unroller) return next_instr elif opcode == opcodedesc.JUMP_ABSOLUTE.index: return self.jump_absolute(oparg, ec) elif opcode == opcodedesc.BREAK_LOOP.index: next_instr = self.BREAK_LOOP(oparg, next_instr) elif opcode == opcodedesc.CONTINUE_LOOP.index: return self.CONTINUE_LOOP(oparg, next_instr) elif opcode == opcodedesc.FOR_ITER.index: next_instr = self.FOR_ITER(oparg, next_instr) elif opcode == opcodedesc.JUMP_FORWARD.index: next_instr = self.JUMP_FORWARD(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_FALSE_OR_POP.index: next_instr = self.JUMP_IF_FALSE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_NOT_DEBUG.index: next_instr = self.JUMP_IF_NOT_DEBUG(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_TRUE_OR_POP.index: next_instr = self.JUMP_IF_TRUE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_FALSE.index: next_instr = self.POP_JUMP_IF_FALSE(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_TRUE.index: next_instr = self.POP_JUMP_IF_TRUE(oparg, next_instr) elif opcode == opcodedesc.BINARY_ADD.index: self.BINARY_ADD(oparg, next_instr) elif opcode == opcodedesc.BINARY_AND.index: self.BINARY_AND(oparg, next_instr) elif opcode == opcodedesc.BINARY_DIVIDE.index: self.BINARY_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_FLOOR_DIVIDE.index: self.BINARY_FLOOR_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_LSHIFT.index: self.BINARY_LSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_MODULO.index: self.BINARY_MODULO(oparg, next_instr) elif opcode == opcodedesc.BINARY_MULTIPLY.index: self.BINARY_MULTIPLY(oparg, next_instr) elif opcode == opcodedesc.BINARY_OR.index: self.BINARY_OR(oparg, next_instr) elif opcode == opcodedesc.BINARY_POWER.index: self.BINARY_POWER(oparg, next_instr) elif opcode == opcodedesc.BINARY_RSHIFT.index: self.BINARY_RSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBSCR.index: self.BINARY_SUBSCR(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBTRACT.index: self.BINARY_SUBTRACT(oparg, next_instr) elif opcode == opcodedesc.BINARY_TRUE_DIVIDE.index: self.BINARY_TRUE_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_XOR.index: self.BINARY_XOR(oparg, next_instr) elif opcode == opcodedesc.BUILD_CLASS.index: self.BUILD_CLASS(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST.index: self.BUILD_LIST(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST_FROM_ARG.index: self.BUILD_LIST_FROM_ARG(oparg, next_instr) elif opcode == opcodedesc.BUILD_MAP.index: self.BUILD_MAP(oparg, next_instr) elif opcode == opcodedesc.BUILD_SET.index: self.BUILD_SET(oparg, next_instr) elif opcode == opcodedesc.BUILD_SLICE.index: self.BUILD_SLICE(oparg, next_instr) elif opcode == opcodedesc.BUILD_TUPLE.index: self.BUILD_TUPLE(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION.index: self.CALL_FUNCTION(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_KW.index: self.CALL_FUNCTION_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR.index: self.CALL_FUNCTION_VAR(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR_KW.index: self.CALL_FUNCTION_VAR_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_METHOD.index: > self.CALL_METHOD(oparg, next_instr) interpreter\pyopcode.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ f = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_global_v...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1008]', line 1> at line 5 oparg = 3, ignored = (18L,), n_args = 3, n_kwargs = 0, w_self = None @jit.unroll_safe def CALL_METHOD(f, oparg, *ignored): # opargs contains the arg, and kwarg count, excluding the implicit 'self' n_args = oparg & 0xff n_kwargs = (oparg >> 8) & 0xff w_self = f.peekvalue_maybe_none(n_args + (2 * n_kwargs)) n = n_args + (w_self is not None) if not n_kwargs: w_callable = f.peekvalue(n_args + (2 * n_kwargs) + 1) w_result = f.space.call_valuestack( > w_callable, n, f, methodcall=w_self is not None, dropvalues=n_args + 2) objspace\std\callmethod.py:96: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_global_v...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1008]', line 1> at line 5 dropvalues = 5, methodcall = False def call_valuestack(self, w_func, nargs, frame, dropvalues, methodcall=False): # methodcall is only used for better error messages in argument.py from pypy.interpreter.function import Function, Method, is_builtin_code if frame.get_is_being_profiled() and is_builtin_code(w_func): # XXX: this code is copied&pasted :-( from the slow path below # call_valuestack(). args = frame.make_arguments(nargs) frame.dropvalues(dropvalues) return self.call_args_and_c_profile(frame, w_func, args) if not self.config.objspace.disable_call_speedhacks: # start of hack for performance if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: w_func = w_func.w_function # reuse callable stack place for w_inst frame.settopvalue(w_inst, nargs) nargs += 1 methodcall = True elif nargs > 0 and ( self.abstract_isinstance_w(frame.peekvalue(nargs-1), # :-( w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): return w_func.funccall_valuestack( > nargs, frame, methodcall=methodcall, dropvalues=dropvalues) interpreter\baseobjspace.py:1243: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_global_v...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1008]', line 1> at line 5 dropvalues = 5, methodcall = False def funccall_valuestack(self, nargs, frame, dropvalues, methodcall=False): # speed hack # methodcall is only for better error messages from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit # if (jit.we_are_jitted() and code is self.space._code_of_sys_exc_info and nargs == 0): frame.dropvalues(dropvalues) from pypy.module.sys.vm import exc_info_direct return exc_info_direct(self.space, frame) # fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: f_0 = frame.peekvalue(0) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, f_0) elif nargs == 2: f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, f_1, f_0) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) frame.dropvalues(dropvalues) return code.fastcall_3(self.space, self, f_2, f_1, f_0) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) f_3 = frame.peekvalue(3) frame.dropvalues(dropvalues) return code.fastcall_4(self.space, self, f_3, f_2, f_1, f_0) elif (nargs | Code.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) return self._flat_pycall(code, nargs, frame, dropvalues) elif fast_natural_arity & Code.FLATPYCALL: natural_arity = fast_natural_arity & 0xff if natural_arity > nargs >= natural_arity - len(self.defs_w): assert isinstance(code, PyCode) return self._flat_pycall_defaults(code, nargs, frame, natural_arity - nargs, dropvalues) elif fast_natural_arity == Code.PASSTHROUGHARGS1 and nargs >= 1: assert isinstance(code, gateway.BuiltinCodePassThroughArguments1) w_obj = frame.peekvalue(nargs-1) args = frame.make_arguments(nargs-1) frame.dropvalues(dropvalues) return code.funcrun_obj(self, w_obj, args) args = frame.make_arguments(nargs, methodcall=methodcall) frame.dropvalues(dropvalues) > return self.call_args(args) interpreter\function.py:190: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('int a[...][...];'), W_BytesObject('test_global_var_array_2'), W_BytesObject('int a[10][8];')]) def call_args(self, args): # delegate activation to code > w_res = self.getcode().funcrun(self, args) interpreter\function.py:68: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('int a[...][...];'), W_BytesObject('test_global_var_array_2'), W_BytesObject('int a[10][8];')]) def funcrun(self, func, args): > return BuiltinCode.funcrun_obj(self, func, None, args) interpreter\gateway.py:781: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('int a[...][...];'), W_BytesObject('test_global_var_array_2'), W_BytesObject('int a[10][8];')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: w_result = activation._run(space, scope_w) except DescrMismatch: if w_obj is not None: args = args.prepend(w_obj) return self._type_unwrap_mismatch(space, args) except Exception as e: > self.handle_exception(space, e) interpreter\gateway.py:795: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> space = StdObjSpace e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def handle_exception(self, space, e): try: if not we_are_translated(): raise raise e except OperationError: raise except Exception as e: # general fall-back from pypy.interpreter import error > raise error.get_converted_unexpected_exception(space, e) interpreter\gateway.py:819: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('int a[...][...];'), W_BytesObject('test_global_var_array_2'), W_BytesObject('int a[10][8];')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: > w_result = activation._run(space, scope_w) interpreter\gateway.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinActivation_UwS_ObjSpace_text_text_text_W_Root_W_Root_W_Root_int_W_Root object at 0x000002791c13af38> space = StdObjSpace scope_w = [W_BytesObject('int a[...][...];'), W_BytesObject('test_global_var_array_2'), W_BytesObject('int a[10][8];'), None, None, None, ...] def _run(self, space, scope_w): > return self.behavior(space, space.text_w(scope_w[0]), space.text_w(scope_w[1]), space.text_w(scope_w[2]), scope_w[3], scope_w[4], scope_w[5], space.gateway_int_w(scope_w[6]), scope_w[7]) <3152-codegen d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\rpython\tool\sourcetools.py:200>:3: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace, cdef = 'int a[...][...];' module_name = '_CFFI_test_global_var_array_2', source = 'int a[10][8];' w_includes = None, w_extra_source = None, w_min_version = None, packed = 0 w_extra_compile_args = None @unwrap_spec(cdef='text', module_name='text', source='text', packed=int) def prepare(space, cdef, module_name, source, w_includes=None, w_extra_source=None, w_min_version=None, packed=False, w_extra_compile_args=None): try: import cffi from cffi import FFI # <== the system one, which from cffi import recompiler # needs to be at least cffi 1.0.4 from cffi import ffiplatform except ImportError: pytest.skip("system cffi module not found or older than 1.0.0") if w_min_version is None: min_version = (1, 4, 0) else: min_version = tuple(space.unwrap(w_min_version)) if cffi.__version_info__ < min_version: pytest.skip("system cffi module needs to be at least %s, got %s" % ( min_version, cffi.__version_info__)) space.appexec([], """(): import _cffi_backend # force it to be initialized """) includes = [] if w_includes: includes += space.unpackiterable(w_includes) assert module_name.startswith('test_') module_name = '_CFFI_' + module_name rdir = udir.ensure('recompiler', dir=1) rdir.join('Python.h').write( '#include <stdio.h>\n' '#define PYPY_VERSION XX\n' '#define PyMODINIT_FUNC /*exported*/ void\n' ) path = module_name.replace('.', os.sep) if '.' in module_name: subrdir = rdir.join(module_name[:module_name.index('.')]) os.mkdir(str(subrdir)) else: subrdir = rdir c_file = str(rdir.join('%s.c' % path)) ffi = FFI() for include_ffi_object in includes: ffi.include(include_ffi_object._test_recompiler_source_ffi) ffi.cdef(cdef, packed=packed) ffi.set_source(module_name, source) ffi.emit_c_code(c_file) base_module_name = module_name.split('.')[-1] sources = [] if w_extra_source is not None: sources.append(space.str_w(w_extra_source)) kwargs = {} # GCC 14 promotes -Wincompatible-pointer-types from a warning to an error # by default, which breaks cffi's intentionally-mismatched field-check # probes (e.g. test_misdeclared_field_1). Keep it a warning so the module # compiles and cffi's runtime checks can run. extra = ['-Wno-error=incompatible-pointer-types'] if w_extra_compile_args is not None: extra = extra + space.unwrap(w_extra_compile_args) kwargs['extra_compile_args'] = extra ext = ffiplatform.get_extension(c_file, module_name, include_dirs=[str(rdir)], export_symbols=['_cffi_pypyinit_' + base_module_name], sources=sources, **kwargs) > ffiplatform.compile(str(rdir), ext) module\_cffi_backend\test\test_recompiler.py:86: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x000002791b1dc320> compiler_verbose = 0, debug = None def compile(tmpdir, ext, compiler_verbose=0, debug=None): """Compile a C extension module using distutils.""" saved_environ = os.environ.copy() try: > outputfilename = _build(tmpdir, ext, compiler_verbose, debug) d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x000002791b1dc320> compiler_verbose = 0, debug = 0 def _build(tmpdir, ext, compiler_verbose=0, debug=None): # XXX compact but horrible :-( from cffi._shimmed_dist_utils import Distribution, CompileError, LinkError, set_threshold, set_verbosity dist = Distribution({'ext_modules': [ext]}) dist.parse_config_files() options = dist.get_option_dict('build_ext') if debug is None: debug = sys.flags.debug options['debug'] = ('ffiplatform', debug) options['force'] = ('ffiplatform', True) options['build_lib'] = ('ffiplatform', tmpdir) options['build_temp'] = ('ffiplatform', tmpdir) # try: old_level = set_threshold(0) or 0 try: set_verbosity(compiler_verbose) dist.run_command('build_ext') cmd_obj = dist.get_command_obj('build_ext') [soname] = cmd_obj.get_outputs() finally: set_threshold(old_level) except (CompileError, LinkError) as e: > raise VerificationError('%s: %s' % (e.__class__.__name__, e)) E VerificationError: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2 d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:54: VerificationError ---------------------------- Captured stdout call ----------------------------- generating d:\systemtemp\pytest\usession-main-595\recompiler\_CFFI_test_global_var_array_2.c ---------------------------- Captured stderr call ----------------------------- cl : Command line error D8021 : invalid numeric argument '/Wno-error=incompatible-pointer-types' __________________ AppTestRecompiler.test_some_integer_type ___________________ self = <CallInfo when='call' exception: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2> func = <function <lambda> at 0x0000027925c40ae8>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ..\_pytest\runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ..\_pytest\runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_some_integer_type'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_some_integer_type'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ..\_pytest\vendored_packages\pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00000279153616a8> hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_some_integer_type'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_some_integer_type'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ..\_pytest\vendored_packages\pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_some_integer_type'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_some_integer_type'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ..\_pytest\vendored_packages\pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_some_integer_type'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002792c422a98> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...teger_type'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792490e560> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792490e560> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...teger_type'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_some_integer_type'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002792c422a48> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...teger_type'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792490e520> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792490e520> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...teger_type'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_some_integer_type'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ..\_pytest\vendored_packages\pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_some_integer_type'> def pytest_runtest_call(item): try: > item.runtest() ..\_pytest\runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_some_integer_type'> def runtest(self): target = self.obj if self.config.option.runappdirect: return target() space = target.im_self.space filename = self._getdynfilename(target) func = app2interp_temp(target.im_func, filename=filename) w_instance = self.parent.w_instance > self.execute_appex(space, func, space, w_instance) tool\pytest\apptest.py:89: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_some_integer_type'>, space = StdObjSpace target = <function test_some_integer_type at 0x0000027925c40f20> args = (StdObjSpace, <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>) def execute_appex(self, space, target, *args): self.space = space try: > target(*args) tool\pytest\apptest.py:30: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) w_func = <Function test_some_integer_type> args = <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8> def appcaller(space, *args_w): if not isinstance(space, ObjSpace): raise TypeError("first argument must be a space instance.") # the last argument can be an Arguments w_func = self.wget(space, name) if not args_w: return space.call_function(w_func) else: args = args_w[-1] assert args is not None if not isinstance(args, Arguments): > return space.call_function(w_func, *args_w) interpreter\gateway.py:1227: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <Function test_some_integer_type> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) nargs = 1, Function = <class 'pypy.interpreter.function.Function'> Method = <class 'pypy.interpreter.function.Method'> def call_function(self, w_func, *args_w): nargs = len(args_w) # used for pruning funccall versions if not self.config.objspace.disable_call_speedhacks and nargs < 5: # start of hack for performance from pypy.interpreter.function import Function, Method if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: if nargs < 4: func = w_func.w_function if isinstance(func, Function): return func.funccall(w_inst, *args_w) elif args_w and ( self.abstract_isinstance_w(args_w[0], w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): > return w_func.funccall(*args_w) interpreter\baseobjspace.py:1210: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <Function test_some_integer_type> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) gateway = <module 'pypy.interpreter.gateway' from 'd:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\interpreter\\gateway.pyc'> PyCode = <class 'pypy.interpreter.pycode.PyCode'> code = <code object test_some_integer_type, file '[d:\pypy_stuff\buildbot64\slave\own...-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:1020]', line 1> def funccall(self, *args_w): # speed hack from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit nargs = len(args_w) fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, args_w[0]) elif nargs == 2: assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, args_w[0], args_w[1]) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) return code.fastcall_3(self.space, self, args_w[0], args_w[1], args_w[2]) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) return code.fastcall_4(self.space, self, args_w[0], args_w[1], args_w[2], args_w[3]) elif (nargs | PyCode.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) if nargs < 5: new_frame = self.space.createframe(code, self.w_func_globals, self) for i in funccallunrolling: if i < nargs: new_frame.locals_cells_stack_w[i] = args_w[i] > return new_frame.run() interpreter\function.py:118: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_some_int...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1020]', line 1> at line 9 def run(self): """Start this frame's execution.""" if self.getcode().co_flags & pycode.CO_GENERATOR: from pypy.interpreter.generator import GeneratorIterator return GeneratorIterator(self) else: > return self.execute_frame() interpreter\pyframe.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_some_int...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1020]', line 1> at line 9 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, executioncontext) except OperationError: raise except Exception as e: # general fall-back > raise self._convert_unexpected_exception(e) interpreter\pyframe.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_some_int...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1020]', line 1> at line 9 e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def _convert_unexpected_exception(self, e): from pypy.interpreter import error > operr = error.get_converted_unexpected_exception(self.space, e) interpreter\pyframe.py:943: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_some_int...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1020]', line 1> at line 9 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, > executioncontext) interpreter\pyframe.py:286: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_some_int...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1020]', line 1> at line 9 pycode = <code object test_some_integer_type, file '[d:\pypy_stuff\buildbot64\slave\own...-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:1020]', line 1> next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def dispatch(self, pycode, next_instr, ec): # For the sequel, force 'next_instr' to be unsigned for performance next_instr = r_uint(next_instr) co_code = pycode.co_code try: while True: > next_instr = self.handle_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:64: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_some_int...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1020]', line 1> at line 9 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00\xcc$\x00|\x01\x00\xc9\x01\x0...\x00s\xc5\x01t\x02\x00\x82\x01\x00\xcc\x15\x00|\x02\x00j\n\x00d\r\x00k\x02\x00s\xdd\x01t\x02\x00\x82\x01\x00d\x00\x00S' next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def handle_bytecode(self, co_code, next_instr, ec): try: > next_instr = self.dispatch_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:71: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_some_int...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1020]', line 1> at line 9 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00\xcc$\x00|\x01\x00\xc9\x01\x0...\x00s\xc5\x01t\x02\x00\x82\x01\x00\xcc\x15\x00|\x02\x00j\n\x00d\r\x00k\x02\x00s\xdd\x01t\x02\x00\x82\x01\x00d\x00\x00S' next_instr = 18L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> @jit.unroll_safe def dispatch_bytecode(self, co_code, next_instr, ec): while True: self.last_instr = intmask(next_instr) if jit.we_are_jitted(): if self.debugdata: ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) else: # Only reload next_instr from last_instr when something that # can modify it actually ran (trace function or action # dispatcher). In the common case (no trace, positive ticker) # next_instr is unchanged and the round-trip is skipped. _d = self.debugdata if ec.space.reverse_debugging or ( _d is not None and _d.w_f_trace is not None) or ( not we_are_translated() and 'bytecode_only_trace' in ec.__dict__): ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) actionflag = ec.space.actionflag if actionflag.decrement_ticker(TICK_COUNTER_STEP) < 0: actionflag.action_dispatcher(ec, self) next_instr = r_uint(self.last_instr) opcode = ord(co_code[next_instr]) next_instr += 1 if opcode >= HAVE_ARGUMENT: lo = ord(co_code[next_instr]) hi = ord(co_code[next_instr+1]) next_instr += 2 oparg = (hi * 256) | lo else: oparg = 0 # note: the structure of the code here is such that it makes # (after translation) a big "if/elif" chain, which is then # turned into a switch(). while opcode == opcodedesc.EXTENDED_ARG.index: opcode = ord(co_code[next_instr]) if opcode < HAVE_ARGUMENT: raise BytecodeCorruption lo = ord(co_code[next_instr+1]) hi = ord(co_code[next_instr+2]) next_instr += 3 oparg = (oparg * 65536) | (hi * 256) | lo if opcode == opcodedesc.RETURN_VALUE.index: if not self.blockstack_non_empty(): self.frame_finished_execution = True # for generators raise Return w_returnvalue = self.popvalue() block = self.unrollstack(SReturnValue.kind) if block is None: self.pushvalue(w_returnvalue) raise Return else: unroller = SReturnValue(w_returnvalue) next_instr = block.handle(self, unroller) return next_instr # now inside a 'finally' block elif opcode == opcodedesc.END_FINALLY.index: unroller = self.end_finally() if isinstance(unroller, SuspendedUnroller): # go on unrolling the stack block = self.unrollstack(unroller.kind) if block is None: w_result = unroller.nomoreblocks() self.pushvalue(w_result) raise Return else: next_instr = block.handle(self, unroller) return next_instr elif opcode == opcodedesc.JUMP_ABSOLUTE.index: return self.jump_absolute(oparg, ec) elif opcode == opcodedesc.BREAK_LOOP.index: next_instr = self.BREAK_LOOP(oparg, next_instr) elif opcode == opcodedesc.CONTINUE_LOOP.index: return self.CONTINUE_LOOP(oparg, next_instr) elif opcode == opcodedesc.FOR_ITER.index: next_instr = self.FOR_ITER(oparg, next_instr) elif opcode == opcodedesc.JUMP_FORWARD.index: next_instr = self.JUMP_FORWARD(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_FALSE_OR_POP.index: next_instr = self.JUMP_IF_FALSE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_NOT_DEBUG.index: next_instr = self.JUMP_IF_NOT_DEBUG(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_TRUE_OR_POP.index: next_instr = self.JUMP_IF_TRUE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_FALSE.index: next_instr = self.POP_JUMP_IF_FALSE(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_TRUE.index: next_instr = self.POP_JUMP_IF_TRUE(oparg, next_instr) elif opcode == opcodedesc.BINARY_ADD.index: self.BINARY_ADD(oparg, next_instr) elif opcode == opcodedesc.BINARY_AND.index: self.BINARY_AND(oparg, next_instr) elif opcode == opcodedesc.BINARY_DIVIDE.index: self.BINARY_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_FLOOR_DIVIDE.index: self.BINARY_FLOOR_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_LSHIFT.index: self.BINARY_LSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_MODULO.index: self.BINARY_MODULO(oparg, next_instr) elif opcode == opcodedesc.BINARY_MULTIPLY.index: self.BINARY_MULTIPLY(oparg, next_instr) elif opcode == opcodedesc.BINARY_OR.index: self.BINARY_OR(oparg, next_instr) elif opcode == opcodedesc.BINARY_POWER.index: self.BINARY_POWER(oparg, next_instr) elif opcode == opcodedesc.BINARY_RSHIFT.index: self.BINARY_RSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBSCR.index: self.BINARY_SUBSCR(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBTRACT.index: self.BINARY_SUBTRACT(oparg, next_instr) elif opcode == opcodedesc.BINARY_TRUE_DIVIDE.index: self.BINARY_TRUE_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_XOR.index: self.BINARY_XOR(oparg, next_instr) elif opcode == opcodedesc.BUILD_CLASS.index: self.BUILD_CLASS(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST.index: self.BUILD_LIST(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST_FROM_ARG.index: self.BUILD_LIST_FROM_ARG(oparg, next_instr) elif opcode == opcodedesc.BUILD_MAP.index: self.BUILD_MAP(oparg, next_instr) elif opcode == opcodedesc.BUILD_SET.index: self.BUILD_SET(oparg, next_instr) elif opcode == opcodedesc.BUILD_SLICE.index: self.BUILD_SLICE(oparg, next_instr) elif opcode == opcodedesc.BUILD_TUPLE.index: self.BUILD_TUPLE(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION.index: self.CALL_FUNCTION(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_KW.index: self.CALL_FUNCTION_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR.index: self.CALL_FUNCTION_VAR(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR_KW.index: self.CALL_FUNCTION_VAR_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_METHOD.index: > self.CALL_METHOD(oparg, next_instr) interpreter\pyopcode.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ f = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_some_int...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1020]', line 1> at line 9 oparg = 3, ignored = (18L,), n_args = 3, n_kwargs = 0, w_self = None @jit.unroll_safe def CALL_METHOD(f, oparg, *ignored): # opargs contains the arg, and kwarg count, excluding the implicit 'self' n_args = oparg & 0xff n_kwargs = (oparg >> 8) & 0xff w_self = f.peekvalue_maybe_none(n_args + (2 * n_kwargs)) n = n_args + (w_self is not None) if not n_kwargs: w_callable = f.peekvalue(n_args + (2 * n_kwargs) + 1) w_result = f.space.call_valuestack( > w_callable, n, f, methodcall=w_self is not None, dropvalues=n_args + 2) objspace\std\callmethod.py:96: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_some_int...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1020]', line 1> at line 9 dropvalues = 5, methodcall = False def call_valuestack(self, w_func, nargs, frame, dropvalues, methodcall=False): # methodcall is only used for better error messages in argument.py from pypy.interpreter.function import Function, Method, is_builtin_code if frame.get_is_being_profiled() and is_builtin_code(w_func): # XXX: this code is copied&pasted :-( from the slow path below # call_valuestack(). args = frame.make_arguments(nargs) frame.dropvalues(dropvalues) return self.call_args_and_c_profile(frame, w_func, args) if not self.config.objspace.disable_call_speedhacks: # start of hack for performance if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: w_func = w_func.w_function # reuse callable stack place for w_inst frame.settopvalue(w_inst, nargs) nargs += 1 methodcall = True elif nargs > 0 and ( self.abstract_isinstance_w(frame.peekvalue(nargs-1), # :-( w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): return w_func.funccall_valuestack( > nargs, frame, methodcall=methodcall, dropvalues=dropvalues) interpreter\baseobjspace.py:1243: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_some_int...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1020]', line 1> at line 9 dropvalues = 5, methodcall = False def funccall_valuestack(self, nargs, frame, dropvalues, methodcall=False): # speed hack # methodcall is only for better error messages from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit # if (jit.we_are_jitted() and code is self.space._code_of_sys_exc_info and nargs == 0): frame.dropvalues(dropvalues) from pypy.module.sys.vm import exc_info_direct return exc_info_direct(self.space, frame) # fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: f_0 = frame.peekvalue(0) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, f_0) elif nargs == 2: f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, f_1, f_0) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) frame.dropvalues(dropvalues) return code.fastcall_3(self.space, self, f_2, f_1, f_0) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) f_3 = frame.peekvalue(3) frame.dropvalues(dropvalues) return code.fastcall_4(self.space, self, f_3, f_2, f_1, f_0) elif (nargs | Code.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) return self._flat_pycall(code, nargs, frame, dropvalues) elif fast_natural_arity & Code.FLATPYCALL: natural_arity = fast_natural_arity & 0xff if natural_arity > nargs >= natural_arity - len(self.defs_w): assert isinstance(code, PyCode) return self._flat_pycall_defaults(code, nargs, frame, natural_arity - nargs, dropvalues) elif fast_natural_arity == Code.PASSTHROUGHARGS1 and nargs >= 1: assert isinstance(code, gateway.BuiltinCodePassThroughArguments1) w_obj = frame.peekvalue(nargs-1) args = frame.make_arguments(nargs-1) frame.dropvalues(dropvalues) return code.funcrun_obj(self, w_obj, args) args = frame.make_arguments(nargs, methodcall=methodcall) frame.dropvalues(dropvalues) > return self.call_args(args) interpreter\function.py:190: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('\n typedef int... foo_t;\n typ...ic const bar_t mu = -20;\n static const foo_t nu = 20;\n ')]) def call_args(self, args): # delegate activation to code > w_res = self.getcode().funcrun(self, args) interpreter\function.py:68: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('\n typedef int... foo_t;\n typ...ic const bar_t mu = -20;\n static const foo_t nu = 20;\n ')]) def funcrun(self, func, args): > return BuiltinCode.funcrun_obj(self, func, None, args) interpreter\gateway.py:781: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('\n typedef int... foo_t;\n typ...ic const bar_t mu = -20;\n static const foo_t nu = 20;\n ')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: w_result = activation._run(space, scope_w) except DescrMismatch: if w_obj is not None: args = args.prepend(w_obj) return self._type_unwrap_mismatch(space, args) except Exception as e: > self.handle_exception(space, e) interpreter\gateway.py:795: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> space = StdObjSpace e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def handle_exception(self, space, e): try: if not we_are_translated(): raise raise e except OperationError: raise except Exception as e: # general fall-back from pypy.interpreter import error > raise error.get_converted_unexpected_exception(space, e) interpreter\gateway.py:819: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('\n typedef int... foo_t;\n typ...ic const bar_t mu = -20;\n static const foo_t nu = 20;\n ')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: > w_result = activation._run(space, scope_w) interpreter\gateway.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinActivation_UwS_ObjSpace_text_text_text_W_Root_W_Root_W_Root_int_W_Root object at 0x000002791c13af38> space = StdObjSpace scope_w = [W_BytesObject('\n typedef int... foo_t;\n typedef unsign...atic const bar_t mu = -20;\n ... ty...atic const bar_t mu = -20;\n static const foo_t nu = 20;\n '), None, None, None, ...] def _run(self, space, scope_w): > return self.behavior(space, space.text_w(scope_w[0]), space.text_w(scope_w[1]), space.text_w(scope_w[2]), scope_w[3], scope_w[4], scope_w[5], space.gateway_int_w(scope_w[6]), scope_w[7]) <3152-codegen d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\rpython\tool\sourcetools.py:200>:3: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace cdef = '\n typedef int... foo_t;\n typedef unsigned long... bar_t;\n typedef struct { foo_t ...oobar(bar_t, mystruct_t);\n static const bar_t mu = -20;\n static const foo_t nu = 20;\n ' module_name = '_CFFI_test_some_integer_type' source = '\n typedef unsigned long long foo_t;\n typedef short bar_t;\n typedef struct { foo_t...s.a + s.b;\n }\n static const bar_t mu = -20;\n static const foo_t nu = 20;\n ' w_includes = None, w_extra_source = None, w_min_version = None, packed = 0 w_extra_compile_args = None @unwrap_spec(cdef='text', module_name='text', source='text', packed=int) def prepare(space, cdef, module_name, source, w_includes=None, w_extra_source=None, w_min_version=None, packed=False, w_extra_compile_args=None): try: import cffi from cffi import FFI # <== the system one, which from cffi import recompiler # needs to be at least cffi 1.0.4 from cffi import ffiplatform except ImportError: pytest.skip("system cffi module not found or older than 1.0.0") if w_min_version is None: min_version = (1, 4, 0) else: min_version = tuple(space.unwrap(w_min_version)) if cffi.__version_info__ < min_version: pytest.skip("system cffi module needs to be at least %s, got %s" % ( min_version, cffi.__version_info__)) space.appexec([], """(): import _cffi_backend # force it to be initialized """) includes = [] if w_includes: includes += space.unpackiterable(w_includes) assert module_name.startswith('test_') module_name = '_CFFI_' + module_name rdir = udir.ensure('recompiler', dir=1) rdir.join('Python.h').write( '#include <stdio.h>\n' '#define PYPY_VERSION XX\n' '#define PyMODINIT_FUNC /*exported*/ void\n' ) path = module_name.replace('.', os.sep) if '.' in module_name: subrdir = rdir.join(module_name[:module_name.index('.')]) os.mkdir(str(subrdir)) else: subrdir = rdir c_file = str(rdir.join('%s.c' % path)) ffi = FFI() for include_ffi_object in includes: ffi.include(include_ffi_object._test_recompiler_source_ffi) ffi.cdef(cdef, packed=packed) ffi.set_source(module_name, source) ffi.emit_c_code(c_file) base_module_name = module_name.split('.')[-1] sources = [] if w_extra_source is not None: sources.append(space.str_w(w_extra_source)) kwargs = {} # GCC 14 promotes -Wincompatible-pointer-types from a warning to an error # by default, which breaks cffi's intentionally-mismatched field-check # probes (e.g. test_misdeclared_field_1). Keep it a warning so the module # compiles and cffi's runtime checks can run. extra = ['-Wno-error=incompatible-pointer-types'] if w_extra_compile_args is not None: extra = extra + space.unwrap(w_extra_compile_args) kwargs['extra_compile_args'] = extra ext = ffiplatform.get_extension(c_file, module_name, include_dirs=[str(rdir)], export_symbols=['_cffi_pypyinit_' + base_module_name], sources=sources, **kwargs) > ffiplatform.compile(str(rdir), ext) module\_cffi_backend\test\test_recompiler.py:86: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x000002792491f260> compiler_verbose = 0, debug = None def compile(tmpdir, ext, compiler_verbose=0, debug=None): """Compile a C extension module using distutils.""" saved_environ = os.environ.copy() try: > outputfilename = _build(tmpdir, ext, compiler_verbose, debug) d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x000002792491f260> compiler_verbose = 0, debug = 0 def _build(tmpdir, ext, compiler_verbose=0, debug=None): # XXX compact but horrible :-( from cffi._shimmed_dist_utils import Distribution, CompileError, LinkError, set_threshold, set_verbosity dist = Distribution({'ext_modules': [ext]}) dist.parse_config_files() options = dist.get_option_dict('build_ext') if debug is None: debug = sys.flags.debug options['debug'] = ('ffiplatform', debug) options['force'] = ('ffiplatform', True) options['build_lib'] = ('ffiplatform', tmpdir) options['build_temp'] = ('ffiplatform', tmpdir) # try: old_level = set_threshold(0) or 0 try: set_verbosity(compiler_verbose) dist.run_command('build_ext') cmd_obj = dist.get_command_obj('build_ext') [soname] = cmd_obj.get_outputs() finally: set_threshold(old_level) except (CompileError, LinkError) as e: > raise VerificationError('%s: %s' % (e.__class__.__name__, e)) E VerificationError: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2 d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:54: VerificationError ---------------------------- Captured stdout call ----------------------------- generating d:\systemtemp\pytest\usession-main-595\recompiler\_CFFI_test_some_integer_type.c ---------------------------- Captured stderr call ----------------------------- cl : Command line error D8021 : invalid numeric argument '/Wno-error=incompatible-pointer-types' _______________________ AppTestRecompiler.test_issue200 _______________________ self = <CallInfo when='call' exception: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2> func = <function <lambda> at 0x0000027920031c40>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ..\_pytest\runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ..\_pytest\runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_issue200'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_issue200'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ..\_pytest\vendored_packages\pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00000279153616a8> hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_issue200'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_issue200'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ..\_pytest\vendored_packages\pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_issue200'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_issue200'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ..\_pytest\vendored_packages\pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_issue200'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791ffc09d0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...t_issue200'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792bbb11e0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792bbb11e0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...t_issue200'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_issue200'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791ffc0980> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...t_issue200'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792bbb11a0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792bbb11a0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...t_issue200'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_issue200'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ..\_pytest\vendored_packages\pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_issue200'> def pytest_runtest_call(item): try: > item.runtest() ..\_pytest\runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_issue200'> def runtest(self): target = self.obj if self.config.option.runappdirect: return target() space = target.im_self.space filename = self._getdynfilename(target) func = app2interp_temp(target.im_func, filename=filename) w_instance = self.parent.w_instance > self.execute_appex(space, func, space, w_instance) tool\pytest\apptest.py:89: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_issue200'>, space = StdObjSpace target = <function test_issue200 at 0x0000027920031da8> args = (StdObjSpace, <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>) def execute_appex(self, space, target, *args): self.space = space try: > target(*args) tool\pytest\apptest.py:30: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) w_func = <Function test_issue200> args = <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8> def appcaller(space, *args_w): if not isinstance(space, ObjSpace): raise TypeError("first argument must be a space instance.") # the last argument can be an Arguments w_func = self.wget(space, name) if not args_w: return space.call_function(w_func) else: args = args_w[-1] assert args is not None if not isinstance(args, Arguments): > return space.call_function(w_func, *args_w) interpreter\gateway.py:1227: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <Function test_issue200> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) nargs = 1, Function = <class 'pypy.interpreter.function.Function'> Method = <class 'pypy.interpreter.function.Method'> def call_function(self, w_func, *args_w): nargs = len(args_w) # used for pruning funccall versions if not self.config.objspace.disable_call_speedhacks and nargs < 5: # start of hack for performance from pypy.interpreter.function import Function, Method if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: if nargs < 4: func = w_func.w_function if isinstance(func, Function): return func.funccall(w_inst, *args_w) elif args_w and ( self.abstract_isinstance_w(args_w[0], w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): > return w_func.funccall(*args_w) interpreter\baseobjspace.py:1210: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <Function test_issue200> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) gateway = <module 'pypy.interpreter.gateway' from 'd:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\interpreter\\gateway.pyc'> PyCode = <class 'pypy.interpreter.pycode.PyCode'> code = <code object test_issue200, file '[d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:1053]', line 1> def funccall(self, *args_w): # speed hack from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit nargs = len(args_w) fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, args_w[0]) elif nargs == 2: assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, args_w[0], args_w[1]) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) return code.fastcall_3(self.space, self, args_w[0], args_w[1], args_w[2]) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) return code.fastcall_4(self.space, self, args_w[0], args_w[1], args_w[2], args_w[3]) elif (nargs | PyCode.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) if nargs < 5: new_frame = self.space.createframe(code, self.w_func_globals, self) for i in funccallunrolling: if i < nargs: new_frame.locals_cells_stack_w[i] = args_w[i] > return new_frame.run() interpreter\function.py:118: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_issue200...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1053]', line 1> at line 5 def run(self): """Start this frame's execution.""" if self.getcode().co_flags & pycode.CO_GENERATOR: from pypy.interpreter.generator import GeneratorIterator return GeneratorIterator(self) else: > return self.execute_frame() interpreter\pyframe.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_issue200...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1053]', line 1> at line 5 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, executioncontext) except OperationError: raise except Exception as e: # general fall-back > raise self._convert_unexpected_exception(e) interpreter\pyframe.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_issue200...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1053]', line 1> at line 5 e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def _convert_unexpected_exception(self, e): from pypy.interpreter import error > operr = error.get_converted_unexpected_exception(self.space, e) interpreter\pyframe.py:943: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_issue200...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1053]', line 1> at line 5 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, > executioncontext) interpreter\pyframe.py:286: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_issue200...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1053]', line 1> at line 5 pycode = <code object test_issue200, file '[d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:1053]', line 1> next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def dispatch(self, pycode, next_instr, ec): # For the sequel, force 'next_instr' to be unsigned for performance next_instr = r_uint(next_instr) co_code = pycode.co_code try: while True: > next_instr = self.handle_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:64: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_issue200...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1053]', line 1> at line 5 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00|\x01\x00\xc9\x01\x00d\x04\x00\xca\x01\x00\x01|\x02\x00\xc9\x02\x00|\x01\x00j\x03\x00\xca\x01\x00\x01d\x00\x00S' next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def handle_bytecode(self, co_code, next_instr, ec): try: > next_instr = self.dispatch_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:71: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_issue200...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1053]', line 1> at line 5 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00|\x01\x00\xc9\x01\x00d\x04\x00\xca\x01\x00\x01|\x02\x00\xc9\x02\x00|\x01\x00j\x03\x00\xca\x01\x00\x01d\x00\x00S' next_instr = 18L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> @jit.unroll_safe def dispatch_bytecode(self, co_code, next_instr, ec): while True: self.last_instr = intmask(next_instr) if jit.we_are_jitted(): if self.debugdata: ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) else: # Only reload next_instr from last_instr when something that # can modify it actually ran (trace function or action # dispatcher). In the common case (no trace, positive ticker) # next_instr is unchanged and the round-trip is skipped. _d = self.debugdata if ec.space.reverse_debugging or ( _d is not None and _d.w_f_trace is not None) or ( not we_are_translated() and 'bytecode_only_trace' in ec.__dict__): ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) actionflag = ec.space.actionflag if actionflag.decrement_ticker(TICK_COUNTER_STEP) < 0: actionflag.action_dispatcher(ec, self) next_instr = r_uint(self.last_instr) opcode = ord(co_code[next_instr]) next_instr += 1 if opcode >= HAVE_ARGUMENT: lo = ord(co_code[next_instr]) hi = ord(co_code[next_instr+1]) next_instr += 2 oparg = (hi * 256) | lo else: oparg = 0 # note: the structure of the code here is such that it makes # (after translation) a big "if/elif" chain, which is then # turned into a switch(). while opcode == opcodedesc.EXTENDED_ARG.index: opcode = ord(co_code[next_instr]) if opcode < HAVE_ARGUMENT: raise BytecodeCorruption lo = ord(co_code[next_instr+1]) hi = ord(co_code[next_instr+2]) next_instr += 3 oparg = (oparg * 65536) | (hi * 256) | lo if opcode == opcodedesc.RETURN_VALUE.index: if not self.blockstack_non_empty(): self.frame_finished_execution = True # for generators raise Return w_returnvalue = self.popvalue() block = self.unrollstack(SReturnValue.kind) if block is None: self.pushvalue(w_returnvalue) raise Return else: unroller = SReturnValue(w_returnvalue) next_instr = block.handle(self, unroller) return next_instr # now inside a 'finally' block elif opcode == opcodedesc.END_FINALLY.index: unroller = self.end_finally() if isinstance(unroller, SuspendedUnroller): # go on unrolling the stack block = self.unrollstack(unroller.kind) if block is None: w_result = unroller.nomoreblocks() self.pushvalue(w_result) raise Return else: next_instr = block.handle(self, unroller) return next_instr elif opcode == opcodedesc.JUMP_ABSOLUTE.index: return self.jump_absolute(oparg, ec) elif opcode == opcodedesc.BREAK_LOOP.index: next_instr = self.BREAK_LOOP(oparg, next_instr) elif opcode == opcodedesc.CONTINUE_LOOP.index: return self.CONTINUE_LOOP(oparg, next_instr) elif opcode == opcodedesc.FOR_ITER.index: next_instr = self.FOR_ITER(oparg, next_instr) elif opcode == opcodedesc.JUMP_FORWARD.index: next_instr = self.JUMP_FORWARD(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_FALSE_OR_POP.index: next_instr = self.JUMP_IF_FALSE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_NOT_DEBUG.index: next_instr = self.JUMP_IF_NOT_DEBUG(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_TRUE_OR_POP.index: next_instr = self.JUMP_IF_TRUE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_FALSE.index: next_instr = self.POP_JUMP_IF_FALSE(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_TRUE.index: next_instr = self.POP_JUMP_IF_TRUE(oparg, next_instr) elif opcode == opcodedesc.BINARY_ADD.index: self.BINARY_ADD(oparg, next_instr) elif opcode == opcodedesc.BINARY_AND.index: self.BINARY_AND(oparg, next_instr) elif opcode == opcodedesc.BINARY_DIVIDE.index: self.BINARY_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_FLOOR_DIVIDE.index: self.BINARY_FLOOR_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_LSHIFT.index: self.BINARY_LSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_MODULO.index: self.BINARY_MODULO(oparg, next_instr) elif opcode == opcodedesc.BINARY_MULTIPLY.index: self.BINARY_MULTIPLY(oparg, next_instr) elif opcode == opcodedesc.BINARY_OR.index: self.BINARY_OR(oparg, next_instr) elif opcode == opcodedesc.BINARY_POWER.index: self.BINARY_POWER(oparg, next_instr) elif opcode == opcodedesc.BINARY_RSHIFT.index: self.BINARY_RSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBSCR.index: self.BINARY_SUBSCR(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBTRACT.index: self.BINARY_SUBTRACT(oparg, next_instr) elif opcode == opcodedesc.BINARY_TRUE_DIVIDE.index: self.BINARY_TRUE_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_XOR.index: self.BINARY_XOR(oparg, next_instr) elif opcode == opcodedesc.BUILD_CLASS.index: self.BUILD_CLASS(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST.index: self.BUILD_LIST(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST_FROM_ARG.index: self.BUILD_LIST_FROM_ARG(oparg, next_instr) elif opcode == opcodedesc.BUILD_MAP.index: self.BUILD_MAP(oparg, next_instr) elif opcode == opcodedesc.BUILD_SET.index: self.BUILD_SET(oparg, next_instr) elif opcode == opcodedesc.BUILD_SLICE.index: self.BUILD_SLICE(oparg, next_instr) elif opcode == opcodedesc.BUILD_TUPLE.index: self.BUILD_TUPLE(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION.index: self.CALL_FUNCTION(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_KW.index: self.CALL_FUNCTION_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR.index: self.CALL_FUNCTION_VAR(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR_KW.index: self.CALL_FUNCTION_VAR_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_METHOD.index: > self.CALL_METHOD(oparg, next_instr) interpreter\pyopcode.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ f = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_issue200...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1053]', line 1> at line 5 oparg = 3, ignored = (18L,), n_args = 3, n_kwargs = 0, w_self = None @jit.unroll_safe def CALL_METHOD(f, oparg, *ignored): # opargs contains the arg, and kwarg count, excluding the implicit 'self' n_args = oparg & 0xff n_kwargs = (oparg >> 8) & 0xff w_self = f.peekvalue_maybe_none(n_args + (2 * n_kwargs)) n = n_args + (w_self is not None) if not n_kwargs: w_callable = f.peekvalue(n_args + (2 * n_kwargs) + 1) w_result = f.space.call_valuestack( > w_callable, n, f, methodcall=w_self is not None, dropvalues=n_args + 2) objspace\std\callmethod.py:96: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_issue200...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1053]', line 1> at line 5 dropvalues = 5, methodcall = False def call_valuestack(self, w_func, nargs, frame, dropvalues, methodcall=False): # methodcall is only used for better error messages in argument.py from pypy.interpreter.function import Function, Method, is_builtin_code if frame.get_is_being_profiled() and is_builtin_code(w_func): # XXX: this code is copied&pasted :-( from the slow path below # call_valuestack(). args = frame.make_arguments(nargs) frame.dropvalues(dropvalues) return self.call_args_and_c_profile(frame, w_func, args) if not self.config.objspace.disable_call_speedhacks: # start of hack for performance if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: w_func = w_func.w_function # reuse callable stack place for w_inst frame.settopvalue(w_inst, nargs) nargs += 1 methodcall = True elif nargs > 0 and ( self.abstract_isinstance_w(frame.peekvalue(nargs-1), # :-( w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): return w_func.funccall_valuestack( > nargs, frame, methodcall=methodcall, dropvalues=dropvalues) interpreter\baseobjspace.py:1243: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_issue200...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1053]', line 1> at line 5 dropvalues = 5, methodcall = False def funccall_valuestack(self, nargs, frame, dropvalues, methodcall=False): # speed hack # methodcall is only for better error messages from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit # if (jit.we_are_jitted() and code is self.space._code_of_sys_exc_info and nargs == 0): frame.dropvalues(dropvalues) from pypy.module.sys.vm import exc_info_direct return exc_info_direct(self.space, frame) # fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: f_0 = frame.peekvalue(0) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, f_0) elif nargs == 2: f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, f_1, f_0) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) frame.dropvalues(dropvalues) return code.fastcall_3(self.space, self, f_2, f_1, f_0) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) f_3 = frame.peekvalue(3) frame.dropvalues(dropvalues) return code.fastcall_4(self.space, self, f_3, f_2, f_1, f_0) elif (nargs | Code.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) return self._flat_pycall(code, nargs, frame, dropvalues) elif fast_natural_arity & Code.FLATPYCALL: natural_arity = fast_natural_arity & 0xff if natural_arity > nargs >= natural_arity - len(self.defs_w): assert isinstance(code, PyCode) return self._flat_pycall_defaults(code, nargs, frame, natural_arity - nargs, dropvalues) elif fast_natural_arity == Code.PASSTHROUGHARGS1 and nargs >= 1: assert isinstance(code, gateway.BuiltinCodePassThroughArguments1) w_obj = frame.peekvalue(nargs-1) args = frame.make_arguments(nargs-1) frame.dropvalues(dropvalues) return code.funcrun_obj(self, w_obj, args) args = frame.make_arguments(nargs, methodcall=methodcall) frame.dropvalues(dropvalues) > return self.call_args(args) interpreter\function.py:190: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('\n typedef void (function_t)(void*);\n ...sObject('\n static void function(void *p) { (void)p; }\n ')]) def call_args(self, args): # delegate activation to code > w_res = self.getcode().funcrun(self, args) interpreter\function.py:68: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('\n typedef void (function_t)(void*);\n ...sObject('\n static void function(void *p) { (void)p; }\n ')]) def funcrun(self, func, args): > return BuiltinCode.funcrun_obj(self, func, None, args) interpreter\gateway.py:781: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('\n typedef void (function_t)(void*);\n ...sObject('\n static void function(void *p) { (void)p; }\n ')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: w_result = activation._run(space, scope_w) except DescrMismatch: if w_obj is not None: args = args.prepend(w_obj) return self._type_unwrap_mismatch(space, args) except Exception as e: > self.handle_exception(space, e) interpreter\gateway.py:795: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> space = StdObjSpace e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def handle_exception(self, space, e): try: if not we_are_translated(): raise raise e except OperationError: raise except Exception as e: # general fall-back from pypy.interpreter import error > raise error.get_converted_unexpected_exception(space, e) interpreter\gateway.py:819: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('\n typedef void (function_t)(void*);\n ...sObject('\n static void function(void *p) { (void)p; }\n ')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: > w_result = activation._run(space, scope_w) interpreter\gateway.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinActivation_UwS_ObjSpace_text_text_text_W_Root_W_Root_W_Root_int_W_Root object at 0x000002791c13af38> space = StdObjSpace scope_w = [W_BytesObject('\n typedef void (function_t)(void*);\n void function(void *);\n '), W_Byt...issue200'), W_BytesObject('\n static void function(void *p) { (void)p; }\n '), None, None, None, ...] def _run(self, space, scope_w): > return self.behavior(space, space.text_w(scope_w[0]), space.text_w(scope_w[1]), space.text_w(scope_w[2]), scope_w[3], scope_w[4], scope_w[5], space.gateway_int_w(scope_w[6]), scope_w[7]) <3152-codegen d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\rpython\tool\sourcetools.py:200>:3: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace cdef = '\n typedef void (function_t)(void*);\n void function(void *);\n ' module_name = '_CFFI_test_issue200' source = '\n static void function(void *p) { (void)p; }\n ' w_includes = None, w_extra_source = None, w_min_version = None, packed = 0 w_extra_compile_args = None @unwrap_spec(cdef='text', module_name='text', source='text', packed=int) def prepare(space, cdef, module_name, source, w_includes=None, w_extra_source=None, w_min_version=None, packed=False, w_extra_compile_args=None): try: import cffi from cffi import FFI # <== the system one, which from cffi import recompiler # needs to be at least cffi 1.0.4 from cffi import ffiplatform except ImportError: pytest.skip("system cffi module not found or older than 1.0.0") if w_min_version is None: min_version = (1, 4, 0) else: min_version = tuple(space.unwrap(w_min_version)) if cffi.__version_info__ < min_version: pytest.skip("system cffi module needs to be at least %s, got %s" % ( min_version, cffi.__version_info__)) space.appexec([], """(): import _cffi_backend # force it to be initialized """) includes = [] if w_includes: includes += space.unpackiterable(w_includes) assert module_name.startswith('test_') module_name = '_CFFI_' + module_name rdir = udir.ensure('recompiler', dir=1) rdir.join('Python.h').write( '#include <stdio.h>\n' '#define PYPY_VERSION XX\n' '#define PyMODINIT_FUNC /*exported*/ void\n' ) path = module_name.replace('.', os.sep) if '.' in module_name: subrdir = rdir.join(module_name[:module_name.index('.')]) os.mkdir(str(subrdir)) else: subrdir = rdir c_file = str(rdir.join('%s.c' % path)) ffi = FFI() for include_ffi_object in includes: ffi.include(include_ffi_object._test_recompiler_source_ffi) ffi.cdef(cdef, packed=packed) ffi.set_source(module_name, source) ffi.emit_c_code(c_file) base_module_name = module_name.split('.')[-1] sources = [] if w_extra_source is not None: sources.append(space.str_w(w_extra_source)) kwargs = {} # GCC 14 promotes -Wincompatible-pointer-types from a warning to an error # by default, which breaks cffi's intentionally-mismatched field-check # probes (e.g. test_misdeclared_field_1). Keep it a warning so the module # compiles and cffi's runtime checks can run. extra = ['-Wno-error=incompatible-pointer-types'] if w_extra_compile_args is not None: extra = extra + space.unwrap(w_extra_compile_args) kwargs['extra_compile_args'] = extra ext = ffiplatform.get_extension(c_file, module_name, include_dirs=[str(rdir)], export_symbols=['_cffi_pypyinit_' + base_module_name], sources=sources, **kwargs) > ffiplatform.compile(str(rdir), ext) module\_cffi_backend\test\test_recompiler.py:86: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x000002792bbb1ce0> compiler_verbose = 0, debug = None def compile(tmpdir, ext, compiler_verbose=0, debug=None): """Compile a C extension module using distutils.""" saved_environ = os.environ.copy() try: > outputfilename = _build(tmpdir, ext, compiler_verbose, debug) d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x000002792bbb1ce0> compiler_verbose = 0, debug = 0 def _build(tmpdir, ext, compiler_verbose=0, debug=None): # XXX compact but horrible :-( from cffi._shimmed_dist_utils import Distribution, CompileError, LinkError, set_threshold, set_verbosity dist = Distribution({'ext_modules': [ext]}) dist.parse_config_files() options = dist.get_option_dict('build_ext') if debug is None: debug = sys.flags.debug options['debug'] = ('ffiplatform', debug) options['force'] = ('ffiplatform', True) options['build_lib'] = ('ffiplatform', tmpdir) options['build_temp'] = ('ffiplatform', tmpdir) # try: old_level = set_threshold(0) or 0 try: set_verbosity(compiler_verbose) dist.run_command('build_ext') cmd_obj = dist.get_command_obj('build_ext') [soname] = cmd_obj.get_outputs() finally: set_threshold(old_level) except (CompileError, LinkError) as e: > raise VerificationError('%s: %s' % (e.__class__.__name__, e)) E VerificationError: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2 d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:54: VerificationError ---------------------------- Captured stdout call ----------------------------- generating d:\systemtemp\pytest\usession-main-595\recompiler\_CFFI_test_issue200.c ---------------------------- Captured stderr call ----------------------------- cl : Command line error D8021 : invalid numeric argument '/Wno-error=incompatible-pointer-types' ________________ AppTestRecompiler.test_alignment_of_longlong _________________ self = <CallInfo when='call' exception: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2> func = <function <lambda> at 0x0000027921082200>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ..\_pytest\runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ..\_pytest\runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_alignment_of_longlong'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_alignment_of_longlong'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ..\_pytest\vendored_packages\pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00000279153616a8> hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_alignment_of_longlong'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_alignment_of_longlong'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ..\_pytest\vendored_packages\pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_alignment_of_longlong'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_alignment_of_longlong'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ..\_pytest\vendored_packages\pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_alignment_of_longlong'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791a724cc8> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...f_longlong'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792ae5cee0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792ae5cee0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...f_longlong'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_alignment_of_longlong'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791a724c78> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...f_longlong'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792ae5cea0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792ae5cea0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...f_longlong'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_alignment_of_longlong'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ..\_pytest\vendored_packages\pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_alignment_of_longlong'> def pytest_runtest_call(item): try: > item.runtest() ..\_pytest\runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_alignment_of_longlong'> def runtest(self): target = self.obj if self.config.option.runappdirect: return target() space = target.im_self.space filename = self._getdynfilename(target) func = app2interp_temp(target.im_func, filename=filename) w_instance = self.parent.w_instance > self.execute_appex(space, func, space, w_instance) tool\pytest\apptest.py:89: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_alignment_of_longlong'>, space = StdObjSpace target = <function test_alignment_of_longlong at 0x0000027921082548> args = (StdObjSpace, <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>) def execute_appex(self, space, target, *args): self.space = space try: > target(*args) tool\pytest\apptest.py:30: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) w_func = <Function test_alignment_of_longlong> args = <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8> def appcaller(space, *args_w): if not isinstance(space, ObjSpace): raise TypeError("first argument must be a space instance.") # the last argument can be an Arguments w_func = self.wget(space, name) if not args_w: return space.call_function(w_func) else: args = args_w[-1] assert args is not None if not isinstance(args, Arguments): > return space.call_function(w_func, *args_w) interpreter\gateway.py:1227: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <Function test_alignment_of_longlong> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) nargs = 1, Function = <class 'pypy.interpreter.function.Function'> Method = <class 'pypy.interpreter.function.Method'> def call_function(self, w_func, *args_w): nargs = len(args_w) # used for pruning funccall versions if not self.config.objspace.disable_call_speedhacks and nargs < 5: # start of hack for performance from pypy.interpreter.function import Function, Method if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: if nargs < 4: func = w_func.w_function if isinstance(func, Function): return func.funccall(w_inst, *args_w) elif args_w and ( self.abstract_isinstance_w(args_w[0], w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): > return w_func.funccall(*args_w) interpreter\baseobjspace.py:1210: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <Function test_alignment_of_longlong> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) gateway = <module 'pypy.interpreter.gateway' from 'd:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\interpreter\\gateway.pyc'> PyCode = <class 'pypy.interpreter.pycode.PyCode'> code = <code object test_alignment_of_longlong, file '[d:\pypy_stuff\buildbot64\slave...-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:1064]', line 1> def funccall(self, *args_w): # speed hack from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit nargs = len(args_w) fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, args_w[0]) elif nargs == 2: assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, args_w[0], args_w[1]) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) return code.fastcall_3(self.space, self, args_w[0], args_w[1], args_w[2]) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) return code.fastcall_4(self.space, self, args_w[0], args_w[1], args_w[2], args_w[3]) elif (nargs | PyCode.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) if nargs < 5: new_frame = self.space.createframe(code, self.w_func_globals, self) for i in funccallunrolling: if i < nargs: new_frame.locals_cells_stack_w[i] = args_w[i] > return new_frame.run() interpreter\function.py:118: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_alignmen...ld\pypy\module\_cffi_backend\test\test_recompiler.py:1064]', line 1> at line 10 def run(self): """Start this frame's execution.""" if self.getcode().co_flags & pycode.CO_GENERATOR: from pypy.interpreter.generator import GeneratorIterator return GeneratorIterator(self) else: > return self.execute_frame() interpreter\pyframe.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_alignmen...ld\pypy\module\_cffi_backend\test\test_recompiler.py:1064]', line 1> at line 10 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, executioncontext) except OperationError: raise except Exception as e: # general fall-back > raise self._convert_unexpected_exception(e) interpreter\pyframe.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_alignmen...ld\pypy\module\_cffi_backend\test\test_recompiler.py:1064]', line 1> at line 10 e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def _convert_unexpected_exception(self, e): from pypy.interpreter import error > operr = error.get_converted_unexpected_exception(self.space, e) interpreter\pyframe.py:943: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_alignmen...ld\pypy\module\_cffi_backend\test\test_recompiler.py:1064]', line 1> at line 10 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, > executioncontext) interpreter\pyframe.py:286: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_alignmen...ld\pypy\module\_cffi_backend\test\test_recompiler.py:1064]', line 1> at line 10 pycode = <code object test_alignment_of_longlong, file '[d:\pypy_stuff\buildbot64\slave...-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:1064]', line 1> next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def dispatch(self, pycode, next_instr, ec): # For the sequel, force 'next_instr' to be unsigned for performance next_instr = r_uint(next_instr) co_code = pycode.co_code try: while True: > next_instr = self.handle_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:64: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_alignmen...ld\pypy\module\_cffi_backend\test\test_recompiler.py:1064]', line 1> at line 10 co_code = 'd\x01\x00d\x00\x00l\x00\x00}\x01\x00|\x01\x00\xc9\x01\x00d\x02\x00\xca\x01\x00}\x02\x00|\x01\x00\xc9\x02\x00|\x02\x00...01\x00\xcc\x1b\x00|\x04\x00\xc9\x02\x00d\x06\x00\xca\x01\x00|\x03\x00k\x02\x00s\x96\x00t\x03\x00\x82\x01\x00d\x00\x00S' next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def handle_bytecode(self, co_code, next_instr, ec): try: > next_instr = self.dispatch_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:71: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_alignmen...ld\pypy\module\_cffi_backend\test\test_recompiler.py:1064]', line 1> at line 10 co_code = 'd\x01\x00d\x00\x00l\x00\x00}\x01\x00|\x01\x00\xc9\x01\x00d\x02\x00\xca\x01\x00}\x02\x00|\x01\x00\xc9\x02\x00|\x02\x00...01\x00\xcc\x1b\x00|\x04\x00\xc9\x02\x00d\x06\x00\xca\x01\x00|\x03\x00k\x02\x00s\x96\x00t\x03\x00\x82\x01\x00d\x00\x00S' next_instr = 81 ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> @jit.unroll_safe def dispatch_bytecode(self, co_code, next_instr, ec): while True: self.last_instr = intmask(next_instr) if jit.we_are_jitted(): if self.debugdata: ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) else: # Only reload next_instr from last_instr when something that # can modify it actually ran (trace function or action # dispatcher). In the common case (no trace, positive ticker) # next_instr is unchanged and the round-trip is skipped. _d = self.debugdata if ec.space.reverse_debugging or ( _d is not None and _d.w_f_trace is not None) or ( not we_are_translated() and 'bytecode_only_trace' in ec.__dict__): ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) actionflag = ec.space.actionflag if actionflag.decrement_ticker(TICK_COUNTER_STEP) < 0: actionflag.action_dispatcher(ec, self) next_instr = r_uint(self.last_instr) opcode = ord(co_code[next_instr]) next_instr += 1 if opcode >= HAVE_ARGUMENT: lo = ord(co_code[next_instr]) hi = ord(co_code[next_instr+1]) next_instr += 2 oparg = (hi * 256) | lo else: oparg = 0 # note: the structure of the code here is such that it makes # (after translation) a big "if/elif" chain, which is then # turned into a switch(). while opcode == opcodedesc.EXTENDED_ARG.index: opcode = ord(co_code[next_instr]) if opcode < HAVE_ARGUMENT: raise BytecodeCorruption lo = ord(co_code[next_instr+1]) hi = ord(co_code[next_instr+2]) next_instr += 3 oparg = (oparg * 65536) | (hi * 256) | lo if opcode == opcodedesc.RETURN_VALUE.index: if not self.blockstack_non_empty(): self.frame_finished_execution = True # for generators raise Return w_returnvalue = self.popvalue() block = self.unrollstack(SReturnValue.kind) if block is None: self.pushvalue(w_returnvalue) raise Return else: unroller = SReturnValue(w_returnvalue) next_instr = block.handle(self, unroller) return next_instr # now inside a 'finally' block elif opcode == opcodedesc.END_FINALLY.index: unroller = self.end_finally() if isinstance(unroller, SuspendedUnroller): # go on unrolling the stack block = self.unrollstack(unroller.kind) if block is None: w_result = unroller.nomoreblocks() self.pushvalue(w_result) raise Return else: next_instr = block.handle(self, unroller) return next_instr elif opcode == opcodedesc.JUMP_ABSOLUTE.index: return self.jump_absolute(oparg, ec) elif opcode == opcodedesc.BREAK_LOOP.index: next_instr = self.BREAK_LOOP(oparg, next_instr) elif opcode == opcodedesc.CONTINUE_LOOP.index: return self.CONTINUE_LOOP(oparg, next_instr) elif opcode == opcodedesc.FOR_ITER.index: next_instr = self.FOR_ITER(oparg, next_instr) elif opcode == opcodedesc.JUMP_FORWARD.index: next_instr = self.JUMP_FORWARD(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_FALSE_OR_POP.index: next_instr = self.JUMP_IF_FALSE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_NOT_DEBUG.index: next_instr = self.JUMP_IF_NOT_DEBUG(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_TRUE_OR_POP.index: next_instr = self.JUMP_IF_TRUE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_FALSE.index: next_instr = self.POP_JUMP_IF_FALSE(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_TRUE.index: next_instr = self.POP_JUMP_IF_TRUE(oparg, next_instr) elif opcode == opcodedesc.BINARY_ADD.index: self.BINARY_ADD(oparg, next_instr) elif opcode == opcodedesc.BINARY_AND.index: self.BINARY_AND(oparg, next_instr) elif opcode == opcodedesc.BINARY_DIVIDE.index: self.BINARY_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_FLOOR_DIVIDE.index: self.BINARY_FLOOR_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_LSHIFT.index: self.BINARY_LSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_MODULO.index: self.BINARY_MODULO(oparg, next_instr) elif opcode == opcodedesc.BINARY_MULTIPLY.index: self.BINARY_MULTIPLY(oparg, next_instr) elif opcode == opcodedesc.BINARY_OR.index: self.BINARY_OR(oparg, next_instr) elif opcode == opcodedesc.BINARY_POWER.index: self.BINARY_POWER(oparg, next_instr) elif opcode == opcodedesc.BINARY_RSHIFT.index: self.BINARY_RSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBSCR.index: self.BINARY_SUBSCR(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBTRACT.index: self.BINARY_SUBTRACT(oparg, next_instr) elif opcode == opcodedesc.BINARY_TRUE_DIVIDE.index: self.BINARY_TRUE_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_XOR.index: self.BINARY_XOR(oparg, next_instr) elif opcode == opcodedesc.BUILD_CLASS.index: self.BUILD_CLASS(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST.index: self.BUILD_LIST(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST_FROM_ARG.index: self.BUILD_LIST_FROM_ARG(oparg, next_instr) elif opcode == opcodedesc.BUILD_MAP.index: self.BUILD_MAP(oparg, next_instr) elif opcode == opcodedesc.BUILD_SET.index: self.BUILD_SET(oparg, next_instr) elif opcode == opcodedesc.BUILD_SLICE.index: self.BUILD_SLICE(oparg, next_instr) elif opcode == opcodedesc.BUILD_TUPLE.index: self.BUILD_TUPLE(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION.index: self.CALL_FUNCTION(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_KW.index: self.CALL_FUNCTION_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR.index: self.CALL_FUNCTION_VAR(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR_KW.index: self.CALL_FUNCTION_VAR_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_METHOD.index: > self.CALL_METHOD(oparg, next_instr) interpreter\pyopcode.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ f = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_alignmen...ld\pypy\module\_cffi_backend\test\test_recompiler.py:1064]', line 1> at line 10 oparg = 3, ignored = (81,), n_args = 3, n_kwargs = 0, w_self = None @jit.unroll_safe def CALL_METHOD(f, oparg, *ignored): # opargs contains the arg, and kwarg count, excluding the implicit 'self' n_args = oparg & 0xff n_kwargs = (oparg >> 8) & 0xff w_self = f.peekvalue_maybe_none(n_args + (2 * n_kwargs)) n = n_args + (w_self is not None) if not n_kwargs: w_callable = f.peekvalue(n_args + (2 * n_kwargs) + 1) w_result = f.space.call_valuestack( > w_callable, n, f, methodcall=w_self is not None, dropvalues=n_args + 2) objspace\std\callmethod.py:96: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_alignmen...ld\pypy\module\_cffi_backend\test\test_recompiler.py:1064]', line 1> at line 10 dropvalues = 5, methodcall = False def call_valuestack(self, w_func, nargs, frame, dropvalues, methodcall=False): # methodcall is only used for better error messages in argument.py from pypy.interpreter.function import Function, Method, is_builtin_code if frame.get_is_being_profiled() and is_builtin_code(w_func): # XXX: this code is copied&pasted :-( from the slow path below # call_valuestack(). args = frame.make_arguments(nargs) frame.dropvalues(dropvalues) return self.call_args_and_c_profile(frame, w_func, args) if not self.config.objspace.disable_call_speedhacks: # start of hack for performance if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: w_func = w_func.w_function # reuse callable stack place for w_inst frame.settopvalue(w_inst, nargs) nargs += 1 methodcall = True elif nargs > 0 and ( self.abstract_isinstance_w(frame.peekvalue(nargs-1), # :-( w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): return w_func.funccall_valuestack( > nargs, frame, methodcall=methodcall, dropvalues=dropvalues) interpreter\baseobjspace.py:1243: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_alignmen...ld\pypy\module\_cffi_backend\test\test_recompiler.py:1064]', line 1> at line 10 dropvalues = 5, methodcall = False def funccall_valuestack(self, nargs, frame, dropvalues, methodcall=False): # speed hack # methodcall is only for better error messages from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit # if (jit.we_are_jitted() and code is self.space._code_of_sys_exc_info and nargs == 0): frame.dropvalues(dropvalues) from pypy.module.sys.vm import exc_info_direct return exc_info_direct(self.space, frame) # fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: f_0 = frame.peekvalue(0) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, f_0) elif nargs == 2: f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, f_1, f_0) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) frame.dropvalues(dropvalues) return code.fastcall_3(self.space, self, f_2, f_1, f_0) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) f_3 = frame.peekvalue(3) frame.dropvalues(dropvalues) return code.fastcall_4(self.space, self, f_3, f_2, f_1, f_0) elif (nargs | Code.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) return self._flat_pycall(code, nargs, frame, dropvalues) elif fast_natural_arity & Code.FLATPYCALL: natural_arity = fast_natural_arity & 0xff if natural_arity > nargs >= natural_arity - len(self.defs_w): assert isinstance(code, PyCode) return self._flat_pycall_defaults(code, nargs, frame, natural_arity - nargs, dropvalues) elif fast_natural_arity == Code.PASSTHROUGHARGS1 and nargs >= 1: assert isinstance(code, gateway.BuiltinCodePassThroughArguments1) w_obj = frame.peekvalue(nargs-1) args = frame.make_arguments(nargs-1) frame.dropvalues(dropvalues) return code.funcrun_obj(self, w_obj, args) args = frame.make_arguments(nargs, methodcall=methodcall) frame.dropvalues(dropvalues) > return self.call_args(args) interpreter\function.py:190: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('struct foo_s { unsigned long long x; };'), W_BytesOb...nment_of_longlong'), W_BytesObject('struct foo_s { unsigned long long x; };')]) def call_args(self, args): # delegate activation to code > w_res = self.getcode().funcrun(self, args) interpreter\function.py:68: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('struct foo_s { unsigned long long x; };'), W_BytesOb...nment_of_longlong'), W_BytesObject('struct foo_s { unsigned long long x; };')]) def funcrun(self, func, args): > return BuiltinCode.funcrun_obj(self, func, None, args) interpreter\gateway.py:781: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('struct foo_s { unsigned long long x; };'), W_BytesOb...nment_of_longlong'), W_BytesObject('struct foo_s { unsigned long long x; };')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: w_result = activation._run(space, scope_w) except DescrMismatch: if w_obj is not None: args = args.prepend(w_obj) return self._type_unwrap_mismatch(space, args) except Exception as e: > self.handle_exception(space, e) interpreter\gateway.py:795: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> space = StdObjSpace e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def handle_exception(self, space, e): try: if not we_are_translated(): raise raise e except OperationError: raise except Exception as e: # general fall-back from pypy.interpreter import error > raise error.get_converted_unexpected_exception(space, e) interpreter\gateway.py:819: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('struct foo_s { unsigned long long x; };'), W_BytesOb...nment_of_longlong'), W_BytesObject('struct foo_s { unsigned long long x; };')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: > w_result = activation._run(space, scope_w) interpreter\gateway.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinActivation_UwS_ObjSpace_text_text_text_W_Root_W_Root_W_Root_int_W_Root object at 0x000002791c13af38> space = StdObjSpace scope_w = [W_BytesObject('struct foo_s { unsigned long long x; };'), W_BytesObject('test_alignment_of_longlong'), W_BytesObject('struct foo_s { unsigned long long x; };'), None, None, None, ...] def _run(self, space, scope_w): > return self.behavior(space, space.text_w(scope_w[0]), space.text_w(scope_w[1]), space.text_w(scope_w[2]), scope_w[3], scope_w[4], scope_w[5], space.gateway_int_w(scope_w[6]), scope_w[7]) <3152-codegen d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\rpython\tool\sourcetools.py:200>:3: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace, cdef = 'struct foo_s { unsigned long long x; };' module_name = '_CFFI_test_alignment_of_longlong' source = 'struct foo_s { unsigned long long x; };', w_includes = None w_extra_source = None, w_min_version = None, packed = 0 w_extra_compile_args = None @unwrap_spec(cdef='text', module_name='text', source='text', packed=int) def prepare(space, cdef, module_name, source, w_includes=None, w_extra_source=None, w_min_version=None, packed=False, w_extra_compile_args=None): try: import cffi from cffi import FFI # <== the system one, which from cffi import recompiler # needs to be at least cffi 1.0.4 from cffi import ffiplatform except ImportError: pytest.skip("system cffi module not found or older than 1.0.0") if w_min_version is None: min_version = (1, 4, 0) else: min_version = tuple(space.unwrap(w_min_version)) if cffi.__version_info__ < min_version: pytest.skip("system cffi module needs to be at least %s, got %s" % ( min_version, cffi.__version_info__)) space.appexec([], """(): import _cffi_backend # force it to be initialized """) includes = [] if w_includes: includes += space.unpackiterable(w_includes) assert module_name.startswith('test_') module_name = '_CFFI_' + module_name rdir = udir.ensure('recompiler', dir=1) rdir.join('Python.h').write( '#include <stdio.h>\n' '#define PYPY_VERSION XX\n' '#define PyMODINIT_FUNC /*exported*/ void\n' ) path = module_name.replace('.', os.sep) if '.' in module_name: subrdir = rdir.join(module_name[:module_name.index('.')]) os.mkdir(str(subrdir)) else: subrdir = rdir c_file = str(rdir.join('%s.c' % path)) ffi = FFI() for include_ffi_object in includes: ffi.include(include_ffi_object._test_recompiler_source_ffi) ffi.cdef(cdef, packed=packed) ffi.set_source(module_name, source) ffi.emit_c_code(c_file) base_module_name = module_name.split('.')[-1] sources = [] if w_extra_source is not None: sources.append(space.str_w(w_extra_source)) kwargs = {} # GCC 14 promotes -Wincompatible-pointer-types from a warning to an error # by default, which breaks cffi's intentionally-mismatched field-check # probes (e.g. test_misdeclared_field_1). Keep it a warning so the module # compiles and cffi's runtime checks can run. extra = ['-Wno-error=incompatible-pointer-types'] if w_extra_compile_args is not None: extra = extra + space.unwrap(w_extra_compile_args) kwargs['extra_compile_args'] = extra ext = ffiplatform.get_extension(c_file, module_name, include_dirs=[str(rdir)], export_symbols=['_cffi_pypyinit_' + base_module_name], sources=sources, **kwargs) > ffiplatform.compile(str(rdir), ext) module\_cffi_backend\test\test_recompiler.py:86: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x000002792aea48a0> compiler_verbose = 0, debug = None def compile(tmpdir, ext, compiler_verbose=0, debug=None): """Compile a C extension module using distutils.""" saved_environ = os.environ.copy() try: > outputfilename = _build(tmpdir, ext, compiler_verbose, debug) d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x000002792aea48a0> compiler_verbose = 0, debug = 0 def _build(tmpdir, ext, compiler_verbose=0, debug=None): # XXX compact but horrible :-( from cffi._shimmed_dist_utils import Distribution, CompileError, LinkError, set_threshold, set_verbosity dist = Distribution({'ext_modules': [ext]}) dist.parse_config_files() options = dist.get_option_dict('build_ext') if debug is None: debug = sys.flags.debug options['debug'] = ('ffiplatform', debug) options['force'] = ('ffiplatform', True) options['build_lib'] = ('ffiplatform', tmpdir) options['build_temp'] = ('ffiplatform', tmpdir) # try: old_level = set_threshold(0) or 0 try: set_verbosity(compiler_verbose) dist.run_command('build_ext') cmd_obj = dist.get_command_obj('build_ext') [soname] = cmd_obj.get_outputs() finally: set_threshold(old_level) except (CompileError, LinkError) as e: > raise VerificationError('%s: %s' % (e.__class__.__name__, e)) E VerificationError: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2 d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:54: VerificationError ---------------------------- Captured stdout call ----------------------------- generating d:\systemtemp\pytest\usession-main-595\recompiler\_CFFI_test_alignment_of_longlong.c ---------------------------- Captured stderr call ----------------------------- cl : Command line error D8021 : invalid numeric argument '/Wno-error=incompatible-pointer-types' ___________________ AppTestRecompiler.test_import_from_lib ____________________ self = <CallInfo when='call' exception: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2> func = <function <lambda> at 0x000002792ba05c40>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ..\_pytest\runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ..\_pytest\runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_import_from_lib'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_import_from_lib'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ..\_pytest\vendored_packages\pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00000279153616a8> hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_import_from_lib'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_import_from_lib'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ..\_pytest\vendored_packages\pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_import_from_lib'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_import_from_lib'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ..\_pytest\vendored_packages\pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_import_from_lib'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791bd83d30> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...t_from_lib'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027927ad47a0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027927ad47a0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...t_from_lib'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_import_from_lib'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791ae35f38> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...t_from_lib'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027927ad4760> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027927ad4760> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...t_from_lib'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_import_from_lib'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ..\_pytest\vendored_packages\pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_import_from_lib'> def pytest_runtest_call(item): try: > item.runtest() ..\_pytest\runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_import_from_lib'> def runtest(self): target = self.obj if self.config.option.runappdirect: return target() space = target.im_self.space filename = self._getdynfilename(target) func = app2interp_temp(target.im_func, filename=filename) w_instance = self.parent.w_instance > self.execute_appex(space, func, space, w_instance) tool\pytest\apptest.py:89: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_import_from_lib'>, space = StdObjSpace target = <function test_import_from_lib at 0x000002792ba05cb8> args = (StdObjSpace, <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>) def execute_appex(self, space, target, *args): self.space = space try: > target(*args) tool\pytest\apptest.py:30: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) w_func = <Function test_import_from_lib> args = <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8> def appcaller(space, *args_w): if not isinstance(space, ObjSpace): raise TypeError("first argument must be a space instance.") # the last argument can be an Arguments w_func = self.wget(space, name) if not args_w: return space.call_function(w_func) else: args = args_w[-1] assert args is not None if not isinstance(args, Arguments): > return space.call_function(w_func, *args_w) interpreter\gateway.py:1227: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <Function test_import_from_lib> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) nargs = 1, Function = <class 'pypy.interpreter.function.Function'> Method = <class 'pypy.interpreter.function.Method'> def call_function(self, w_func, *args_w): nargs = len(args_w) # used for pruning funccall versions if not self.config.objspace.disable_call_speedhacks and nargs < 5: # start of hack for performance from pypy.interpreter.function import Function, Method if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: if nargs < 4: func = w_func.w_function if isinstance(func, Function): return func.funccall(w_inst, *args_w) elif args_w and ( self.abstract_isinstance_w(args_w[0], w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): > return w_func.funccall(*args_w) interpreter\baseobjspace.py:1210: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <Function test_import_from_lib> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) gateway = <module 'pypy.interpreter.gateway' from 'd:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\interpreter\\gateway.pyc'> PyCode = <class 'pypy.interpreter.pycode.PyCode'> code = <code object test_import_from_lib, file '[d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:1077]', line 1> def funccall(self, *args_w): # speed hack from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit nargs = len(args_w) fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, args_w[0]) elif nargs == 2: assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, args_w[0], args_w[1]) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) return code.fastcall_3(self.space, self, args_w[0], args_w[1], args_w[2]) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) return code.fastcall_4(self.space, self, args_w[0], args_w[1], args_w[2], args_w[3]) elif (nargs | PyCode.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) if nargs < 5: new_frame = self.space.createframe(code, self.w_func_globals, self) for i in funccallunrolling: if i < nargs: new_frame.locals_cells_stack_w[i] = args_w[i] > return new_frame.run() interpreter\function.py:118: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_import_f...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1077]', line 1> at line 6 def run(self): """Start this frame's execution.""" if self.getcode().co_flags & pycode.CO_GENERATOR: from pypy.interpreter.generator import GeneratorIterator return GeneratorIterator(self) else: > return self.execute_frame() interpreter\pyframe.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_import_f...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1077]', line 1> at line 6 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, executioncontext) except OperationError: raise except Exception as e: # general fall-back > raise self._convert_unexpected_exception(e) interpreter\pyframe.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_import_f...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1077]', line 1> at line 6 e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def _convert_unexpected_exception(self, e): from pypy.interpreter import error > operr = error.get_converted_unexpected_exception(self.space, e) interpreter\pyframe.py:943: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_import_f...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1077]', line 1> at line 6 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, > executioncontext) interpreter\pyframe.py:286: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_import_f...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1077]', line 1> at line 6 pycode = <code object test_import_from_lib, file '[d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:1077]', line 1> next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def dispatch(self, pycode, next_instr, ec): # For the sequel, force 'next_instr' to be unsigned for performance next_instr = r_uint(next_instr) co_code = pycode.co_code try: while True: > next_instr = self.handle_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:64: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_import_f...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1077]', line 1> at line 6 co_code = 'd\x01\x00d\x00\x00l\x00\x00}\x01\x00|\x00\x00\xc9\x01\x00d\x02\x00d\x03\x00d\x04\x00\xca\x03\x00\\\x02\x00}\x02\x00}\...x82\x01\x00\xcc\x1b\x00|\x03\x00j\n\x00t\x0b\x00|\x01\x00\x83\x01\x00k\x08\x00s\xf3\x00t\x04\x00\x82\x01\x00d\x00\x00S' next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def handle_bytecode(self, co_code, next_instr, ec): try: > next_instr = self.dispatch_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:71: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_import_f...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1077]', line 1> at line 6 co_code = 'd\x01\x00d\x00\x00l\x00\x00}\x01\x00|\x00\x00\xc9\x01\x00d\x02\x00d\x03\x00d\x04\x00\xca\x03\x00\\\x02\x00}\x02\x00}\...x82\x01\x00\xcc\x1b\x00|\x03\x00j\n\x00t\x0b\x00|\x01\x00\x83\x01\x00k\x08\x00s\xf3\x00t\x04\x00\x82\x01\x00d\x00\x00S' next_instr = 30L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> @jit.unroll_safe def dispatch_bytecode(self, co_code, next_instr, ec): while True: self.last_instr = intmask(next_instr) if jit.we_are_jitted(): if self.debugdata: ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) else: # Only reload next_instr from last_instr when something that # can modify it actually ran (trace function or action # dispatcher). In the common case (no trace, positive ticker) # next_instr is unchanged and the round-trip is skipped. _d = self.debugdata if ec.space.reverse_debugging or ( _d is not None and _d.w_f_trace is not None) or ( not we_are_translated() and 'bytecode_only_trace' in ec.__dict__): ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) actionflag = ec.space.actionflag if actionflag.decrement_ticker(TICK_COUNTER_STEP) < 0: actionflag.action_dispatcher(ec, self) next_instr = r_uint(self.last_instr) opcode = ord(co_code[next_instr]) next_instr += 1 if opcode >= HAVE_ARGUMENT: lo = ord(co_code[next_instr]) hi = ord(co_code[next_instr+1]) next_instr += 2 oparg = (hi * 256) | lo else: oparg = 0 # note: the structure of the code here is such that it makes # (after translation) a big "if/elif" chain, which is then # turned into a switch(). while opcode == opcodedesc.EXTENDED_ARG.index: opcode = ord(co_code[next_instr]) if opcode < HAVE_ARGUMENT: raise BytecodeCorruption lo = ord(co_code[next_instr+1]) hi = ord(co_code[next_instr+2]) next_instr += 3 oparg = (oparg * 65536) | (hi * 256) | lo if opcode == opcodedesc.RETURN_VALUE.index: if not self.blockstack_non_empty(): self.frame_finished_execution = True # for generators raise Return w_returnvalue = self.popvalue() block = self.unrollstack(SReturnValue.kind) if block is None: self.pushvalue(w_returnvalue) raise Return else: unroller = SReturnValue(w_returnvalue) next_instr = block.handle(self, unroller) return next_instr # now inside a 'finally' block elif opcode == opcodedesc.END_FINALLY.index: unroller = self.end_finally() if isinstance(unroller, SuspendedUnroller): # go on unrolling the stack block = self.unrollstack(unroller.kind) if block is None: w_result = unroller.nomoreblocks() self.pushvalue(w_result) raise Return else: next_instr = block.handle(self, unroller) return next_instr elif opcode == opcodedesc.JUMP_ABSOLUTE.index: return self.jump_absolute(oparg, ec) elif opcode == opcodedesc.BREAK_LOOP.index: next_instr = self.BREAK_LOOP(oparg, next_instr) elif opcode == opcodedesc.CONTINUE_LOOP.index: return self.CONTINUE_LOOP(oparg, next_instr) elif opcode == opcodedesc.FOR_ITER.index: next_instr = self.FOR_ITER(oparg, next_instr) elif opcode == opcodedesc.JUMP_FORWARD.index: next_instr = self.JUMP_FORWARD(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_FALSE_OR_POP.index: next_instr = self.JUMP_IF_FALSE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_NOT_DEBUG.index: next_instr = self.JUMP_IF_NOT_DEBUG(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_TRUE_OR_POP.index: next_instr = self.JUMP_IF_TRUE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_FALSE.index: next_instr = self.POP_JUMP_IF_FALSE(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_TRUE.index: next_instr = self.POP_JUMP_IF_TRUE(oparg, next_instr) elif opcode == opcodedesc.BINARY_ADD.index: self.BINARY_ADD(oparg, next_instr) elif opcode == opcodedesc.BINARY_AND.index: self.BINARY_AND(oparg, next_instr) elif opcode == opcodedesc.BINARY_DIVIDE.index: self.BINARY_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_FLOOR_DIVIDE.index: self.BINARY_FLOOR_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_LSHIFT.index: self.BINARY_LSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_MODULO.index: self.BINARY_MODULO(oparg, next_instr) elif opcode == opcodedesc.BINARY_MULTIPLY.index: self.BINARY_MULTIPLY(oparg, next_instr) elif opcode == opcodedesc.BINARY_OR.index: self.BINARY_OR(oparg, next_instr) elif opcode == opcodedesc.BINARY_POWER.index: self.BINARY_POWER(oparg, next_instr) elif opcode == opcodedesc.BINARY_RSHIFT.index: self.BINARY_RSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBSCR.index: self.BINARY_SUBSCR(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBTRACT.index: self.BINARY_SUBTRACT(oparg, next_instr) elif opcode == opcodedesc.BINARY_TRUE_DIVIDE.index: self.BINARY_TRUE_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_XOR.index: self.BINARY_XOR(oparg, next_instr) elif opcode == opcodedesc.BUILD_CLASS.index: self.BUILD_CLASS(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST.index: self.BUILD_LIST(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST_FROM_ARG.index: self.BUILD_LIST_FROM_ARG(oparg, next_instr) elif opcode == opcodedesc.BUILD_MAP.index: self.BUILD_MAP(oparg, next_instr) elif opcode == opcodedesc.BUILD_SET.index: self.BUILD_SET(oparg, next_instr) elif opcode == opcodedesc.BUILD_SLICE.index: self.BUILD_SLICE(oparg, next_instr) elif opcode == opcodedesc.BUILD_TUPLE.index: self.BUILD_TUPLE(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION.index: self.CALL_FUNCTION(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_KW.index: self.CALL_FUNCTION_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR.index: self.CALL_FUNCTION_VAR(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR_KW.index: self.CALL_FUNCTION_VAR_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_METHOD.index: > self.CALL_METHOD(oparg, next_instr) interpreter\pyopcode.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ f = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_import_f...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1077]', line 1> at line 6 oparg = 3, ignored = (30L,), n_args = 3, n_kwargs = 0, w_self = None @jit.unroll_safe def CALL_METHOD(f, oparg, *ignored): # opargs contains the arg, and kwarg count, excluding the implicit 'self' n_args = oparg & 0xff n_kwargs = (oparg >> 8) & 0xff w_self = f.peekvalue_maybe_none(n_args + (2 * n_kwargs)) n = n_args + (w_self is not None) if not n_kwargs: w_callable = f.peekvalue(n_args + (2 * n_kwargs) + 1) w_result = f.space.call_valuestack( > w_callable, n, f, methodcall=w_self is not None, dropvalues=n_args + 2) objspace\std\callmethod.py:96: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_import_f...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1077]', line 1> at line 6 dropvalues = 5, methodcall = False def call_valuestack(self, w_func, nargs, frame, dropvalues, methodcall=False): # methodcall is only used for better error messages in argument.py from pypy.interpreter.function import Function, Method, is_builtin_code if frame.get_is_being_profiled() and is_builtin_code(w_func): # XXX: this code is copied&pasted :-( from the slow path below # call_valuestack(). args = frame.make_arguments(nargs) frame.dropvalues(dropvalues) return self.call_args_and_c_profile(frame, w_func, args) if not self.config.objspace.disable_call_speedhacks: # start of hack for performance if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: w_func = w_func.w_function # reuse callable stack place for w_inst frame.settopvalue(w_inst, nargs) nargs += 1 methodcall = True elif nargs > 0 and ( self.abstract_isinstance_w(frame.peekvalue(nargs-1), # :-( w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): return w_func.funccall_valuestack( > nargs, frame, methodcall=methodcall, dropvalues=dropvalues) interpreter\baseobjspace.py:1243: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_import_f...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1077]', line 1> at line 6 dropvalues = 5, methodcall = False def funccall_valuestack(self, nargs, frame, dropvalues, methodcall=False): # speed hack # methodcall is only for better error messages from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit # if (jit.we_are_jitted() and code is self.space._code_of_sys_exc_info and nargs == 0): frame.dropvalues(dropvalues) from pypy.module.sys.vm import exc_info_direct return exc_info_direct(self.space, frame) # fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: f_0 = frame.peekvalue(0) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, f_0) elif nargs == 2: f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, f_1, f_0) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) frame.dropvalues(dropvalues) return code.fastcall_3(self.space, self, f_2, f_1, f_0) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) f_3 = frame.peekvalue(3) frame.dropvalues(dropvalues) return code.fastcall_4(self.space, self, f_3, f_2, f_1, f_0) elif (nargs | Code.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) return self._flat_pycall(code, nargs, frame, dropvalues) elif fast_natural_arity & Code.FLATPYCALL: natural_arity = fast_natural_arity & 0xff if natural_arity > nargs >= natural_arity - len(self.defs_w): assert isinstance(code, PyCode) return self._flat_pycall_defaults(code, nargs, frame, natural_arity - nargs, dropvalues) elif fast_natural_arity == Code.PASSTHROUGHARGS1 and nargs >= 1: assert isinstance(code, gateway.BuiltinCodePassThroughArguments1) w_obj = frame.peekvalue(nargs-1) args = frame.make_arguments(nargs-1) frame.dropvalues(dropvalues) return code.funcrun_obj(self, w_obj, args) args = frame.make_arguments(nargs, methodcall=methodcall) frame.dropvalues(dropvalues) > return self.call_args(args) interpreter\function.py:190: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('int mybar(int); int myvar;\n#define MYFOO ...'), W_B...MYFOO 42\nstatic int mybar(int x) { return x + 1; }\nstatic int myvar = -5;')]) def call_args(self, args): # delegate activation to code > w_res = self.getcode().funcrun(self, args) interpreter\function.py:68: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('int mybar(int); int myvar;\n#define MYFOO ...'), W_B...MYFOO 42\nstatic int mybar(int x) { return x + 1; }\nstatic int myvar = -5;')]) def funcrun(self, func, args): > return BuiltinCode.funcrun_obj(self, func, None, args) interpreter\gateway.py:781: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('int mybar(int); int myvar;\n#define MYFOO ...'), W_B...MYFOO 42\nstatic int mybar(int x) { return x + 1; }\nstatic int myvar = -5;')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: w_result = activation._run(space, scope_w) except DescrMismatch: if w_obj is not None: args = args.prepend(w_obj) return self._type_unwrap_mismatch(space, args) except Exception as e: > self.handle_exception(space, e) interpreter\gateway.py:795: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> space = StdObjSpace e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def handle_exception(self, space, e): try: if not we_are_translated(): raise raise e except OperationError: raise except Exception as e: # general fall-back from pypy.interpreter import error > raise error.get_converted_unexpected_exception(space, e) interpreter\gateway.py:819: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('int mybar(int); int myvar;\n#define MYFOO ...'), W_B...MYFOO 42\nstatic int mybar(int x) { return x + 1; }\nstatic int myvar = -5;')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: > w_result = activation._run(space, scope_w) interpreter\gateway.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinActivation_UwS_ObjSpace_text_text_text_W_Root_W_Root_W_Root_int_W_Root object at 0x000002791c13af38> space = StdObjSpace scope_w = [W_BytesObject('int mybar(int); int myvar;\n#define MYFOO ...'), W_BytesObject('test_import_from_lib'), W_BytesObject('#define MYFOO 42\nstatic int mybar(int x) { return x + 1; }\nstatic int myvar = -5;'), None, None, None, ...] def _run(self, space, scope_w): > return self.behavior(space, space.text_w(scope_w[0]), space.text_w(scope_w[1]), space.text_w(scope_w[2]), scope_w[3], scope_w[4], scope_w[5], space.gateway_int_w(scope_w[6]), scope_w[7]) <3152-codegen d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\rpython\tool\sourcetools.py:200>:3: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace, cdef = 'int mybar(int); int myvar;\n#define MYFOO ...' module_name = '_CFFI_test_import_from_lib' source = '#define MYFOO 42\nstatic int mybar(int x) { return x + 1; }\nstatic int myvar = -5;' w_includes = None, w_extra_source = None, w_min_version = None, packed = 0 w_extra_compile_args = None @unwrap_spec(cdef='text', module_name='text', source='text', packed=int) def prepare(space, cdef, module_name, source, w_includes=None, w_extra_source=None, w_min_version=None, packed=False, w_extra_compile_args=None): try: import cffi from cffi import FFI # <== the system one, which from cffi import recompiler # needs to be at least cffi 1.0.4 from cffi import ffiplatform except ImportError: pytest.skip("system cffi module not found or older than 1.0.0") if w_min_version is None: min_version = (1, 4, 0) else: min_version = tuple(space.unwrap(w_min_version)) if cffi.__version_info__ < min_version: pytest.skip("system cffi module needs to be at least %s, got %s" % ( min_version, cffi.__version_info__)) space.appexec([], """(): import _cffi_backend # force it to be initialized """) includes = [] if w_includes: includes += space.unpackiterable(w_includes) assert module_name.startswith('test_') module_name = '_CFFI_' + module_name rdir = udir.ensure('recompiler', dir=1) rdir.join('Python.h').write( '#include <stdio.h>\n' '#define PYPY_VERSION XX\n' '#define PyMODINIT_FUNC /*exported*/ void\n' ) path = module_name.replace('.', os.sep) if '.' in module_name: subrdir = rdir.join(module_name[:module_name.index('.')]) os.mkdir(str(subrdir)) else: subrdir = rdir c_file = str(rdir.join('%s.c' % path)) ffi = FFI() for include_ffi_object in includes: ffi.include(include_ffi_object._test_recompiler_source_ffi) ffi.cdef(cdef, packed=packed) ffi.set_source(module_name, source) ffi.emit_c_code(c_file) base_module_name = module_name.split('.')[-1] sources = [] if w_extra_source is not None: sources.append(space.str_w(w_extra_source)) kwargs = {} # GCC 14 promotes -Wincompatible-pointer-types from a warning to an error # by default, which breaks cffi's intentionally-mismatched field-check # probes (e.g. test_misdeclared_field_1). Keep it a warning so the module # compiles and cffi's runtime checks can run. extra = ['-Wno-error=incompatible-pointer-types'] if w_extra_compile_args is not None: extra = extra + space.unwrap(w_extra_compile_args) kwargs['extra_compile_args'] = extra ext = ffiplatform.get_extension(c_file, module_name, include_dirs=[str(rdir)], export_symbols=['_cffi_pypyinit_' + base_module_name], sources=sources, **kwargs) > ffiplatform.compile(str(rdir), ext) module\_cffi_backend\test\test_recompiler.py:86: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x0000027927ad4aa0> compiler_verbose = 0, debug = None def compile(tmpdir, ext, compiler_verbose=0, debug=None): """Compile a C extension module using distutils.""" saved_environ = os.environ.copy() try: > outputfilename = _build(tmpdir, ext, compiler_verbose, debug) d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x0000027927ad4aa0> compiler_verbose = 0, debug = 0 def _build(tmpdir, ext, compiler_verbose=0, debug=None): # XXX compact but horrible :-( from cffi._shimmed_dist_utils import Distribution, CompileError, LinkError, set_threshold, set_verbosity dist = Distribution({'ext_modules': [ext]}) dist.parse_config_files() options = dist.get_option_dict('build_ext') if debug is None: debug = sys.flags.debug options['debug'] = ('ffiplatform', debug) options['force'] = ('ffiplatform', True) options['build_lib'] = ('ffiplatform', tmpdir) options['build_temp'] = ('ffiplatform', tmpdir) # try: old_level = set_threshold(0) or 0 try: set_verbosity(compiler_verbose) dist.run_command('build_ext') cmd_obj = dist.get_command_obj('build_ext') [soname] = cmd_obj.get_outputs() finally: set_threshold(old_level) except (CompileError, LinkError) as e: > raise VerificationError('%s: %s' % (e.__class__.__name__, e)) E VerificationError: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2 d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:54: VerificationError ---------------------------- Captured stdout call ----------------------------- generating d:\systemtemp\pytest\usession-main-595\recompiler\_CFFI_test_import_from_lib.c ---------------------------- Captured stderr call ----------------------------- d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\cparser.py:165: UserWarning: Global variable 'myvar' in cdef(): for consistency with C it should have a storage class specifier (usually 'extern') "(usually 'extern')" % (decl.name,)) cl : Command line error D8021 : invalid numeric argument '/Wno-error=incompatible-pointer-types' __________________ AppTestRecompiler.test_macro_var_callback __________________ self = <CallInfo when='call' exception: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2> func = <function <lambda> at 0x0000027927822db8>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ..\_pytest\runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ..\_pytest\runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_macro_var_callback'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_macro_var_callback'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ..\_pytest\vendored_packages\pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00000279153616a8> hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_macro_var_callback'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_macro_var_callback'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ..\_pytest\vendored_packages\pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_macro_var_callback'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_macro_var_callback'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ..\_pytest\vendored_packages\pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_macro_var_callback'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002792ba279e8> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...r_callback'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027927982b60> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027927982b60> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...r_callback'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_macro_var_callback'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002792ba27998> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...r_callback'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027927982b20> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027927982b20> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...r_callback'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_macro_var_callback'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ..\_pytest\vendored_packages\pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_macro_var_callback'> def pytest_runtest_call(item): try: > item.runtest() ..\_pytest\runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_macro_var_callback'> def runtest(self): target = self.obj if self.config.option.runappdirect: return target() space = target.im_self.space filename = self._getdynfilename(target) func = app2interp_temp(target.im_func, filename=filename) w_instance = self.parent.w_instance > self.execute_appex(space, func, space, w_instance) tool\pytest\apptest.py:89: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_macro_var_callback'>, space = StdObjSpace target = <function test_macro_var_callback at 0x00000279278233d0> args = (StdObjSpace, <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>) def execute_appex(self, space, target, *args): self.space = space try: > target(*args) tool\pytest\apptest.py:30: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) w_func = <Function test_macro_var_callback> args = <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8> def appcaller(space, *args_w): if not isinstance(space, ObjSpace): raise TypeError("first argument must be a space instance.") # the last argument can be an Arguments w_func = self.wget(space, name) if not args_w: return space.call_function(w_func) else: args = args_w[-1] assert args is not None if not isinstance(args, Arguments): > return space.call_function(w_func, *args_w) interpreter\gateway.py:1227: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <Function test_macro_var_callback> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) nargs = 1, Function = <class 'pypy.interpreter.function.Function'> Method = <class 'pypy.interpreter.function.Method'> def call_function(self, w_func, *args_w): nargs = len(args_w) # used for pruning funccall versions if not self.config.objspace.disable_call_speedhacks and nargs < 5: # start of hack for performance from pypy.interpreter.function import Function, Method if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: if nargs < 4: func = w_func.w_function if isinstance(func, Function): return func.funccall(w_inst, *args_w) elif args_w and ( self.abstract_isinstance_w(args_w[0], w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): > return w_func.funccall(*args_w) interpreter\baseobjspace.py:1210: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <Function test_macro_var_callback> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) gateway = <module 'pypy.interpreter.gateway' from 'd:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\interpreter\\gateway.pyc'> PyCode = <class 'pypy.interpreter.pycode.PyCode'> code = <code object test_macro_var_callback, file '[d:\pypy_stuff\buildbot64\slave\ow...-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:1094]', line 1> def funccall(self, *args_w): # speed hack from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit nargs = len(args_w) fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, args_w[0]) elif nargs == 2: assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, args_w[0], args_w[1]) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) return code.fastcall_3(self.space, self, args_w[0], args_w[1], args_w[2]) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) return code.fastcall_4(self.space, self, args_w[0], args_w[1], args_w[2], args_w[3]) elif (nargs | PyCode.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) if nargs < 5: new_frame = self.space.createframe(code, self.w_func_globals, self) for i in funccallunrolling: if i < nargs: new_frame.locals_cells_stack_w[i] = args_w[i] > return new_frame.run() interpreter\function.py:118: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_macro_va...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1094]', line 1> at line 5 def run(self): """Start this frame's execution.""" if self.getcode().co_flags & pycode.CO_GENERATOR: from pypy.interpreter.generator import GeneratorIterator return GeneratorIterator(self) else: > return self.execute_frame() interpreter\pyframe.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_macro_va...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1094]', line 1> at line 5 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, executioncontext) except OperationError: raise except Exception as e: # general fall-back > raise self._convert_unexpected_exception(e) interpreter\pyframe.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_macro_va...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1094]', line 1> at line 5 e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def _convert_unexpected_exception(self, e): from pypy.interpreter import error > operr = error.get_converted_unexpected_exception(self.space, e) interpreter\pyframe.py:943: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_macro_va...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1094]', line 1> at line 5 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, > executioncontext) interpreter\pyframe.py:286: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_macro_va...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1094]', line 1> at line 5 pycode = <code object test_macro_var_callback, file '[d:\pypy_stuff\buildbot64\slave\ow...-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:1094]', line 1> next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def dispatch(self, pycode, next_instr, ec): # For the sequel, force 'next_instr' to be unsigned for performance next_instr = r_uint(next_instr) co_code = pycode.co_code try: while True: > next_instr = self.handle_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:64: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_macro_va...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1094]', line 1> at line 5 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00|\x01\x00\xc9\x01\x00d\x04\x0...}\x05\x00\xcc\x1b\x00t\x0b\x00|\x05\x00j\x0c\x00\x83\x01\x00d\x12\x00k\x02\x00s\x12\x02t\x05\x00\x82\x01\x00d\x00\x00S' next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def handle_bytecode(self, co_code, next_instr, ec): try: > next_instr = self.dispatch_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:71: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_macro_va...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1094]', line 1> at line 5 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00|\x01\x00\xc9\x01\x00d\x04\x0...}\x05\x00\xcc\x1b\x00t\x0b\x00|\x05\x00j\x0c\x00\x83\x01\x00d\x12\x00k\x02\x00s\x12\x02t\x05\x00\x82\x01\x00d\x00\x00S' next_instr = 18L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> @jit.unroll_safe def dispatch_bytecode(self, co_code, next_instr, ec): while True: self.last_instr = intmask(next_instr) if jit.we_are_jitted(): if self.debugdata: ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) else: # Only reload next_instr from last_instr when something that # can modify it actually ran (trace function or action # dispatcher). In the common case (no trace, positive ticker) # next_instr is unchanged and the round-trip is skipped. _d = self.debugdata if ec.space.reverse_debugging or ( _d is not None and _d.w_f_trace is not None) or ( not we_are_translated() and 'bytecode_only_trace' in ec.__dict__): ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) actionflag = ec.space.actionflag if actionflag.decrement_ticker(TICK_COUNTER_STEP) < 0: actionflag.action_dispatcher(ec, self) next_instr = r_uint(self.last_instr) opcode = ord(co_code[next_instr]) next_instr += 1 if opcode >= HAVE_ARGUMENT: lo = ord(co_code[next_instr]) hi = ord(co_code[next_instr+1]) next_instr += 2 oparg = (hi * 256) | lo else: oparg = 0 # note: the structure of the code here is such that it makes # (after translation) a big "if/elif" chain, which is then # turned into a switch(). while opcode == opcodedesc.EXTENDED_ARG.index: opcode = ord(co_code[next_instr]) if opcode < HAVE_ARGUMENT: raise BytecodeCorruption lo = ord(co_code[next_instr+1]) hi = ord(co_code[next_instr+2]) next_instr += 3 oparg = (oparg * 65536) | (hi * 256) | lo if opcode == opcodedesc.RETURN_VALUE.index: if not self.blockstack_non_empty(): self.frame_finished_execution = True # for generators raise Return w_returnvalue = self.popvalue() block = self.unrollstack(SReturnValue.kind) if block is None: self.pushvalue(w_returnvalue) raise Return else: unroller = SReturnValue(w_returnvalue) next_instr = block.handle(self, unroller) return next_instr # now inside a 'finally' block elif opcode == opcodedesc.END_FINALLY.index: unroller = self.end_finally() if isinstance(unroller, SuspendedUnroller): # go on unrolling the stack block = self.unrollstack(unroller.kind) if block is None: w_result = unroller.nomoreblocks() self.pushvalue(w_result) raise Return else: next_instr = block.handle(self, unroller) return next_instr elif opcode == opcodedesc.JUMP_ABSOLUTE.index: return self.jump_absolute(oparg, ec) elif opcode == opcodedesc.BREAK_LOOP.index: next_instr = self.BREAK_LOOP(oparg, next_instr) elif opcode == opcodedesc.CONTINUE_LOOP.index: return self.CONTINUE_LOOP(oparg, next_instr) elif opcode == opcodedesc.FOR_ITER.index: next_instr = self.FOR_ITER(oparg, next_instr) elif opcode == opcodedesc.JUMP_FORWARD.index: next_instr = self.JUMP_FORWARD(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_FALSE_OR_POP.index: next_instr = self.JUMP_IF_FALSE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_NOT_DEBUG.index: next_instr = self.JUMP_IF_NOT_DEBUG(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_TRUE_OR_POP.index: next_instr = self.JUMP_IF_TRUE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_FALSE.index: next_instr = self.POP_JUMP_IF_FALSE(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_TRUE.index: next_instr = self.POP_JUMP_IF_TRUE(oparg, next_instr) elif opcode == opcodedesc.BINARY_ADD.index: self.BINARY_ADD(oparg, next_instr) elif opcode == opcodedesc.BINARY_AND.index: self.BINARY_AND(oparg, next_instr) elif opcode == opcodedesc.BINARY_DIVIDE.index: self.BINARY_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_FLOOR_DIVIDE.index: self.BINARY_FLOOR_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_LSHIFT.index: self.BINARY_LSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_MODULO.index: self.BINARY_MODULO(oparg, next_instr) elif opcode == opcodedesc.BINARY_MULTIPLY.index: self.BINARY_MULTIPLY(oparg, next_instr) elif opcode == opcodedesc.BINARY_OR.index: self.BINARY_OR(oparg, next_instr) elif opcode == opcodedesc.BINARY_POWER.index: self.BINARY_POWER(oparg, next_instr) elif opcode == opcodedesc.BINARY_RSHIFT.index: self.BINARY_RSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBSCR.index: self.BINARY_SUBSCR(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBTRACT.index: self.BINARY_SUBTRACT(oparg, next_instr) elif opcode == opcodedesc.BINARY_TRUE_DIVIDE.index: self.BINARY_TRUE_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_XOR.index: self.BINARY_XOR(oparg, next_instr) elif opcode == opcodedesc.BUILD_CLASS.index: self.BUILD_CLASS(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST.index: self.BUILD_LIST(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST_FROM_ARG.index: self.BUILD_LIST_FROM_ARG(oparg, next_instr) elif opcode == opcodedesc.BUILD_MAP.index: self.BUILD_MAP(oparg, next_instr) elif opcode == opcodedesc.BUILD_SET.index: self.BUILD_SET(oparg, next_instr) elif opcode == opcodedesc.BUILD_SLICE.index: self.BUILD_SLICE(oparg, next_instr) elif opcode == opcodedesc.BUILD_TUPLE.index: self.BUILD_TUPLE(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION.index: self.CALL_FUNCTION(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_KW.index: self.CALL_FUNCTION_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR.index: self.CALL_FUNCTION_VAR(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR_KW.index: self.CALL_FUNCTION_VAR_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_METHOD.index: > self.CALL_METHOD(oparg, next_instr) interpreter\pyopcode.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ f = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_macro_va...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1094]', line 1> at line 5 oparg = 3, ignored = (18L,), n_args = 3, n_kwargs = 0, w_self = None @jit.unroll_safe def CALL_METHOD(f, oparg, *ignored): # opargs contains the arg, and kwarg count, excluding the implicit 'self' n_args = oparg & 0xff n_kwargs = (oparg >> 8) & 0xff w_self = f.peekvalue_maybe_none(n_args + (2 * n_kwargs)) n = n_args + (w_self is not None) if not n_kwargs: w_callable = f.peekvalue(n_args + (2 * n_kwargs) + 1) w_result = f.space.call_valuestack( > w_callable, n, f, methodcall=w_self is not None, dropvalues=n_args + 2) objspace\std\callmethod.py:96: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_macro_va...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1094]', line 1> at line 5 dropvalues = 5, methodcall = False def call_valuestack(self, w_func, nargs, frame, dropvalues, methodcall=False): # methodcall is only used for better error messages in argument.py from pypy.interpreter.function import Function, Method, is_builtin_code if frame.get_is_being_profiled() and is_builtin_code(w_func): # XXX: this code is copied&pasted :-( from the slow path below # call_valuestack(). args = frame.make_arguments(nargs) frame.dropvalues(dropvalues) return self.call_args_and_c_profile(frame, w_func, args) if not self.config.objspace.disable_call_speedhacks: # start of hack for performance if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: w_func = w_func.w_function # reuse callable stack place for w_inst frame.settopvalue(w_inst, nargs) nargs += 1 methodcall = True elif nargs > 0 and ( self.abstract_isinstance_w(frame.peekvalue(nargs-1), # :-( w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): return w_func.funccall_valuestack( > nargs, frame, methodcall=methodcall, dropvalues=dropvalues) interpreter\baseobjspace.py:1243: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_macro_va...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1094]', line 1> at line 5 dropvalues = 5, methodcall = False def funccall_valuestack(self, nargs, frame, dropvalues, methodcall=False): # speed hack # methodcall is only for better error messages from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit # if (jit.we_are_jitted() and code is self.space._code_of_sys_exc_info and nargs == 0): frame.dropvalues(dropvalues) from pypy.module.sys.vm import exc_info_direct return exc_info_direct(self.space, frame) # fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: f_0 = frame.peekvalue(0) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, f_0) elif nargs == 2: f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, f_1, f_0) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) frame.dropvalues(dropvalues) return code.fastcall_3(self.space, self, f_2, f_1, f_0) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) f_3 = frame.peekvalue(3) frame.dropvalues(dropvalues) return code.fastcall_4(self.space, self, f_3, f_2, f_1, f_0) elif (nargs | Code.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) return self._flat_pycall(code, nargs, frame, dropvalues) elif fast_natural_arity & Code.FLATPYCALL: natural_arity = fast_natural_arity & 0xff if natural_arity > nargs >= natural_arity - len(self.defs_w): assert isinstance(code, PyCode) return self._flat_pycall_defaults(code, nargs, frame, natural_arity - nargs, dropvalues) elif fast_natural_arity == Code.PASSTHROUGHARGS1 and nargs >= 1: assert isinstance(code, gateway.BuiltinCodePassThroughArguments1) w_obj = frame.peekvalue(nargs-1) args = frame.make_arguments(nargs-1) frame.dropvalues(dropvalues) return code.funcrun_obj(self, w_obj, args) args = frame.make_arguments(nargs, methodcall=methodcall) frame.dropvalues(dropvalues) > return self.call_args(args) interpreter\function.py:190: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('int my_value; int *(*get_my_value)(void);'), W_Bytes...ytesObject('int *(*get_my_value)(void);\n#define my_value (*get_my_value())')]) def call_args(self, args): # delegate activation to code > w_res = self.getcode().funcrun(self, args) interpreter\function.py:68: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('int my_value; int *(*get_my_value)(void);'), W_Bytes...ytesObject('int *(*get_my_value)(void);\n#define my_value (*get_my_value())')]) def funcrun(self, func, args): > return BuiltinCode.funcrun_obj(self, func, None, args) interpreter\gateway.py:781: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('int my_value; int *(*get_my_value)(void);'), W_Bytes...ytesObject('int *(*get_my_value)(void);\n#define my_value (*get_my_value())')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: w_result = activation._run(space, scope_w) except DescrMismatch: if w_obj is not None: args = args.prepend(w_obj) return self._type_unwrap_mismatch(space, args) except Exception as e: > self.handle_exception(space, e) interpreter\gateway.py:795: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> space = StdObjSpace e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def handle_exception(self, space, e): try: if not we_are_translated(): raise raise e except OperationError: raise except Exception as e: # general fall-back from pypy.interpreter import error > raise error.get_converted_unexpected_exception(space, e) interpreter\gateway.py:819: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('int my_value; int *(*get_my_value)(void);'), W_Bytes...ytesObject('int *(*get_my_value)(void);\n#define my_value (*get_my_value())')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: > w_result = activation._run(space, scope_w) interpreter\gateway.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinActivation_UwS_ObjSpace_text_text_text_W_Root_W_Root_W_Root_int_W_Root object at 0x000002791c13af38> space = StdObjSpace scope_w = [W_BytesObject('int my_value; int *(*get_my_value)(void);'), W_BytesObject('test_macro_var_callback'), W_BytesObject('int *(*get_my_value)(void);\n#define my_value (*get_my_value())'), None, None, None, ...] def _run(self, space, scope_w): > return self.behavior(space, space.text_w(scope_w[0]), space.text_w(scope_w[1]), space.text_w(scope_w[2]), scope_w[3], scope_w[4], scope_w[5], space.gateway_int_w(scope_w[6]), scope_w[7]) <3152-codegen d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\rpython\tool\sourcetools.py:200>:3: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace, cdef = 'int my_value; int *(*get_my_value)(void);' module_name = '_CFFI_test_macro_var_callback' source = 'int *(*get_my_value)(void);\n#define my_value (*get_my_value())' w_includes = None, w_extra_source = None, w_min_version = None, packed = 0 w_extra_compile_args = None @unwrap_spec(cdef='text', module_name='text', source='text', packed=int) def prepare(space, cdef, module_name, source, w_includes=None, w_extra_source=None, w_min_version=None, packed=False, w_extra_compile_args=None): try: import cffi from cffi import FFI # <== the system one, which from cffi import recompiler # needs to be at least cffi 1.0.4 from cffi import ffiplatform except ImportError: pytest.skip("system cffi module not found or older than 1.0.0") if w_min_version is None: min_version = (1, 4, 0) else: min_version = tuple(space.unwrap(w_min_version)) if cffi.__version_info__ < min_version: pytest.skip("system cffi module needs to be at least %s, got %s" % ( min_version, cffi.__version_info__)) space.appexec([], """(): import _cffi_backend # force it to be initialized """) includes = [] if w_includes: includes += space.unpackiterable(w_includes) assert module_name.startswith('test_') module_name = '_CFFI_' + module_name rdir = udir.ensure('recompiler', dir=1) rdir.join('Python.h').write( '#include <stdio.h>\n' '#define PYPY_VERSION XX\n' '#define PyMODINIT_FUNC /*exported*/ void\n' ) path = module_name.replace('.', os.sep) if '.' in module_name: subrdir = rdir.join(module_name[:module_name.index('.')]) os.mkdir(str(subrdir)) else: subrdir = rdir c_file = str(rdir.join('%s.c' % path)) ffi = FFI() for include_ffi_object in includes: ffi.include(include_ffi_object._test_recompiler_source_ffi) ffi.cdef(cdef, packed=packed) ffi.set_source(module_name, source) ffi.emit_c_code(c_file) base_module_name = module_name.split('.')[-1] sources = [] if w_extra_source is not None: sources.append(space.str_w(w_extra_source)) kwargs = {} # GCC 14 promotes -Wincompatible-pointer-types from a warning to an error # by default, which breaks cffi's intentionally-mismatched field-check # probes (e.g. test_misdeclared_field_1). Keep it a warning so the module # compiles and cffi's runtime checks can run. extra = ['-Wno-error=incompatible-pointer-types'] if w_extra_compile_args is not None: extra = extra + space.unwrap(w_extra_compile_args) kwargs['extra_compile_args'] = extra ext = ffiplatform.get_extension(c_file, module_name, include_dirs=[str(rdir)], export_symbols=['_cffi_pypyinit_' + base_module_name], sources=sources, **kwargs) > ffiplatform.compile(str(rdir), ext) module\_cffi_backend\test\test_recompiler.py:86: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x0000027926b3d4e0> compiler_verbose = 0, debug = None def compile(tmpdir, ext, compiler_verbose=0, debug=None): """Compile a C extension module using distutils.""" saved_environ = os.environ.copy() try: > outputfilename = _build(tmpdir, ext, compiler_verbose, debug) d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x0000027926b3d4e0> compiler_verbose = 0, debug = 0 def _build(tmpdir, ext, compiler_verbose=0, debug=None): # XXX compact but horrible :-( from cffi._shimmed_dist_utils import Distribution, CompileError, LinkError, set_threshold, set_verbosity dist = Distribution({'ext_modules': [ext]}) dist.parse_config_files() options = dist.get_option_dict('build_ext') if debug is None: debug = sys.flags.debug options['debug'] = ('ffiplatform', debug) options['force'] = ('ffiplatform', True) options['build_lib'] = ('ffiplatform', tmpdir) options['build_temp'] = ('ffiplatform', tmpdir) # try: old_level = set_threshold(0) or 0 try: set_verbosity(compiler_verbose) dist.run_command('build_ext') cmd_obj = dist.get_command_obj('build_ext') [soname] = cmd_obj.get_outputs() finally: set_threshold(old_level) except (CompileError, LinkError) as e: > raise VerificationError('%s: %s' % (e.__class__.__name__, e)) E VerificationError: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2 d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:54: VerificationError ---------------------------- Captured stdout call ----------------------------- generating d:\systemtemp\pytest\usession-main-595\recompiler\_CFFI_test_macro_var_callback.c ---------------------------- Captured stderr call ----------------------------- d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\cparser.py:165: UserWarning: Global variable 'my_value' in cdef(): for consistency with C it should have a storage class specifier (usually 'extern') "(usually 'extern')" % (decl.name,)) d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\cparser.py:165: UserWarning: Global variable 'get_my_value' in cdef(): for consistency with C it should have a storage class specifier (usually 'extern') "(usually 'extern')" % (decl.name,)) cl : Command line error D8021 : invalid numeric argument '/Wno-error=incompatible-pointer-types' _____________________ AppTestRecompiler.test_const_fields _____________________ self = <CallInfo when='call' exception: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2> func = <function <lambda> at 0x0000027925029268>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ..\_pytest\runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ..\_pytest\runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_const_fields'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_const_fields'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ..\_pytest\vendored_packages\pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00000279153616a8> hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_const_fields'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_const_fields'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ..\_pytest\vendored_packages\pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_const_fields'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_const_fields'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ..\_pytest\vendored_packages\pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_const_fields'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791fdf77b8> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...nst_fields'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00000279258f1ce0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00000279258f1ce0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...nst_fields'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_const_fields'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791fdf72e0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...nst_fields'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00000279258f1ca0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00000279258f1ca0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...nst_fields'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_const_fields'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ..\_pytest\vendored_packages\pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_const_fields'> def pytest_runtest_call(item): try: > item.runtest() ..\_pytest\runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_const_fields'> def runtest(self): target = self.obj if self.config.option.runappdirect: return target() space = target.im_self.space filename = self._getdynfilename(target) func = app2interp_temp(target.im_func, filename=filename) w_instance = self.parent.w_instance > self.execute_appex(space, func, space, w_instance) tool\pytest\apptest.py:89: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_const_fields'>, space = StdObjSpace target = <function test_const_fields at 0x0000027925029358> args = (StdObjSpace, <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>) def execute_appex(self, space, target, *args): self.space = space try: > target(*args) tool\pytest\apptest.py:30: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) w_func = <Function test_const_fields> args = <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8> def appcaller(space, *args_w): if not isinstance(space, ObjSpace): raise TypeError("first argument must be a space instance.") # the last argument can be an Arguments w_func = self.wget(space, name) if not args_w: return space.call_function(w_func) else: args = args_w[-1] assert args is not None if not isinstance(args, Arguments): > return space.call_function(w_func, *args_w) interpreter\gateway.py:1227: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <Function test_const_fields> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) nargs = 1, Function = <class 'pypy.interpreter.function.Function'> Method = <class 'pypy.interpreter.function.Method'> def call_function(self, w_func, *args_w): nargs = len(args_w) # used for pruning funccall versions if not self.config.objspace.disable_call_speedhacks and nargs < 5: # start of hack for performance from pypy.interpreter.function import Function, Method if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: if nargs < 4: func = w_func.w_function if isinstance(func, Function): return func.funccall(w_inst, *args_w) elif args_w and ( self.abstract_isinstance_w(args_w[0], w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): > return w_func.funccall(*args_w) interpreter\baseobjspace.py:1210: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <Function test_const_fields> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) gateway = <module 'pypy.interpreter.gateway' from 'd:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\interpreter\\gateway.pyc'> PyCode = <class 'pypy.interpreter.pycode.PyCode'> code = <code object test_const_fields, file '[d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:1142]', line 1> def funccall(self, *args_w): # speed hack from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit nargs = len(args_w) fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, args_w[0]) elif nargs == 2: assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, args_w[0], args_w[1]) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) return code.fastcall_3(self.space, self, args_w[0], args_w[1], args_w[2]) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) return code.fastcall_4(self.space, self, args_w[0], args_w[1], args_w[2], args_w[3]) elif (nargs | PyCode.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) if nargs < 5: new_frame = self.space.createframe(code, self.w_func_globals, self) for i in funccallunrolling: if i < nargs: new_frame.locals_cells_stack_w[i] = args_w[i] > return new_frame.run() interpreter\function.py:118: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_const_fi...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1142]', line 1> at line 5 def run(self): """Start this frame's execution.""" if self.getcode().co_flags & pycode.CO_GENERATOR: from pypy.interpreter.generator import GeneratorIterator return GeneratorIterator(self) else: > return self.execute_frame() interpreter\pyframe.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_const_fi...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1142]', line 1> at line 5 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, executioncontext) except OperationError: raise except Exception as e: # general fall-back > raise self._convert_unexpected_exception(e) interpreter\pyframe.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_const_fi...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1142]', line 1> at line 5 e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def _convert_unexpected_exception(self, e): from pypy.interpreter import error > operr = error.get_converted_unexpected_exception(self.space, e) interpreter\pyframe.py:943: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_const_fi...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1142]', line 1> at line 5 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, > executioncontext) interpreter\pyframe.py:286: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_const_fi...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1142]', line 1> at line 5 pycode = <code object test_const_fields, file '[d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:1142]', line 1> next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def dispatch(self, pycode, next_instr, ec): # For the sequel, force 'next_instr' to be unsigned for performance next_instr = r_uint(next_instr) co_code = pycode.co_code try: while True: > next_instr = self.handle_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:64: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_const_fi...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1142]', line 1> at line 5 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x01\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00|\x01\x00\xc9\x01\x00d\x03\x0...x00\x19d\x06\x00\x19j\x04\x00|\x01\x00\xc9\x01\x00d\t\x00\xca\x01\x00k\x08\x00s\xc2\x00t\x03\x00\x82\x01\x00d\x00\x00S' next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def handle_bytecode(self, co_code, next_instr, ec): try: > next_instr = self.dispatch_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:71: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_const_fi...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1142]', line 1> at line 5 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x01\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00|\x01\x00\xc9\x01\x00d\x03\x0...x00\x19d\x06\x00\x19j\x04\x00|\x01\x00\xc9\x01\x00d\t\x00\xca\x01\x00k\x08\x00s\xc2\x00t\x03\x00\x82\x01\x00d\x00\x00S' next_instr = 18L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> @jit.unroll_safe def dispatch_bytecode(self, co_code, next_instr, ec): while True: self.last_instr = intmask(next_instr) if jit.we_are_jitted(): if self.debugdata: ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) else: # Only reload next_instr from last_instr when something that # can modify it actually ran (trace function or action # dispatcher). In the common case (no trace, positive ticker) # next_instr is unchanged and the round-trip is skipped. _d = self.debugdata if ec.space.reverse_debugging or ( _d is not None and _d.w_f_trace is not None) or ( not we_are_translated() and 'bytecode_only_trace' in ec.__dict__): ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) actionflag = ec.space.actionflag if actionflag.decrement_ticker(TICK_COUNTER_STEP) < 0: actionflag.action_dispatcher(ec, self) next_instr = r_uint(self.last_instr) opcode = ord(co_code[next_instr]) next_instr += 1 if opcode >= HAVE_ARGUMENT: lo = ord(co_code[next_instr]) hi = ord(co_code[next_instr+1]) next_instr += 2 oparg = (hi * 256) | lo else: oparg = 0 # note: the structure of the code here is such that it makes # (after translation) a big "if/elif" chain, which is then # turned into a switch(). while opcode == opcodedesc.EXTENDED_ARG.index: opcode = ord(co_code[next_instr]) if opcode < HAVE_ARGUMENT: raise BytecodeCorruption lo = ord(co_code[next_instr+1]) hi = ord(co_code[next_instr+2]) next_instr += 3 oparg = (oparg * 65536) | (hi * 256) | lo if opcode == opcodedesc.RETURN_VALUE.index: if not self.blockstack_non_empty(): self.frame_finished_execution = True # for generators raise Return w_returnvalue = self.popvalue() block = self.unrollstack(SReturnValue.kind) if block is None: self.pushvalue(w_returnvalue) raise Return else: unroller = SReturnValue(w_returnvalue) next_instr = block.handle(self, unroller) return next_instr # now inside a 'finally' block elif opcode == opcodedesc.END_FINALLY.index: unroller = self.end_finally() if isinstance(unroller, SuspendedUnroller): # go on unrolling the stack block = self.unrollstack(unroller.kind) if block is None: w_result = unroller.nomoreblocks() self.pushvalue(w_result) raise Return else: next_instr = block.handle(self, unroller) return next_instr elif opcode == opcodedesc.JUMP_ABSOLUTE.index: return self.jump_absolute(oparg, ec) elif opcode == opcodedesc.BREAK_LOOP.index: next_instr = self.BREAK_LOOP(oparg, next_instr) elif opcode == opcodedesc.CONTINUE_LOOP.index: return self.CONTINUE_LOOP(oparg, next_instr) elif opcode == opcodedesc.FOR_ITER.index: next_instr = self.FOR_ITER(oparg, next_instr) elif opcode == opcodedesc.JUMP_FORWARD.index: next_instr = self.JUMP_FORWARD(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_FALSE_OR_POP.index: next_instr = self.JUMP_IF_FALSE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_NOT_DEBUG.index: next_instr = self.JUMP_IF_NOT_DEBUG(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_TRUE_OR_POP.index: next_instr = self.JUMP_IF_TRUE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_FALSE.index: next_instr = self.POP_JUMP_IF_FALSE(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_TRUE.index: next_instr = self.POP_JUMP_IF_TRUE(oparg, next_instr) elif opcode == opcodedesc.BINARY_ADD.index: self.BINARY_ADD(oparg, next_instr) elif opcode == opcodedesc.BINARY_AND.index: self.BINARY_AND(oparg, next_instr) elif opcode == opcodedesc.BINARY_DIVIDE.index: self.BINARY_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_FLOOR_DIVIDE.index: self.BINARY_FLOOR_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_LSHIFT.index: self.BINARY_LSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_MODULO.index: self.BINARY_MODULO(oparg, next_instr) elif opcode == opcodedesc.BINARY_MULTIPLY.index: self.BINARY_MULTIPLY(oparg, next_instr) elif opcode == opcodedesc.BINARY_OR.index: self.BINARY_OR(oparg, next_instr) elif opcode == opcodedesc.BINARY_POWER.index: self.BINARY_POWER(oparg, next_instr) elif opcode == opcodedesc.BINARY_RSHIFT.index: self.BINARY_RSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBSCR.index: self.BINARY_SUBSCR(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBTRACT.index: self.BINARY_SUBTRACT(oparg, next_instr) elif opcode == opcodedesc.BINARY_TRUE_DIVIDE.index: self.BINARY_TRUE_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_XOR.index: self.BINARY_XOR(oparg, next_instr) elif opcode == opcodedesc.BUILD_CLASS.index: self.BUILD_CLASS(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST.index: self.BUILD_LIST(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST_FROM_ARG.index: self.BUILD_LIST_FROM_ARG(oparg, next_instr) elif opcode == opcodedesc.BUILD_MAP.index: self.BUILD_MAP(oparg, next_instr) elif opcode == opcodedesc.BUILD_SET.index: self.BUILD_SET(oparg, next_instr) elif opcode == opcodedesc.BUILD_SLICE.index: self.BUILD_SLICE(oparg, next_instr) elif opcode == opcodedesc.BUILD_TUPLE.index: self.BUILD_TUPLE(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION.index: self.CALL_FUNCTION(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_KW.index: self.CALL_FUNCTION_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR.index: self.CALL_FUNCTION_VAR(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR_KW.index: self.CALL_FUNCTION_VAR_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_METHOD.index: > self.CALL_METHOD(oparg, next_instr) interpreter\pyopcode.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ f = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_const_fi...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1142]', line 1> at line 5 oparg = 3, ignored = (18L,), n_args = 3, n_kwargs = 0, w_self = None @jit.unroll_safe def CALL_METHOD(f, oparg, *ignored): # opargs contains the arg, and kwarg count, excluding the implicit 'self' n_args = oparg & 0xff n_kwargs = (oparg >> 8) & 0xff w_self = f.peekvalue_maybe_none(n_args + (2 * n_kwargs)) n = n_args + (w_self is not None) if not n_kwargs: w_callable = f.peekvalue(n_args + (2 * n_kwargs) + 1) w_result = f.space.call_valuestack( > w_callable, n, f, methodcall=w_self is not None, dropvalues=n_args + 2) objspace\std\callmethod.py:96: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_const_fi...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1142]', line 1> at line 5 dropvalues = 5, methodcall = False def call_valuestack(self, w_func, nargs, frame, dropvalues, methodcall=False): # methodcall is only used for better error messages in argument.py from pypy.interpreter.function import Function, Method, is_builtin_code if frame.get_is_being_profiled() and is_builtin_code(w_func): # XXX: this code is copied&pasted :-( from the slow path below # call_valuestack(). args = frame.make_arguments(nargs) frame.dropvalues(dropvalues) return self.call_args_and_c_profile(frame, w_func, args) if not self.config.objspace.disable_call_speedhacks: # start of hack for performance if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: w_func = w_func.w_function # reuse callable stack place for w_inst frame.settopvalue(w_inst, nargs) nargs += 1 methodcall = True elif nargs > 0 and ( self.abstract_isinstance_w(frame.peekvalue(nargs-1), # :-( w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): return w_func.funccall_valuestack( > nargs, frame, methodcall=methodcall, dropvalues=dropvalues) interpreter\baseobjspace.py:1243: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_const_fi...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1142]', line 1> at line 5 dropvalues = 5, methodcall = False def funccall_valuestack(self, nargs, frame, dropvalues, methodcall=False): # speed hack # methodcall is only for better error messages from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit # if (jit.we_are_jitted() and code is self.space._code_of_sys_exc_info and nargs == 0): frame.dropvalues(dropvalues) from pypy.module.sys.vm import exc_info_direct return exc_info_direct(self.space, frame) # fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: f_0 = frame.peekvalue(0) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, f_0) elif nargs == 2: f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, f_1, f_0) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) frame.dropvalues(dropvalues) return code.fastcall_3(self.space, self, f_2, f_1, f_0) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) f_3 = frame.peekvalue(3) frame.dropvalues(dropvalues) return code.fastcall_4(self.space, self, f_3, f_2, f_1, f_0) elif (nargs | Code.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) return self._flat_pycall(code, nargs, frame, dropvalues) elif fast_natural_arity & Code.FLATPYCALL: natural_arity = fast_natural_arity & 0xff if natural_arity > nargs >= natural_arity - len(self.defs_w): assert isinstance(code, PyCode) return self._flat_pycall_defaults(code, nargs, frame, natural_arity - nargs, dropvalues) elif fast_natural_arity == Code.PASSTHROUGHARGS1 and nargs >= 1: assert isinstance(code, gateway.BuiltinCodePassThroughArguments1) w_obj = frame.peekvalue(nargs-1) args = frame.make_arguments(nargs-1) frame.dropvalues(dropvalues) return code.funcrun_obj(self, w_obj, args) args = frame.make_arguments(nargs, methodcall=methodcall) frame.dropvalues(dropvalues) > return self.call_args(args) interpreter\function.py:190: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('struct foo_s { const int a; void *const b; };'), W_B...onst_fields'), W_BytesObject('struct foo_s { const int a; void *const b; };')]) def call_args(self, args): # delegate activation to code > w_res = self.getcode().funcrun(self, args) interpreter\function.py:68: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('struct foo_s { const int a; void *const b; };'), W_B...onst_fields'), W_BytesObject('struct foo_s { const int a; void *const b; };')]) def funcrun(self, func, args): > return BuiltinCode.funcrun_obj(self, func, None, args) interpreter\gateway.py:781: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('struct foo_s { const int a; void *const b; };'), W_B...onst_fields'), W_BytesObject('struct foo_s { const int a; void *const b; };')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: w_result = activation._run(space, scope_w) except DescrMismatch: if w_obj is not None: args = args.prepend(w_obj) return self._type_unwrap_mismatch(space, args) except Exception as e: > self.handle_exception(space, e) interpreter\gateway.py:795: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> space = StdObjSpace e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def handle_exception(self, space, e): try: if not we_are_translated(): raise raise e except OperationError: raise except Exception as e: # general fall-back from pypy.interpreter import error > raise error.get_converted_unexpected_exception(space, e) interpreter\gateway.py:819: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('struct foo_s { const int a; void *const b; };'), W_B...onst_fields'), W_BytesObject('struct foo_s { const int a; void *const b; };')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: > w_result = activation._run(space, scope_w) interpreter\gateway.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinActivation_UwS_ObjSpace_text_text_text_W_Root_W_Root_W_Root_int_W_Root object at 0x000002791c13af38> space = StdObjSpace scope_w = [W_BytesObject('struct foo_s { const int a; void *const b; };'), W_BytesObject('test_const_fields'), W_BytesObject('struct foo_s { const int a; void *const b; };'), None, None, None, ...] def _run(self, space, scope_w): > return self.behavior(space, space.text_w(scope_w[0]), space.text_w(scope_w[1]), space.text_w(scope_w[2]), scope_w[3], scope_w[4], scope_w[5], space.gateway_int_w(scope_w[6]), scope_w[7]) <3152-codegen d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\rpython\tool\sourcetools.py:200>:3: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace, cdef = 'struct foo_s { const int a; void *const b; };' module_name = '_CFFI_test_const_fields' source = 'struct foo_s { const int a; void *const b; };', w_includes = None w_extra_source = None, w_min_version = None, packed = 0 w_extra_compile_args = None @unwrap_spec(cdef='text', module_name='text', source='text', packed=int) def prepare(space, cdef, module_name, source, w_includes=None, w_extra_source=None, w_min_version=None, packed=False, w_extra_compile_args=None): try: import cffi from cffi import FFI # <== the system one, which from cffi import recompiler # needs to be at least cffi 1.0.4 from cffi import ffiplatform except ImportError: pytest.skip("system cffi module not found or older than 1.0.0") if w_min_version is None: min_version = (1, 4, 0) else: min_version = tuple(space.unwrap(w_min_version)) if cffi.__version_info__ < min_version: pytest.skip("system cffi module needs to be at least %s, got %s" % ( min_version, cffi.__version_info__)) space.appexec([], """(): import _cffi_backend # force it to be initialized """) includes = [] if w_includes: includes += space.unpackiterable(w_includes) assert module_name.startswith('test_') module_name = '_CFFI_' + module_name rdir = udir.ensure('recompiler', dir=1) rdir.join('Python.h').write( '#include <stdio.h>\n' '#define PYPY_VERSION XX\n' '#define PyMODINIT_FUNC /*exported*/ void\n' ) path = module_name.replace('.', os.sep) if '.' in module_name: subrdir = rdir.join(module_name[:module_name.index('.')]) os.mkdir(str(subrdir)) else: subrdir = rdir c_file = str(rdir.join('%s.c' % path)) ffi = FFI() for include_ffi_object in includes: ffi.include(include_ffi_object._test_recompiler_source_ffi) ffi.cdef(cdef, packed=packed) ffi.set_source(module_name, source) ffi.emit_c_code(c_file) base_module_name = module_name.split('.')[-1] sources = [] if w_extra_source is not None: sources.append(space.str_w(w_extra_source)) kwargs = {} # GCC 14 promotes -Wincompatible-pointer-types from a warning to an error # by default, which breaks cffi's intentionally-mismatched field-check # probes (e.g. test_misdeclared_field_1). Keep it a warning so the module # compiles and cffi's runtime checks can run. extra = ['-Wno-error=incompatible-pointer-types'] if w_extra_compile_args is not None: extra = extra + space.unwrap(w_extra_compile_args) kwargs['extra_compile_args'] = extra ext = ffiplatform.get_extension(c_file, module_name, include_dirs=[str(rdir)], export_symbols=['_cffi_pypyinit_' + base_module_name], sources=sources, **kwargs) > ffiplatform.compile(str(rdir), ext) module\_cffi_backend\test\test_recompiler.py:86: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x00000279258f83a0> compiler_verbose = 0, debug = None def compile(tmpdir, ext, compiler_verbose=0, debug=None): """Compile a C extension module using distutils.""" saved_environ = os.environ.copy() try: > outputfilename = _build(tmpdir, ext, compiler_verbose, debug) d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x00000279258f83a0> compiler_verbose = 0, debug = 0 def _build(tmpdir, ext, compiler_verbose=0, debug=None): # XXX compact but horrible :-( from cffi._shimmed_dist_utils import Distribution, CompileError, LinkError, set_threshold, set_verbosity dist = Distribution({'ext_modules': [ext]}) dist.parse_config_files() options = dist.get_option_dict('build_ext') if debug is None: debug = sys.flags.debug options['debug'] = ('ffiplatform', debug) options['force'] = ('ffiplatform', True) options['build_lib'] = ('ffiplatform', tmpdir) options['build_temp'] = ('ffiplatform', tmpdir) # try: old_level = set_threshold(0) or 0 try: set_verbosity(compiler_verbose) dist.run_command('build_ext') cmd_obj = dist.get_command_obj('build_ext') [soname] = cmd_obj.get_outputs() finally: set_threshold(old_level) except (CompileError, LinkError) as e: > raise VerificationError('%s: %s' % (e.__class__.__name__, e)) E VerificationError: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2 d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:54: VerificationError ---------------------------- Captured stdout call ----------------------------- generating d:\systemtemp\pytest\usession-main-595\recompiler\_CFFI_test_const_fields.c ---------------------------- Captured stderr call ----------------------------- cl : Command line error D8021 : invalid numeric argument '/Wno-error=incompatible-pointer-types' ___________________ AppTestRecompiler.test_restrict_fields ____________________ self = <CallInfo when='call' exception: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2> func = <function <lambda> at 0x000002792aa88110>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ..\_pytest\runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ..\_pytest\runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_restrict_fields'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_restrict_fields'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ..\_pytest\vendored_packages\pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00000279153616a8> hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_restrict_fields'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_restrict_fields'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ..\_pytest\vendored_packages\pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_restrict_fields'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_restrict_fields'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ..\_pytest\vendored_packages\pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_restrict_fields'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791a9edce0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...ict_fields'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00000279215a4d20> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00000279215a4d20> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...ict_fields'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_restrict_fields'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791a9edc90> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...ict_fields'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00000279215a4ce0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00000279215a4ce0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...ict_fields'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_restrict_fields'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ..\_pytest\vendored_packages\pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_restrict_fields'> def pytest_runtest_call(item): try: > item.runtest() ..\_pytest\runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_restrict_fields'> def runtest(self): target = self.obj if self.config.option.runappdirect: return target() space = target.im_self.space filename = self._getdynfilename(target) func = app2interp_temp(target.im_func, filename=filename) w_instance = self.parent.w_instance > self.execute_appex(space, func, space, w_instance) tool\pytest\apptest.py:89: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_restrict_fields'>, space = StdObjSpace target = <function test_restrict_fields at 0x000002792aa88188> args = (StdObjSpace, <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>) def execute_appex(self, space, target, *args): self.space = space try: > target(*args) tool\pytest\apptest.py:30: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) w_func = <Function test_restrict_fields> args = <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8> def appcaller(space, *args_w): if not isinstance(space, ObjSpace): raise TypeError("first argument must be a space instance.") # the last argument can be an Arguments w_func = self.wget(space, name) if not args_w: return space.call_function(w_func) else: args = args_w[-1] assert args is not None if not isinstance(args, Arguments): > return space.call_function(w_func, *args_w) interpreter\gateway.py:1227: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <Function test_restrict_fields> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) nargs = 1, Function = <class 'pypy.interpreter.function.Function'> Method = <class 'pypy.interpreter.function.Method'> def call_function(self, w_func, *args_w): nargs = len(args_w) # used for pruning funccall versions if not self.config.objspace.disable_call_speedhacks and nargs < 5: # start of hack for performance from pypy.interpreter.function import Function, Method if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: if nargs < 4: func = w_func.w_function if isinstance(func, Function): return func.funccall(w_inst, *args_w) elif args_w and ( self.abstract_isinstance_w(args_w[0], w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): > return w_func.funccall(*args_w) interpreter\baseobjspace.py:1210: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <Function test_restrict_fields> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) gateway = <module 'pypy.interpreter.gateway' from 'd:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\interpreter\\gateway.pyc'> PyCode = <class 'pypy.interpreter.pycode.PyCode'> code = <code object test_restrict_fields, file '[d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:1153]', line 1> def funccall(self, *args_w): # speed hack from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit nargs = len(args_w) fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, args_w[0]) elif nargs == 2: assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, args_w[0], args_w[1]) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) return code.fastcall_3(self.space, self, args_w[0], args_w[1], args_w[2]) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) return code.fastcall_4(self.space, self, args_w[0], args_w[1], args_w[2], args_w[3]) elif (nargs | PyCode.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) if nargs < 5: new_frame = self.space.createframe(code, self.w_func_globals, self) for i in funccallunrolling: if i < nargs: new_frame.locals_cells_stack_w[i] = args_w[i] > return new_frame.run() interpreter\function.py:118: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_restrict...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1153]', line 1> at line 5 def run(self): """Start this frame's execution.""" if self.getcode().co_flags & pycode.CO_GENERATOR: from pypy.interpreter.generator import GeneratorIterator return GeneratorIterator(self) else: > return self.execute_frame() interpreter\pyframe.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_restrict...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1153]', line 1> at line 5 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, executioncontext) except OperationError: raise except Exception as e: # general fall-back > raise self._convert_unexpected_exception(e) interpreter\pyframe.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_restrict...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1153]', line 1> at line 5 e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def _convert_unexpected_exception(self, e): from pypy.interpreter import error > operr = error.get_converted_unexpected_exception(self.space, e) interpreter\pyframe.py:943: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_restrict...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1153]', line 1> at line 5 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, > executioncontext) interpreter\pyframe.py:286: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_restrict...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1153]', line 1> at line 5 pycode = <code object test_restrict_fields, file '[d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:1153]', line 1> next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def dispatch(self, pycode, next_instr, ec): # For the sequel, force 'next_instr' to be unsigned for performance next_instr = r_uint(next_instr) co_code = pycode.co_code try: while True: > next_instr = self.handle_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:64: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_restrict...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1153]', line 1> at line 5 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00|\x01\x00\xc9\x01\x00d\x04\x0...\x00\x19d\x07\x00\x19j\x04\x00|\x01\x00\xc9\x01\x00d\x08\x00\xca\x01\x00k\x08\x00sv\x00t\x03\x00\x82\x01\x00d\x00\x00S' next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def handle_bytecode(self, co_code, next_instr, ec): try: > next_instr = self.dispatch_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:71: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_restrict...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1153]', line 1> at line 5 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00|\x01\x00\xc9\x01\x00d\x04\x0...\x00\x19d\x07\x00\x19j\x04\x00|\x01\x00\xc9\x01\x00d\x08\x00\xca\x01\x00k\x08\x00sv\x00t\x03\x00\x82\x01\x00d\x00\x00S' next_instr = 18L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> @jit.unroll_safe def dispatch_bytecode(self, co_code, next_instr, ec): while True: self.last_instr = intmask(next_instr) if jit.we_are_jitted(): if self.debugdata: ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) else: # Only reload next_instr from last_instr when something that # can modify it actually ran (trace function or action # dispatcher). In the common case (no trace, positive ticker) # next_instr is unchanged and the round-trip is skipped. _d = self.debugdata if ec.space.reverse_debugging or ( _d is not None and _d.w_f_trace is not None) or ( not we_are_translated() and 'bytecode_only_trace' in ec.__dict__): ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) actionflag = ec.space.actionflag if actionflag.decrement_ticker(TICK_COUNTER_STEP) < 0: actionflag.action_dispatcher(ec, self) next_instr = r_uint(self.last_instr) opcode = ord(co_code[next_instr]) next_instr += 1 if opcode >= HAVE_ARGUMENT: lo = ord(co_code[next_instr]) hi = ord(co_code[next_instr+1]) next_instr += 2 oparg = (hi * 256) | lo else: oparg = 0 # note: the structure of the code here is such that it makes # (after translation) a big "if/elif" chain, which is then # turned into a switch(). while opcode == opcodedesc.EXTENDED_ARG.index: opcode = ord(co_code[next_instr]) if opcode < HAVE_ARGUMENT: raise BytecodeCorruption lo = ord(co_code[next_instr+1]) hi = ord(co_code[next_instr+2]) next_instr += 3 oparg = (oparg * 65536) | (hi * 256) | lo if opcode == opcodedesc.RETURN_VALUE.index: if not self.blockstack_non_empty(): self.frame_finished_execution = True # for generators raise Return w_returnvalue = self.popvalue() block = self.unrollstack(SReturnValue.kind) if block is None: self.pushvalue(w_returnvalue) raise Return else: unroller = SReturnValue(w_returnvalue) next_instr = block.handle(self, unroller) return next_instr # now inside a 'finally' block elif opcode == opcodedesc.END_FINALLY.index: unroller = self.end_finally() if isinstance(unroller, SuspendedUnroller): # go on unrolling the stack block = self.unrollstack(unroller.kind) if block is None: w_result = unroller.nomoreblocks() self.pushvalue(w_result) raise Return else: next_instr = block.handle(self, unroller) return next_instr elif opcode == opcodedesc.JUMP_ABSOLUTE.index: return self.jump_absolute(oparg, ec) elif opcode == opcodedesc.BREAK_LOOP.index: next_instr = self.BREAK_LOOP(oparg, next_instr) elif opcode == opcodedesc.CONTINUE_LOOP.index: return self.CONTINUE_LOOP(oparg, next_instr) elif opcode == opcodedesc.FOR_ITER.index: next_instr = self.FOR_ITER(oparg, next_instr) elif opcode == opcodedesc.JUMP_FORWARD.index: next_instr = self.JUMP_FORWARD(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_FALSE_OR_POP.index: next_instr = self.JUMP_IF_FALSE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_NOT_DEBUG.index: next_instr = self.JUMP_IF_NOT_DEBUG(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_TRUE_OR_POP.index: next_instr = self.JUMP_IF_TRUE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_FALSE.index: next_instr = self.POP_JUMP_IF_FALSE(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_TRUE.index: next_instr = self.POP_JUMP_IF_TRUE(oparg, next_instr) elif opcode == opcodedesc.BINARY_ADD.index: self.BINARY_ADD(oparg, next_instr) elif opcode == opcodedesc.BINARY_AND.index: self.BINARY_AND(oparg, next_instr) elif opcode == opcodedesc.BINARY_DIVIDE.index: self.BINARY_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_FLOOR_DIVIDE.index: self.BINARY_FLOOR_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_LSHIFT.index: self.BINARY_LSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_MODULO.index: self.BINARY_MODULO(oparg, next_instr) elif opcode == opcodedesc.BINARY_MULTIPLY.index: self.BINARY_MULTIPLY(oparg, next_instr) elif opcode == opcodedesc.BINARY_OR.index: self.BINARY_OR(oparg, next_instr) elif opcode == opcodedesc.BINARY_POWER.index: self.BINARY_POWER(oparg, next_instr) elif opcode == opcodedesc.BINARY_RSHIFT.index: self.BINARY_RSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBSCR.index: self.BINARY_SUBSCR(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBTRACT.index: self.BINARY_SUBTRACT(oparg, next_instr) elif opcode == opcodedesc.BINARY_TRUE_DIVIDE.index: self.BINARY_TRUE_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_XOR.index: self.BINARY_XOR(oparg, next_instr) elif opcode == opcodedesc.BUILD_CLASS.index: self.BUILD_CLASS(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST.index: self.BUILD_LIST(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST_FROM_ARG.index: self.BUILD_LIST_FROM_ARG(oparg, next_instr) elif opcode == opcodedesc.BUILD_MAP.index: self.BUILD_MAP(oparg, next_instr) elif opcode == opcodedesc.BUILD_SET.index: self.BUILD_SET(oparg, next_instr) elif opcode == opcodedesc.BUILD_SLICE.index: self.BUILD_SLICE(oparg, next_instr) elif opcode == opcodedesc.BUILD_TUPLE.index: self.BUILD_TUPLE(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION.index: self.CALL_FUNCTION(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_KW.index: self.CALL_FUNCTION_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR.index: self.CALL_FUNCTION_VAR(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR_KW.index: self.CALL_FUNCTION_VAR_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_METHOD.index: > self.CALL_METHOD(oparg, next_instr) interpreter\pyopcode.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ f = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_restrict...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1153]', line 1> at line 5 oparg = 3, ignored = (18L,), n_args = 3, n_kwargs = 0, w_self = None @jit.unroll_safe def CALL_METHOD(f, oparg, *ignored): # opargs contains the arg, and kwarg count, excluding the implicit 'self' n_args = oparg & 0xff n_kwargs = (oparg >> 8) & 0xff w_self = f.peekvalue_maybe_none(n_args + (2 * n_kwargs)) n = n_args + (w_self is not None) if not n_kwargs: w_callable = f.peekvalue(n_args + (2 * n_kwargs) + 1) w_result = f.space.call_valuestack( > w_callable, n, f, methodcall=w_self is not None, dropvalues=n_args + 2) objspace\std\callmethod.py:96: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_restrict...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1153]', line 1> at line 5 dropvalues = 5, methodcall = False def call_valuestack(self, w_func, nargs, frame, dropvalues, methodcall=False): # methodcall is only used for better error messages in argument.py from pypy.interpreter.function import Function, Method, is_builtin_code if frame.get_is_being_profiled() and is_builtin_code(w_func): # XXX: this code is copied&pasted :-( from the slow path below # call_valuestack(). args = frame.make_arguments(nargs) frame.dropvalues(dropvalues) return self.call_args_and_c_profile(frame, w_func, args) if not self.config.objspace.disable_call_speedhacks: # start of hack for performance if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: w_func = w_func.w_function # reuse callable stack place for w_inst frame.settopvalue(w_inst, nargs) nargs += 1 methodcall = True elif nargs > 0 and ( self.abstract_isinstance_w(frame.peekvalue(nargs-1), # :-( w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): return w_func.funccall_valuestack( > nargs, frame, methodcall=methodcall, dropvalues=dropvalues) interpreter\baseobjspace.py:1243: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_restrict...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1153]', line 1> at line 5 dropvalues = 5, methodcall = False def funccall_valuestack(self, nargs, frame, dropvalues, methodcall=False): # speed hack # methodcall is only for better error messages from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit # if (jit.we_are_jitted() and code is self.space._code_of_sys_exc_info and nargs == 0): frame.dropvalues(dropvalues) from pypy.module.sys.vm import exc_info_direct return exc_info_direct(self.space, frame) # fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: f_0 = frame.peekvalue(0) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, f_0) elif nargs == 2: f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, f_1, f_0) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) frame.dropvalues(dropvalues) return code.fastcall_3(self.space, self, f_2, f_1, f_0) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) f_3 = frame.peekvalue(3) frame.dropvalues(dropvalues) return code.fastcall_4(self.space, self, f_3, f_2, f_1, f_0) elif (nargs | Code.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) return self._flat_pycall(code, nargs, frame, dropvalues) elif fast_natural_arity & Code.FLATPYCALL: natural_arity = fast_natural_arity & 0xff if natural_arity > nargs >= natural_arity - len(self.defs_w): assert isinstance(code, PyCode) return self._flat_pycall_defaults(code, nargs, frame, natural_arity - nargs, dropvalues) elif fast_natural_arity == Code.PASSTHROUGHARGS1 and nargs >= 1: assert isinstance(code, gateway.BuiltinCodePassThroughArguments1) w_obj = frame.peekvalue(nargs-1) args = frame.make_arguments(nargs-1) frame.dropvalues(dropvalues) return code.funcrun_obj(self, w_obj, args) args = frame.make_arguments(nargs, methodcall=methodcall) frame.dropvalues(dropvalues) > return self.call_args(args) interpreter\function.py:190: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('struct foo_s { void * restrict b; };'), W_BytesObjec...st_restrict_fields'), W_BytesObject('struct foo_s { void * __restrict b; };')]) def call_args(self, args): # delegate activation to code > w_res = self.getcode().funcrun(self, args) interpreter\function.py:68: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('struct foo_s { void * restrict b; };'), W_BytesObjec...st_restrict_fields'), W_BytesObject('struct foo_s { void * __restrict b; };')]) def funcrun(self, func, args): > return BuiltinCode.funcrun_obj(self, func, None, args) interpreter\gateway.py:781: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('struct foo_s { void * restrict b; };'), W_BytesObjec...st_restrict_fields'), W_BytesObject('struct foo_s { void * __restrict b; };')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: w_result = activation._run(space, scope_w) except DescrMismatch: if w_obj is not None: args = args.prepend(w_obj) return self._type_unwrap_mismatch(space, args) except Exception as e: > self.handle_exception(space, e) interpreter\gateway.py:795: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> space = StdObjSpace e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def handle_exception(self, space, e): try: if not we_are_translated(): raise raise e except OperationError: raise except Exception as e: # general fall-back from pypy.interpreter import error > raise error.get_converted_unexpected_exception(space, e) interpreter\gateway.py:819: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('struct foo_s { void * restrict b; };'), W_BytesObjec...st_restrict_fields'), W_BytesObject('struct foo_s { void * __restrict b; };')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: > w_result = activation._run(space, scope_w) interpreter\gateway.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinActivation_UwS_ObjSpace_text_text_text_W_Root_W_Root_W_Root_int_W_Root object at 0x000002791c13af38> space = StdObjSpace scope_w = [W_BytesObject('struct foo_s { void * restrict b; };'), W_BytesObject('test_restrict_fields'), W_BytesObject('struct foo_s { void * __restrict b; };'), None, None, None, ...] def _run(self, space, scope_w): > return self.behavior(space, space.text_w(scope_w[0]), space.text_w(scope_w[1]), space.text_w(scope_w[2]), scope_w[3], scope_w[4], scope_w[5], space.gateway_int_w(scope_w[6]), scope_w[7]) <3152-codegen d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\rpython\tool\sourcetools.py:200>:3: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace, cdef = 'struct foo_s { void * restrict b; };' module_name = '_CFFI_test_restrict_fields' source = 'struct foo_s { void * __restrict b; };', w_includes = None w_extra_source = None, w_min_version = None, packed = 0 w_extra_compile_args = None @unwrap_spec(cdef='text', module_name='text', source='text', packed=int) def prepare(space, cdef, module_name, source, w_includes=None, w_extra_source=None, w_min_version=None, packed=False, w_extra_compile_args=None): try: import cffi from cffi import FFI # <== the system one, which from cffi import recompiler # needs to be at least cffi 1.0.4 from cffi import ffiplatform except ImportError: pytest.skip("system cffi module not found or older than 1.0.0") if w_min_version is None: min_version = (1, 4, 0) else: min_version = tuple(space.unwrap(w_min_version)) if cffi.__version_info__ < min_version: pytest.skip("system cffi module needs to be at least %s, got %s" % ( min_version, cffi.__version_info__)) space.appexec([], """(): import _cffi_backend # force it to be initialized """) includes = [] if w_includes: includes += space.unpackiterable(w_includes) assert module_name.startswith('test_') module_name = '_CFFI_' + module_name rdir = udir.ensure('recompiler', dir=1) rdir.join('Python.h').write( '#include <stdio.h>\n' '#define PYPY_VERSION XX\n' '#define PyMODINIT_FUNC /*exported*/ void\n' ) path = module_name.replace('.', os.sep) if '.' in module_name: subrdir = rdir.join(module_name[:module_name.index('.')]) os.mkdir(str(subrdir)) else: subrdir = rdir c_file = str(rdir.join('%s.c' % path)) ffi = FFI() for include_ffi_object in includes: ffi.include(include_ffi_object._test_recompiler_source_ffi) ffi.cdef(cdef, packed=packed) ffi.set_source(module_name, source) ffi.emit_c_code(c_file) base_module_name = module_name.split('.')[-1] sources = [] if w_extra_source is not None: sources.append(space.str_w(w_extra_source)) kwargs = {} # GCC 14 promotes -Wincompatible-pointer-types from a warning to an error # by default, which breaks cffi's intentionally-mismatched field-check # probes (e.g. test_misdeclared_field_1). Keep it a warning so the module # compiles and cffi's runtime checks can run. extra = ['-Wno-error=incompatible-pointer-types'] if w_extra_compile_args is not None: extra = extra + space.unwrap(w_extra_compile_args) kwargs['extra_compile_args'] = extra ext = ffiplatform.get_extension(c_file, module_name, include_dirs=[str(rdir)], export_symbols=['_cffi_pypyinit_' + base_module_name], sources=sources, **kwargs) > ffiplatform.compile(str(rdir), ext) module\_cffi_backend\test\test_recompiler.py:86: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x00000279214a99a0> compiler_verbose = 0, debug = None def compile(tmpdir, ext, compiler_verbose=0, debug=None): """Compile a C extension module using distutils.""" saved_environ = os.environ.copy() try: > outputfilename = _build(tmpdir, ext, compiler_verbose, debug) d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x00000279214a99a0> compiler_verbose = 0, debug = 0 def _build(tmpdir, ext, compiler_verbose=0, debug=None): # XXX compact but horrible :-( from cffi._shimmed_dist_utils import Distribution, CompileError, LinkError, set_threshold, set_verbosity dist = Distribution({'ext_modules': [ext]}) dist.parse_config_files() options = dist.get_option_dict('build_ext') if debug is None: debug = sys.flags.debug options['debug'] = ('ffiplatform', debug) options['force'] = ('ffiplatform', True) options['build_lib'] = ('ffiplatform', tmpdir) options['build_temp'] = ('ffiplatform', tmpdir) # try: old_level = set_threshold(0) or 0 try: set_verbosity(compiler_verbose) dist.run_command('build_ext') cmd_obj = dist.get_command_obj('build_ext') [soname] = cmd_obj.get_outputs() finally: set_threshold(old_level) except (CompileError, LinkError) as e: > raise VerificationError('%s: %s' % (e.__class__.__name__, e)) E VerificationError: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2 d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:54: VerificationError ---------------------------- Captured stdout call ----------------------------- generating d:\systemtemp\pytest\usession-main-595\recompiler\_CFFI_test_restrict_fields.c ---------------------------- Captured stderr call ----------------------------- cl : Command line error D8021 : invalid numeric argument '/Wno-error=incompatible-pointer-types' ___________________ AppTestRecompiler.test_volatile_fields ____________________ self = <CallInfo when='call' exception: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2> func = <function <lambda> at 0x000002791c62c368>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ..\_pytest\runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ..\_pytest\runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_volatile_fields'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_volatile_fields'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ..\_pytest\vendored_packages\pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00000279153616a8> hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_volatile_fields'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_volatile_fields'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ..\_pytest\vendored_packages\pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_volatile_fields'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_volatile_fields'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ..\_pytest\vendored_packages\pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_volatile_fields'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791bd3a2c8> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...ile_fields'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792a80a2a0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792a80a2a0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...ile_fields'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_volatile_fields'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791bd3a250> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...ile_fields'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792a80a260> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792a80a260> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...ile_fields'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_volatile_fields'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ..\_pytest\vendored_packages\pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_volatile_fields'> def pytest_runtest_call(item): try: > item.runtest() ..\_pytest\runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_volatile_fields'> def runtest(self): target = self.obj if self.config.option.runappdirect: return target() space = target.im_self.space filename = self._getdynfilename(target) func = app2interp_temp(target.im_func, filename=filename) w_instance = self.parent.w_instance > self.execute_appex(space, func, space, w_instance) tool\pytest\apptest.py:89: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_volatile_fields'>, space = StdObjSpace target = <function test_volatile_fields at 0x000002791c62cd40> args = (StdObjSpace, <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>) def execute_appex(self, space, target, *args): self.space = space try: > target(*args) tool\pytest\apptest.py:30: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) w_func = <Function test_volatile_fields> args = <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8> def appcaller(space, *args_w): if not isinstance(space, ObjSpace): raise TypeError("first argument must be a space instance.") # the last argument can be an Arguments w_func = self.wget(space, name) if not args_w: return space.call_function(w_func) else: args = args_w[-1] assert args is not None if not isinstance(args, Arguments): > return space.call_function(w_func, *args_w) interpreter\gateway.py:1227: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <Function test_volatile_fields> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) nargs = 1, Function = <class 'pypy.interpreter.function.Function'> Method = <class 'pypy.interpreter.function.Method'> def call_function(self, w_func, *args_w): nargs = len(args_w) # used for pruning funccall versions if not self.config.objspace.disable_call_speedhacks and nargs < 5: # start of hack for performance from pypy.interpreter.function import Function, Method if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: if nargs < 4: func = w_func.w_function if isinstance(func, Function): return func.funccall(w_inst, *args_w) elif args_w and ( self.abstract_isinstance_w(args_w[0], w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): > return w_func.funccall(*args_w) interpreter\baseobjspace.py:1210: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <Function test_volatile_fields> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) gateway = <module 'pypy.interpreter.gateway' from 'd:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\interpreter\\gateway.pyc'> PyCode = <class 'pypy.interpreter.pycode.PyCode'> code = <code object test_volatile_fields, file '[d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:1162]', line 1> def funccall(self, *args_w): # speed hack from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit nargs = len(args_w) fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, args_w[0]) elif nargs == 2: assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, args_w[0], args_w[1]) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) return code.fastcall_3(self.space, self, args_w[0], args_w[1], args_w[2]) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) return code.fastcall_4(self.space, self, args_w[0], args_w[1], args_w[2], args_w[3]) elif (nargs | PyCode.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) if nargs < 5: new_frame = self.space.createframe(code, self.w_func_globals, self) for i in funccallunrolling: if i < nargs: new_frame.locals_cells_stack_w[i] = args_w[i] > return new_frame.run() interpreter\function.py:118: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_volatile...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1162]', line 1> at line 5 def run(self): """Start this frame's execution.""" if self.getcode().co_flags & pycode.CO_GENERATOR: from pypy.interpreter.generator import GeneratorIterator return GeneratorIterator(self) else: > return self.execute_frame() interpreter\pyframe.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_volatile...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1162]', line 1> at line 5 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, executioncontext) except OperationError: raise except Exception as e: # general fall-back > raise self._convert_unexpected_exception(e) interpreter\pyframe.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_volatile...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1162]', line 1> at line 5 e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def _convert_unexpected_exception(self, e): from pypy.interpreter import error > operr = error.get_converted_unexpected_exception(self.space, e) interpreter\pyframe.py:943: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_volatile...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1162]', line 1> at line 5 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, > executioncontext) interpreter\pyframe.py:286: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_volatile...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1162]', line 1> at line 5 pycode = <code object test_volatile_fields, file '[d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:1162]', line 1> next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def dispatch(self, pycode, next_instr, ec): # For the sequel, force 'next_instr' to be unsigned for performance next_instr = r_uint(next_instr) co_code = pycode.co_code try: while True: > next_instr = self.handle_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:64: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_volatile...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1162]', line 1> at line 5 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x01\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00|\x01\x00\xc9\x01\x00d\x03\x0...\x00\x19d\x06\x00\x19j\x04\x00|\x01\x00\xc9\x01\x00d\x07\x00\xca\x01\x00k\x08\x00sv\x00t\x03\x00\x82\x01\x00d\x00\x00S' next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def handle_bytecode(self, co_code, next_instr, ec): try: > next_instr = self.dispatch_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:71: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_volatile...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1162]', line 1> at line 5 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x01\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00|\x01\x00\xc9\x01\x00d\x03\x0...\x00\x19d\x06\x00\x19j\x04\x00|\x01\x00\xc9\x01\x00d\x07\x00\xca\x01\x00k\x08\x00sv\x00t\x03\x00\x82\x01\x00d\x00\x00S' next_instr = 18L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> @jit.unroll_safe def dispatch_bytecode(self, co_code, next_instr, ec): while True: self.last_instr = intmask(next_instr) if jit.we_are_jitted(): if self.debugdata: ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) else: # Only reload next_instr from last_instr when something that # can modify it actually ran (trace function or action # dispatcher). In the common case (no trace, positive ticker) # next_instr is unchanged and the round-trip is skipped. _d = self.debugdata if ec.space.reverse_debugging or ( _d is not None and _d.w_f_trace is not None) or ( not we_are_translated() and 'bytecode_only_trace' in ec.__dict__): ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) actionflag = ec.space.actionflag if actionflag.decrement_ticker(TICK_COUNTER_STEP) < 0: actionflag.action_dispatcher(ec, self) next_instr = r_uint(self.last_instr) opcode = ord(co_code[next_instr]) next_instr += 1 if opcode >= HAVE_ARGUMENT: lo = ord(co_code[next_instr]) hi = ord(co_code[next_instr+1]) next_instr += 2 oparg = (hi * 256) | lo else: oparg = 0 # note: the structure of the code here is such that it makes # (after translation) a big "if/elif" chain, which is then # turned into a switch(). while opcode == opcodedesc.EXTENDED_ARG.index: opcode = ord(co_code[next_instr]) if opcode < HAVE_ARGUMENT: raise BytecodeCorruption lo = ord(co_code[next_instr+1]) hi = ord(co_code[next_instr+2]) next_instr += 3 oparg = (oparg * 65536) | (hi * 256) | lo if opcode == opcodedesc.RETURN_VALUE.index: if not self.blockstack_non_empty(): self.frame_finished_execution = True # for generators raise Return w_returnvalue = self.popvalue() block = self.unrollstack(SReturnValue.kind) if block is None: self.pushvalue(w_returnvalue) raise Return else: unroller = SReturnValue(w_returnvalue) next_instr = block.handle(self, unroller) return next_instr # now inside a 'finally' block elif opcode == opcodedesc.END_FINALLY.index: unroller = self.end_finally() if isinstance(unroller, SuspendedUnroller): # go on unrolling the stack block = self.unrollstack(unroller.kind) if block is None: w_result = unroller.nomoreblocks() self.pushvalue(w_result) raise Return else: next_instr = block.handle(self, unroller) return next_instr elif opcode == opcodedesc.JUMP_ABSOLUTE.index: return self.jump_absolute(oparg, ec) elif opcode == opcodedesc.BREAK_LOOP.index: next_instr = self.BREAK_LOOP(oparg, next_instr) elif opcode == opcodedesc.CONTINUE_LOOP.index: return self.CONTINUE_LOOP(oparg, next_instr) elif opcode == opcodedesc.FOR_ITER.index: next_instr = self.FOR_ITER(oparg, next_instr) elif opcode == opcodedesc.JUMP_FORWARD.index: next_instr = self.JUMP_FORWARD(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_FALSE_OR_POP.index: next_instr = self.JUMP_IF_FALSE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_NOT_DEBUG.index: next_instr = self.JUMP_IF_NOT_DEBUG(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_TRUE_OR_POP.index: next_instr = self.JUMP_IF_TRUE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_FALSE.index: next_instr = self.POP_JUMP_IF_FALSE(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_TRUE.index: next_instr = self.POP_JUMP_IF_TRUE(oparg, next_instr) elif opcode == opcodedesc.BINARY_ADD.index: self.BINARY_ADD(oparg, next_instr) elif opcode == opcodedesc.BINARY_AND.index: self.BINARY_AND(oparg, next_instr) elif opcode == opcodedesc.BINARY_DIVIDE.index: self.BINARY_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_FLOOR_DIVIDE.index: self.BINARY_FLOOR_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_LSHIFT.index: self.BINARY_LSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_MODULO.index: self.BINARY_MODULO(oparg, next_instr) elif opcode == opcodedesc.BINARY_MULTIPLY.index: self.BINARY_MULTIPLY(oparg, next_instr) elif opcode == opcodedesc.BINARY_OR.index: self.BINARY_OR(oparg, next_instr) elif opcode == opcodedesc.BINARY_POWER.index: self.BINARY_POWER(oparg, next_instr) elif opcode == opcodedesc.BINARY_RSHIFT.index: self.BINARY_RSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBSCR.index: self.BINARY_SUBSCR(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBTRACT.index: self.BINARY_SUBTRACT(oparg, next_instr) elif opcode == opcodedesc.BINARY_TRUE_DIVIDE.index: self.BINARY_TRUE_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_XOR.index: self.BINARY_XOR(oparg, next_instr) elif opcode == opcodedesc.BUILD_CLASS.index: self.BUILD_CLASS(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST.index: self.BUILD_LIST(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST_FROM_ARG.index: self.BUILD_LIST_FROM_ARG(oparg, next_instr) elif opcode == opcodedesc.BUILD_MAP.index: self.BUILD_MAP(oparg, next_instr) elif opcode == opcodedesc.BUILD_SET.index: self.BUILD_SET(oparg, next_instr) elif opcode == opcodedesc.BUILD_SLICE.index: self.BUILD_SLICE(oparg, next_instr) elif opcode == opcodedesc.BUILD_TUPLE.index: self.BUILD_TUPLE(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION.index: self.CALL_FUNCTION(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_KW.index: self.CALL_FUNCTION_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR.index: self.CALL_FUNCTION_VAR(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR_KW.index: self.CALL_FUNCTION_VAR_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_METHOD.index: > self.CALL_METHOD(oparg, next_instr) interpreter\pyopcode.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ f = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_volatile...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1162]', line 1> at line 5 oparg = 3, ignored = (18L,), n_args = 3, n_kwargs = 0, w_self = None @jit.unroll_safe def CALL_METHOD(f, oparg, *ignored): # opargs contains the arg, and kwarg count, excluding the implicit 'self' n_args = oparg & 0xff n_kwargs = (oparg >> 8) & 0xff w_self = f.peekvalue_maybe_none(n_args + (2 * n_kwargs)) n = n_args + (w_self is not None) if not n_kwargs: w_callable = f.peekvalue(n_args + (2 * n_kwargs) + 1) w_result = f.space.call_valuestack( > w_callable, n, f, methodcall=w_self is not None, dropvalues=n_args + 2) objspace\std\callmethod.py:96: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_volatile...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1162]', line 1> at line 5 dropvalues = 5, methodcall = False def call_valuestack(self, w_func, nargs, frame, dropvalues, methodcall=False): # methodcall is only used for better error messages in argument.py from pypy.interpreter.function import Function, Method, is_builtin_code if frame.get_is_being_profiled() and is_builtin_code(w_func): # XXX: this code is copied&pasted :-( from the slow path below # call_valuestack(). args = frame.make_arguments(nargs) frame.dropvalues(dropvalues) return self.call_args_and_c_profile(frame, w_func, args) if not self.config.objspace.disable_call_speedhacks: # start of hack for performance if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: w_func = w_func.w_function # reuse callable stack place for w_inst frame.settopvalue(w_inst, nargs) nargs += 1 methodcall = True elif nargs > 0 and ( self.abstract_isinstance_w(frame.peekvalue(nargs-1), # :-( w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): return w_func.funccall_valuestack( > nargs, frame, methodcall=methodcall, dropvalues=dropvalues) interpreter\baseobjspace.py:1243: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_volatile...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1162]', line 1> at line 5 dropvalues = 5, methodcall = False def funccall_valuestack(self, nargs, frame, dropvalues, methodcall=False): # speed hack # methodcall is only for better error messages from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit # if (jit.we_are_jitted() and code is self.space._code_of_sys_exc_info and nargs == 0): frame.dropvalues(dropvalues) from pypy.module.sys.vm import exc_info_direct return exc_info_direct(self.space, frame) # fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: f_0 = frame.peekvalue(0) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, f_0) elif nargs == 2: f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, f_1, f_0) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) frame.dropvalues(dropvalues) return code.fastcall_3(self.space, self, f_2, f_1, f_0) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) f_3 = frame.peekvalue(3) frame.dropvalues(dropvalues) return code.fastcall_4(self.space, self, f_3, f_2, f_1, f_0) elif (nargs | Code.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) return self._flat_pycall(code, nargs, frame, dropvalues) elif fast_natural_arity & Code.FLATPYCALL: natural_arity = fast_natural_arity & 0xff if natural_arity > nargs >= natural_arity - len(self.defs_w): assert isinstance(code, PyCode) return self._flat_pycall_defaults(code, nargs, frame, natural_arity - nargs, dropvalues) elif fast_natural_arity == Code.PASSTHROUGHARGS1 and nargs >= 1: assert isinstance(code, gateway.BuiltinCodePassThroughArguments1) w_obj = frame.peekvalue(nargs-1) args = frame.make_arguments(nargs-1) frame.dropvalues(dropvalues) return code.funcrun_obj(self, w_obj, args) args = frame.make_arguments(nargs, methodcall=methodcall) frame.dropvalues(dropvalues) > return self.call_args(args) interpreter\function.py:190: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('struct foo_s { void * volatile b; };'), W_BytesObject('test_volatile_fields'), W_BytesObject('struct foo_s { void * volatile b; };')]) def call_args(self, args): # delegate activation to code > w_res = self.getcode().funcrun(self, args) interpreter\function.py:68: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('struct foo_s { void * volatile b; };'), W_BytesObject('test_volatile_fields'), W_BytesObject('struct foo_s { void * volatile b; };')]) def funcrun(self, func, args): > return BuiltinCode.funcrun_obj(self, func, None, args) interpreter\gateway.py:781: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('struct foo_s { void * volatile b; };'), W_BytesObject('test_volatile_fields'), W_BytesObject('struct foo_s { void * volatile b; };')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: w_result = activation._run(space, scope_w) except DescrMismatch: if w_obj is not None: args = args.prepend(w_obj) return self._type_unwrap_mismatch(space, args) except Exception as e: > self.handle_exception(space, e) interpreter\gateway.py:795: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> space = StdObjSpace e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def handle_exception(self, space, e): try: if not we_are_translated(): raise raise e except OperationError: raise except Exception as e: # general fall-back from pypy.interpreter import error > raise error.get_converted_unexpected_exception(space, e) interpreter\gateway.py:819: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('struct foo_s { void * volatile b; };'), W_BytesObject('test_volatile_fields'), W_BytesObject('struct foo_s { void * volatile b; };')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: > w_result = activation._run(space, scope_w) interpreter\gateway.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinActivation_UwS_ObjSpace_text_text_text_W_Root_W_Root_W_Root_int_W_Root object at 0x000002791c13af38> space = StdObjSpace scope_w = [W_BytesObject('struct foo_s { void * volatile b; };'), W_BytesObject('test_volatile_fields'), W_BytesObject('struct foo_s { void * volatile b; };'), None, None, None, ...] def _run(self, space, scope_w): > return self.behavior(space, space.text_w(scope_w[0]), space.text_w(scope_w[1]), space.text_w(scope_w[2]), scope_w[3], scope_w[4], scope_w[5], space.gateway_int_w(scope_w[6]), scope_w[7]) <3152-codegen d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\rpython\tool\sourcetools.py:200>:3: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace, cdef = 'struct foo_s { void * volatile b; };' module_name = '_CFFI_test_volatile_fields' source = 'struct foo_s { void * volatile b; };', w_includes = None w_extra_source = None, w_min_version = None, packed = 0 w_extra_compile_args = None @unwrap_spec(cdef='text', module_name='text', source='text', packed=int) def prepare(space, cdef, module_name, source, w_includes=None, w_extra_source=None, w_min_version=None, packed=False, w_extra_compile_args=None): try: import cffi from cffi import FFI # <== the system one, which from cffi import recompiler # needs to be at least cffi 1.0.4 from cffi import ffiplatform except ImportError: pytest.skip("system cffi module not found or older than 1.0.0") if w_min_version is None: min_version = (1, 4, 0) else: min_version = tuple(space.unwrap(w_min_version)) if cffi.__version_info__ < min_version: pytest.skip("system cffi module needs to be at least %s, got %s" % ( min_version, cffi.__version_info__)) space.appexec([], """(): import _cffi_backend # force it to be initialized """) includes = [] if w_includes: includes += space.unpackiterable(w_includes) assert module_name.startswith('test_') module_name = '_CFFI_' + module_name rdir = udir.ensure('recompiler', dir=1) rdir.join('Python.h').write( '#include <stdio.h>\n' '#define PYPY_VERSION XX\n' '#define PyMODINIT_FUNC /*exported*/ void\n' ) path = module_name.replace('.', os.sep) if '.' in module_name: subrdir = rdir.join(module_name[:module_name.index('.')]) os.mkdir(str(subrdir)) else: subrdir = rdir c_file = str(rdir.join('%s.c' % path)) ffi = FFI() for include_ffi_object in includes: ffi.include(include_ffi_object._test_recompiler_source_ffi) ffi.cdef(cdef, packed=packed) ffi.set_source(module_name, source) ffi.emit_c_code(c_file) base_module_name = module_name.split('.')[-1] sources = [] if w_extra_source is not None: sources.append(space.str_w(w_extra_source)) kwargs = {} # GCC 14 promotes -Wincompatible-pointer-types from a warning to an error # by default, which breaks cffi's intentionally-mismatched field-check # probes (e.g. test_misdeclared_field_1). Keep it a warning so the module # compiles and cffi's runtime checks can run. extra = ['-Wno-error=incompatible-pointer-types'] if w_extra_compile_args is not None: extra = extra + space.unwrap(w_extra_compile_args) kwargs['extra_compile_args'] = extra ext = ffiplatform.get_extension(c_file, module_name, include_dirs=[str(rdir)], export_symbols=['_cffi_pypyinit_' + base_module_name], sources=sources, **kwargs) > ffiplatform.compile(str(rdir), ext) module\_cffi_backend\test\test_recompiler.py:86: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x000002792a80ab20> compiler_verbose = 0, debug = None def compile(tmpdir, ext, compiler_verbose=0, debug=None): """Compile a C extension module using distutils.""" saved_environ = os.environ.copy() try: > outputfilename = _build(tmpdir, ext, compiler_verbose, debug) d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x000002792a80ab20> compiler_verbose = 0, debug = 0 def _build(tmpdir, ext, compiler_verbose=0, debug=None): # XXX compact but horrible :-( from cffi._shimmed_dist_utils import Distribution, CompileError, LinkError, set_threshold, set_verbosity dist = Distribution({'ext_modules': [ext]}) dist.parse_config_files() options = dist.get_option_dict('build_ext') if debug is None: debug = sys.flags.debug options['debug'] = ('ffiplatform', debug) options['force'] = ('ffiplatform', True) options['build_lib'] = ('ffiplatform', tmpdir) options['build_temp'] = ('ffiplatform', tmpdir) # try: old_level = set_threshold(0) or 0 try: set_verbosity(compiler_verbose) dist.run_command('build_ext') cmd_obj = dist.get_command_obj('build_ext') [soname] = cmd_obj.get_outputs() finally: set_threshold(old_level) except (CompileError, LinkError) as e: > raise VerificationError('%s: %s' % (e.__class__.__name__, e)) E VerificationError: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2 d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:54: VerificationError ---------------------------- Captured stdout call ----------------------------- generating d:\systemtemp\pytest\usession-main-595\recompiler\_CFFI_test_volatile_fields.c ---------------------------- Captured stderr call ----------------------------- cl : Command line error D8021 : invalid numeric argument '/Wno-error=incompatible-pointer-types' __________________ AppTestRecompiler.test_const_array_fields __________________ self = <CallInfo when='call' exception: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2> func = <function <lambda> at 0x000002792d0129f8>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ..\_pytest\runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ..\_pytest\runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_const_array_fields'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_const_array_fields'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ..\_pytest\vendored_packages\pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00000279153616a8> hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_const_array_fields'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_const_array_fields'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ..\_pytest\vendored_packages\pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_const_array_fields'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_const_array_fields'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ..\_pytest\vendored_packages\pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_const_array_fields'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x0000027929feb6c8> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...ray_fields'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027925ee6860> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027925ee6860> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...ray_fields'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_const_array_fields'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x0000027929feb650> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...ray_fields'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027925ee6820> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027925ee6820> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...ray_fields'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_const_array_fields'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ..\_pytest\vendored_packages\pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_const_array_fields'> def pytest_runtest_call(item): try: > item.runtest() ..\_pytest\runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_const_array_fields'> def runtest(self): target = self.obj if self.config.option.runappdirect: return target() space = target.im_self.space filename = self._getdynfilename(target) func = app2interp_temp(target.im_func, filename=filename) w_instance = self.parent.w_instance > self.execute_appex(space, func, space, w_instance) tool\pytest\apptest.py:89: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_const_array_fields'>, space = StdObjSpace target = <function test_const_array_fields at 0x000002792d012a70> args = (StdObjSpace, <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>) def execute_appex(self, space, target, *args): self.space = space try: > target(*args) tool\pytest\apptest.py:30: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) w_func = <Function test_const_array_fields> args = <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8> def appcaller(space, *args_w): if not isinstance(space, ObjSpace): raise TypeError("first argument must be a space instance.") # the last argument can be an Arguments w_func = self.wget(space, name) if not args_w: return space.call_function(w_func) else: args = args_w[-1] assert args is not None if not isinstance(args, Arguments): > return space.call_function(w_func, *args_w) interpreter\gateway.py:1227: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <Function test_const_array_fields> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) nargs = 1, Function = <class 'pypy.interpreter.function.Function'> Method = <class 'pypy.interpreter.function.Method'> def call_function(self, w_func, *args_w): nargs = len(args_w) # used for pruning funccall versions if not self.config.objspace.disable_call_speedhacks and nargs < 5: # start of hack for performance from pypy.interpreter.function import Function, Method if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: if nargs < 4: func = w_func.w_function if isinstance(func, Function): return func.funccall(w_inst, *args_w) elif args_w and ( self.abstract_isinstance_w(args_w[0], w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): > return w_func.funccall(*args_w) interpreter\baseobjspace.py:1210: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <Function test_const_array_fields> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) gateway = <module 'pypy.interpreter.gateway' from 'd:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\interpreter\\gateway.pyc'> PyCode = <class 'pypy.interpreter.pycode.PyCode'> code = <code object test_const_array_fields, file '[d:\pypy_stuff\buildbot64\slave\ow...-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:1171]', line 1> def funccall(self, *args_w): # speed hack from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit nargs = len(args_w) fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, args_w[0]) elif nargs == 2: assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, args_w[0], args_w[1]) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) return code.fastcall_3(self.space, self, args_w[0], args_w[1], args_w[2]) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) return code.fastcall_4(self.space, self, args_w[0], args_w[1], args_w[2], args_w[3]) elif (nargs | PyCode.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) if nargs < 5: new_frame = self.space.createframe(code, self.w_func_globals, self) for i in funccallunrolling: if i < nargs: new_frame.locals_cells_stack_w[i] = args_w[i] > return new_frame.run() interpreter\function.py:118: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_const_ar...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1171]', line 1> at line 5 def run(self): """Start this frame's execution.""" if self.getcode().co_flags & pycode.CO_GENERATOR: from pypy.interpreter.generator import GeneratorIterator return GeneratorIterator(self) else: > return self.execute_frame() interpreter\pyframe.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_const_ar...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1171]', line 1> at line 5 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, executioncontext) except OperationError: raise except Exception as e: # general fall-back > raise self._convert_unexpected_exception(e) interpreter\pyframe.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_const_ar...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1171]', line 1> at line 5 e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def _convert_unexpected_exception(self, e): from pypy.interpreter import error > operr = error.get_converted_unexpected_exception(self.space, e) interpreter\pyframe.py:943: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_const_ar...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1171]', line 1> at line 5 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, > executioncontext) interpreter\pyframe.py:286: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_const_ar...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1171]', line 1> at line 5 pycode = <code object test_const_array_fields, file '[d:\pypy_stuff\buildbot64\slave\ow...-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:1171]', line 1> next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def dispatch(self, pycode, next_instr, ec): # For the sequel, force 'next_instr' to be unsigned for performance next_instr = r_uint(next_instr) co_code = pycode.co_code try: while True: > next_instr = self.handle_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:64: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_const_ar...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1171]', line 1> at line 5 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x01\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00|\x01\x00\xc9\x01\x00d\x03\x0...\x00\x19d\x06\x00\x19j\x04\x00|\x01\x00\xc9\x01\x00d\x07\x00\xca\x01\x00k\x08\x00sv\x00t\x03\x00\x82\x01\x00d\x00\x00S' next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def handle_bytecode(self, co_code, next_instr, ec): try: > next_instr = self.dispatch_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:71: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_const_ar...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1171]', line 1> at line 5 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x01\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00|\x01\x00\xc9\x01\x00d\x03\x0...\x00\x19d\x06\x00\x19j\x04\x00|\x01\x00\xc9\x01\x00d\x07\x00\xca\x01\x00k\x08\x00sv\x00t\x03\x00\x82\x01\x00d\x00\x00S' next_instr = 18L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> @jit.unroll_safe def dispatch_bytecode(self, co_code, next_instr, ec): while True: self.last_instr = intmask(next_instr) if jit.we_are_jitted(): if self.debugdata: ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) else: # Only reload next_instr from last_instr when something that # can modify it actually ran (trace function or action # dispatcher). In the common case (no trace, positive ticker) # next_instr is unchanged and the round-trip is skipped. _d = self.debugdata if ec.space.reverse_debugging or ( _d is not None and _d.w_f_trace is not None) or ( not we_are_translated() and 'bytecode_only_trace' in ec.__dict__): ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) actionflag = ec.space.actionflag if actionflag.decrement_ticker(TICK_COUNTER_STEP) < 0: actionflag.action_dispatcher(ec, self) next_instr = r_uint(self.last_instr) opcode = ord(co_code[next_instr]) next_instr += 1 if opcode >= HAVE_ARGUMENT: lo = ord(co_code[next_instr]) hi = ord(co_code[next_instr+1]) next_instr += 2 oparg = (hi * 256) | lo else: oparg = 0 # note: the structure of the code here is such that it makes # (after translation) a big "if/elif" chain, which is then # turned into a switch(). while opcode == opcodedesc.EXTENDED_ARG.index: opcode = ord(co_code[next_instr]) if opcode < HAVE_ARGUMENT: raise BytecodeCorruption lo = ord(co_code[next_instr+1]) hi = ord(co_code[next_instr+2]) next_instr += 3 oparg = (oparg * 65536) | (hi * 256) | lo if opcode == opcodedesc.RETURN_VALUE.index: if not self.blockstack_non_empty(): self.frame_finished_execution = True # for generators raise Return w_returnvalue = self.popvalue() block = self.unrollstack(SReturnValue.kind) if block is None: self.pushvalue(w_returnvalue) raise Return else: unroller = SReturnValue(w_returnvalue) next_instr = block.handle(self, unroller) return next_instr # now inside a 'finally' block elif opcode == opcodedesc.END_FINALLY.index: unroller = self.end_finally() if isinstance(unroller, SuspendedUnroller): # go on unrolling the stack block = self.unrollstack(unroller.kind) if block is None: w_result = unroller.nomoreblocks() self.pushvalue(w_result) raise Return else: next_instr = block.handle(self, unroller) return next_instr elif opcode == opcodedesc.JUMP_ABSOLUTE.index: return self.jump_absolute(oparg, ec) elif opcode == opcodedesc.BREAK_LOOP.index: next_instr = self.BREAK_LOOP(oparg, next_instr) elif opcode == opcodedesc.CONTINUE_LOOP.index: return self.CONTINUE_LOOP(oparg, next_instr) elif opcode == opcodedesc.FOR_ITER.index: next_instr = self.FOR_ITER(oparg, next_instr) elif opcode == opcodedesc.JUMP_FORWARD.index: next_instr = self.JUMP_FORWARD(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_FALSE_OR_POP.index: next_instr = self.JUMP_IF_FALSE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_NOT_DEBUG.index: next_instr = self.JUMP_IF_NOT_DEBUG(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_TRUE_OR_POP.index: next_instr = self.JUMP_IF_TRUE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_FALSE.index: next_instr = self.POP_JUMP_IF_FALSE(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_TRUE.index: next_instr = self.POP_JUMP_IF_TRUE(oparg, next_instr) elif opcode == opcodedesc.BINARY_ADD.index: self.BINARY_ADD(oparg, next_instr) elif opcode == opcodedesc.BINARY_AND.index: self.BINARY_AND(oparg, next_instr) elif opcode == opcodedesc.BINARY_DIVIDE.index: self.BINARY_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_FLOOR_DIVIDE.index: self.BINARY_FLOOR_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_LSHIFT.index: self.BINARY_LSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_MODULO.index: self.BINARY_MODULO(oparg, next_instr) elif opcode == opcodedesc.BINARY_MULTIPLY.index: self.BINARY_MULTIPLY(oparg, next_instr) elif opcode == opcodedesc.BINARY_OR.index: self.BINARY_OR(oparg, next_instr) elif opcode == opcodedesc.BINARY_POWER.index: self.BINARY_POWER(oparg, next_instr) elif opcode == opcodedesc.BINARY_RSHIFT.index: self.BINARY_RSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBSCR.index: self.BINARY_SUBSCR(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBTRACT.index: self.BINARY_SUBTRACT(oparg, next_instr) elif opcode == opcodedesc.BINARY_TRUE_DIVIDE.index: self.BINARY_TRUE_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_XOR.index: self.BINARY_XOR(oparg, next_instr) elif opcode == opcodedesc.BUILD_CLASS.index: self.BUILD_CLASS(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST.index: self.BUILD_LIST(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST_FROM_ARG.index: self.BUILD_LIST_FROM_ARG(oparg, next_instr) elif opcode == opcodedesc.BUILD_MAP.index: self.BUILD_MAP(oparg, next_instr) elif opcode == opcodedesc.BUILD_SET.index: self.BUILD_SET(oparg, next_instr) elif opcode == opcodedesc.BUILD_SLICE.index: self.BUILD_SLICE(oparg, next_instr) elif opcode == opcodedesc.BUILD_TUPLE.index: self.BUILD_TUPLE(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION.index: self.CALL_FUNCTION(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_KW.index: self.CALL_FUNCTION_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR.index: self.CALL_FUNCTION_VAR(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR_KW.index: self.CALL_FUNCTION_VAR_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_METHOD.index: > self.CALL_METHOD(oparg, next_instr) interpreter\pyopcode.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ f = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_const_ar...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1171]', line 1> at line 5 oparg = 3, ignored = (18L,), n_args = 3, n_kwargs = 0, w_self = None @jit.unroll_safe def CALL_METHOD(f, oparg, *ignored): # opargs contains the arg, and kwarg count, excluding the implicit 'self' n_args = oparg & 0xff n_kwargs = (oparg >> 8) & 0xff w_self = f.peekvalue_maybe_none(n_args + (2 * n_kwargs)) n = n_args + (w_self is not None) if not n_kwargs: w_callable = f.peekvalue(n_args + (2 * n_kwargs) + 1) w_result = f.space.call_valuestack( > w_callable, n, f, methodcall=w_self is not None, dropvalues=n_args + 2) objspace\std\callmethod.py:96: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_const_ar...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1171]', line 1> at line 5 dropvalues = 5, methodcall = False def call_valuestack(self, w_func, nargs, frame, dropvalues, methodcall=False): # methodcall is only used for better error messages in argument.py from pypy.interpreter.function import Function, Method, is_builtin_code if frame.get_is_being_profiled() and is_builtin_code(w_func): # XXX: this code is copied&pasted :-( from the slow path below # call_valuestack(). args = frame.make_arguments(nargs) frame.dropvalues(dropvalues) return self.call_args_and_c_profile(frame, w_func, args) if not self.config.objspace.disable_call_speedhacks: # start of hack for performance if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: w_func = w_func.w_function # reuse callable stack place for w_inst frame.settopvalue(w_inst, nargs) nargs += 1 methodcall = True elif nargs > 0 and ( self.abstract_isinstance_w(frame.peekvalue(nargs-1), # :-( w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): return w_func.funccall_valuestack( > nargs, frame, methodcall=methodcall, dropvalues=dropvalues) interpreter\baseobjspace.py:1243: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_const_ar...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1171]', line 1> at line 5 dropvalues = 5, methodcall = False def funccall_valuestack(self, nargs, frame, dropvalues, methodcall=False): # speed hack # methodcall is only for better error messages from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit # if (jit.we_are_jitted() and code is self.space._code_of_sys_exc_info and nargs == 0): frame.dropvalues(dropvalues) from pypy.module.sys.vm import exc_info_direct return exc_info_direct(self.space, frame) # fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: f_0 = frame.peekvalue(0) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, f_0) elif nargs == 2: f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, f_1, f_0) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) frame.dropvalues(dropvalues) return code.fastcall_3(self.space, self, f_2, f_1, f_0) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) f_3 = frame.peekvalue(3) frame.dropvalues(dropvalues) return code.fastcall_4(self.space, self, f_3, f_2, f_1, f_0) elif (nargs | Code.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) return self._flat_pycall(code, nargs, frame, dropvalues) elif fast_natural_arity & Code.FLATPYCALL: natural_arity = fast_natural_arity & 0xff if natural_arity > nargs >= natural_arity - len(self.defs_w): assert isinstance(code, PyCode) return self._flat_pycall_defaults(code, nargs, frame, natural_arity - nargs, dropvalues) elif fast_natural_arity == Code.PASSTHROUGHARGS1 and nargs >= 1: assert isinstance(code, gateway.BuiltinCodePassThroughArguments1) w_obj = frame.peekvalue(nargs-1) args = frame.make_arguments(nargs-1) frame.dropvalues(dropvalues) return code.funcrun_obj(self, w_obj, args) args = frame.make_arguments(nargs, methodcall=methodcall) frame.dropvalues(dropvalues) > return self.call_args(args) interpreter\function.py:190: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('struct foo_s { const int a[4]; };'), W_BytesObject('test_const_array_fields'), W_BytesObject('struct foo_s { const int a[4]; };')]) def call_args(self, args): # delegate activation to code > w_res = self.getcode().funcrun(self, args) interpreter\function.py:68: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('struct foo_s { const int a[4]; };'), W_BytesObject('test_const_array_fields'), W_BytesObject('struct foo_s { const int a[4]; };')]) def funcrun(self, func, args): > return BuiltinCode.funcrun_obj(self, func, None, args) interpreter\gateway.py:781: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('struct foo_s { const int a[4]; };'), W_BytesObject('test_const_array_fields'), W_BytesObject('struct foo_s { const int a[4]; };')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: w_result = activation._run(space, scope_w) except DescrMismatch: if w_obj is not None: args = args.prepend(w_obj) return self._type_unwrap_mismatch(space, args) except Exception as e: > self.handle_exception(space, e) interpreter\gateway.py:795: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> space = StdObjSpace e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def handle_exception(self, space, e): try: if not we_are_translated(): raise raise e except OperationError: raise except Exception as e: # general fall-back from pypy.interpreter import error > raise error.get_converted_unexpected_exception(space, e) interpreter\gateway.py:819: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('struct foo_s { const int a[4]; };'), W_BytesObject('test_const_array_fields'), W_BytesObject('struct foo_s { const int a[4]; };')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: > w_result = activation._run(space, scope_w) interpreter\gateway.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinActivation_UwS_ObjSpace_text_text_text_W_Root_W_Root_W_Root_int_W_Root object at 0x000002791c13af38> space = StdObjSpace scope_w = [W_BytesObject('struct foo_s { const int a[4]; };'), W_BytesObject('test_const_array_fields'), W_BytesObject('struct foo_s { const int a[4]; };'), None, None, None, ...] def _run(self, space, scope_w): > return self.behavior(space, space.text_w(scope_w[0]), space.text_w(scope_w[1]), space.text_w(scope_w[2]), scope_w[3], scope_w[4], scope_w[5], space.gateway_int_w(scope_w[6]), scope_w[7]) <3152-codegen d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\rpython\tool\sourcetools.py:200>:3: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace, cdef = 'struct foo_s { const int a[4]; };' module_name = '_CFFI_test_const_array_fields' source = 'struct foo_s { const int a[4]; };', w_includes = None w_extra_source = None, w_min_version = None, packed = 0 w_extra_compile_args = None @unwrap_spec(cdef='text', module_name='text', source='text', packed=int) def prepare(space, cdef, module_name, source, w_includes=None, w_extra_source=None, w_min_version=None, packed=False, w_extra_compile_args=None): try: import cffi from cffi import FFI # <== the system one, which from cffi import recompiler # needs to be at least cffi 1.0.4 from cffi import ffiplatform except ImportError: pytest.skip("system cffi module not found or older than 1.0.0") if w_min_version is None: min_version = (1, 4, 0) else: min_version = tuple(space.unwrap(w_min_version)) if cffi.__version_info__ < min_version: pytest.skip("system cffi module needs to be at least %s, got %s" % ( min_version, cffi.__version_info__)) space.appexec([], """(): import _cffi_backend # force it to be initialized """) includes = [] if w_includes: includes += space.unpackiterable(w_includes) assert module_name.startswith('test_') module_name = '_CFFI_' + module_name rdir = udir.ensure('recompiler', dir=1) rdir.join('Python.h').write( '#include <stdio.h>\n' '#define PYPY_VERSION XX\n' '#define PyMODINIT_FUNC /*exported*/ void\n' ) path = module_name.replace('.', os.sep) if '.' in module_name: subrdir = rdir.join(module_name[:module_name.index('.')]) os.mkdir(str(subrdir)) else: subrdir = rdir c_file = str(rdir.join('%s.c' % path)) ffi = FFI() for include_ffi_object in includes: ffi.include(include_ffi_object._test_recompiler_source_ffi) ffi.cdef(cdef, packed=packed) ffi.set_source(module_name, source) ffi.emit_c_code(c_file) base_module_name = module_name.split('.')[-1] sources = [] if w_extra_source is not None: sources.append(space.str_w(w_extra_source)) kwargs = {} # GCC 14 promotes -Wincompatible-pointer-types from a warning to an error # by default, which breaks cffi's intentionally-mismatched field-check # probes (e.g. test_misdeclared_field_1). Keep it a warning so the module # compiles and cffi's runtime checks can run. extra = ['-Wno-error=incompatible-pointer-types'] if w_extra_compile_args is not None: extra = extra + space.unwrap(w_extra_compile_args) kwargs['extra_compile_args'] = extra ext = ffiplatform.get_extension(c_file, module_name, include_dirs=[str(rdir)], export_symbols=['_cffi_pypyinit_' + base_module_name], sources=sources, **kwargs) > ffiplatform.compile(str(rdir), ext) module\_cffi_backend\test\test_recompiler.py:86: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x0000027925ee7520> compiler_verbose = 0, debug = None def compile(tmpdir, ext, compiler_verbose=0, debug=None): """Compile a C extension module using distutils.""" saved_environ = os.environ.copy() try: > outputfilename = _build(tmpdir, ext, compiler_verbose, debug) d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x0000027925ee7520> compiler_verbose = 0, debug = 0 def _build(tmpdir, ext, compiler_verbose=0, debug=None): # XXX compact but horrible :-( from cffi._shimmed_dist_utils import Distribution, CompileError, LinkError, set_threshold, set_verbosity dist = Distribution({'ext_modules': [ext]}) dist.parse_config_files() options = dist.get_option_dict('build_ext') if debug is None: debug = sys.flags.debug options['debug'] = ('ffiplatform', debug) options['force'] = ('ffiplatform', True) options['build_lib'] = ('ffiplatform', tmpdir) options['build_temp'] = ('ffiplatform', tmpdir) # try: old_level = set_threshold(0) or 0 try: set_verbosity(compiler_verbose) dist.run_command('build_ext') cmd_obj = dist.get_command_obj('build_ext') [soname] = cmd_obj.get_outputs() finally: set_threshold(old_level) except (CompileError, LinkError) as e: > raise VerificationError('%s: %s' % (e.__class__.__name__, e)) E VerificationError: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2 d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:54: VerificationError ---------------------------- Captured stdout call ----------------------------- generating d:\systemtemp\pytest\usession-main-595\recompiler\_CFFI_test_const_array_fields.c ---------------------------- Captured stderr call ----------------------------- cl : Command line error D8021 : invalid numeric argument '/Wno-error=incompatible-pointer-types' _____________ AppTestRecompiler.test_const_array_fields_varlength _____________ self = <CallInfo when='call' exception: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2> func = <function <lambda> at 0x000002792cd7fcb8>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ..\_pytest\runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ..\_pytest\runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_const_array_fields_varlength'>,...icall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_const_array_fields_varlength'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ..\_pytest\vendored_packages\pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00000279153616a8> hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_const_array_fields_varlength'>,...icall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_const_array_fields_varlength'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ..\_pytest\vendored_packages\pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_const_array_fields_varlength'>,...icall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_const_array_fields_varlength'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ..\_pytest\vendored_packages\pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_const_array_fields_varlength'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791fe0b718> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i..._varlength'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792c12fd20> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792c12fd20> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i..._varlength'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_const_array_fields_varlength'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791fe0b6c8> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i..._varlength'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792c12fce0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792c12fce0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i..._varlength'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_const_array_fields_varlength'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ..\_pytest\vendored_packages\pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_const_array_fields_varlength'> def pytest_runtest_call(item): try: > item.runtest() ..\_pytest\runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_const_array_fields_varlength'> def runtest(self): target = self.obj if self.config.option.runappdirect: return target() space = target.im_self.space filename = self._getdynfilename(target) func = app2interp_temp(target.im_func, filename=filename) w_instance = self.parent.w_instance > self.execute_appex(space, func, space, w_instance) tool\pytest\apptest.py:89: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_const_array_fields_varlength'>, space = StdObjSpace target = <function test_const_array_fields_varlength at 0x000002792cd7fda8> args = (StdObjSpace, <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>) def execute_appex(self, space, target, *args): self.space = space try: > target(*args) tool\pytest\apptest.py:30: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) w_func = <Function test_const_array_fields_varlength> args = <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8> def appcaller(space, *args_w): if not isinstance(space, ObjSpace): raise TypeError("first argument must be a space instance.") # the last argument can be an Arguments w_func = self.wget(space, name) if not args_w: return space.call_function(w_func) else: args = args_w[-1] assert args is not None if not isinstance(args, Arguments): > return space.call_function(w_func, *args_w) interpreter\gateway.py:1227: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <Function test_const_array_fields_varlength> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) nargs = 1, Function = <class 'pypy.interpreter.function.Function'> Method = <class 'pypy.interpreter.function.Method'> def call_function(self, w_func, *args_w): nargs = len(args_w) # used for pruning funccall versions if not self.config.objspace.disable_call_speedhacks and nargs < 5: # start of hack for performance from pypy.interpreter.function import Function, Method if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: if nargs < 4: func = w_func.w_function if isinstance(func, Function): return func.funccall(w_inst, *args_w) elif args_w and ( self.abstract_isinstance_w(args_w[0], w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): > return w_func.funccall(*args_w) interpreter\baseobjspace.py:1210: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <Function test_const_array_fields_varlength> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) gateway = <module 'pypy.interpreter.gateway' from 'd:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\interpreter\\gateway.pyc'> PyCode = <class 'pypy.interpreter.pycode.PyCode'> code = <code object test_const_array_fields_varlength, file '[d:\pypy_stuff\buildbot6...-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:1180]', line 1> def funccall(self, *args_w): # speed hack from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit nargs = len(args_w) fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, args_w[0]) elif nargs == 2: assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, args_w[0], args_w[1]) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) return code.fastcall_3(self.space, self, args_w[0], args_w[1], args_w[2]) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) return code.fastcall_4(self.space, self, args_w[0], args_w[1], args_w[2], args_w[3]) elif (nargs | PyCode.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) if nargs < 5: new_frame = self.space.createframe(code, self.w_func_globals, self) for i in funccallunrolling: if i < nargs: new_frame.locals_cells_stack_w[i] = args_w[i] > return new_frame.run() interpreter\function.py:118: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_const_ar...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1180]', line 1> at line 5 def run(self): """Start this frame's execution.""" if self.getcode().co_flags & pycode.CO_GENERATOR: from pypy.interpreter.generator import GeneratorIterator return GeneratorIterator(self) else: > return self.execute_frame() interpreter\pyframe.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_const_ar...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1180]', line 1> at line 5 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, executioncontext) except OperationError: raise except Exception as e: # general fall-back > raise self._convert_unexpected_exception(e) interpreter\pyframe.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_const_ar...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1180]', line 1> at line 5 e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def _convert_unexpected_exception(self, e): from pypy.interpreter import error > operr = error.get_converted_unexpected_exception(self.space, e) interpreter\pyframe.py:943: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_const_ar...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1180]', line 1> at line 5 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, > executioncontext) interpreter\pyframe.py:286: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_const_ar...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1180]', line 1> at line 5 pycode = <code object test_const_array_fields_varlength, file '[d:\pypy_stuff\buildbot6...-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:1180]', line 1> next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def dispatch(self, pycode, next_instr, ec): # For the sequel, force 'next_instr' to be unsigned for performance next_instr = r_uint(next_instr) co_code = pycode.co_code try: while True: > next_instr = self.handle_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:64: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_const_ar...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1180]', line 1> at line 5 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00|\x01\x00\xc9\x01\x00d\x04\x0...\x00\x19d\x07\x00\x19j\x04\x00|\x01\x00\xc9\x01\x00d\x08\x00\xca\x01\x00k\x08\x00sv\x00t\x03\x00\x82\x01\x00d\x00\x00S' next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def handle_bytecode(self, co_code, next_instr, ec): try: > next_instr = self.dispatch_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:71: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_const_ar...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1180]', line 1> at line 5 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00|\x01\x00\xc9\x01\x00d\x04\x0...\x00\x19d\x07\x00\x19j\x04\x00|\x01\x00\xc9\x01\x00d\x08\x00\xca\x01\x00k\x08\x00sv\x00t\x03\x00\x82\x01\x00d\x00\x00S' next_instr = 18L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> @jit.unroll_safe def dispatch_bytecode(self, co_code, next_instr, ec): while True: self.last_instr = intmask(next_instr) if jit.we_are_jitted(): if self.debugdata: ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) else: # Only reload next_instr from last_instr when something that # can modify it actually ran (trace function or action # dispatcher). In the common case (no trace, positive ticker) # next_instr is unchanged and the round-trip is skipped. _d = self.debugdata if ec.space.reverse_debugging or ( _d is not None and _d.w_f_trace is not None) or ( not we_are_translated() and 'bytecode_only_trace' in ec.__dict__): ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) actionflag = ec.space.actionflag if actionflag.decrement_ticker(TICK_COUNTER_STEP) < 0: actionflag.action_dispatcher(ec, self) next_instr = r_uint(self.last_instr) opcode = ord(co_code[next_instr]) next_instr += 1 if opcode >= HAVE_ARGUMENT: lo = ord(co_code[next_instr]) hi = ord(co_code[next_instr+1]) next_instr += 2 oparg = (hi * 256) | lo else: oparg = 0 # note: the structure of the code here is such that it makes # (after translation) a big "if/elif" chain, which is then # turned into a switch(). while opcode == opcodedesc.EXTENDED_ARG.index: opcode = ord(co_code[next_instr]) if opcode < HAVE_ARGUMENT: raise BytecodeCorruption lo = ord(co_code[next_instr+1]) hi = ord(co_code[next_instr+2]) next_instr += 3 oparg = (oparg * 65536) | (hi * 256) | lo if opcode == opcodedesc.RETURN_VALUE.index: if not self.blockstack_non_empty(): self.frame_finished_execution = True # for generators raise Return w_returnvalue = self.popvalue() block = self.unrollstack(SReturnValue.kind) if block is None: self.pushvalue(w_returnvalue) raise Return else: unroller = SReturnValue(w_returnvalue) next_instr = block.handle(self, unroller) return next_instr # now inside a 'finally' block elif opcode == opcodedesc.END_FINALLY.index: unroller = self.end_finally() if isinstance(unroller, SuspendedUnroller): # go on unrolling the stack block = self.unrollstack(unroller.kind) if block is None: w_result = unroller.nomoreblocks() self.pushvalue(w_result) raise Return else: next_instr = block.handle(self, unroller) return next_instr elif opcode == opcodedesc.JUMP_ABSOLUTE.index: return self.jump_absolute(oparg, ec) elif opcode == opcodedesc.BREAK_LOOP.index: next_instr = self.BREAK_LOOP(oparg, next_instr) elif opcode == opcodedesc.CONTINUE_LOOP.index: return self.CONTINUE_LOOP(oparg, next_instr) elif opcode == opcodedesc.FOR_ITER.index: next_instr = self.FOR_ITER(oparg, next_instr) elif opcode == opcodedesc.JUMP_FORWARD.index: next_instr = self.JUMP_FORWARD(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_FALSE_OR_POP.index: next_instr = self.JUMP_IF_FALSE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_NOT_DEBUG.index: next_instr = self.JUMP_IF_NOT_DEBUG(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_TRUE_OR_POP.index: next_instr = self.JUMP_IF_TRUE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_FALSE.index: next_instr = self.POP_JUMP_IF_FALSE(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_TRUE.index: next_instr = self.POP_JUMP_IF_TRUE(oparg, next_instr) elif opcode == opcodedesc.BINARY_ADD.index: self.BINARY_ADD(oparg, next_instr) elif opcode == opcodedesc.BINARY_AND.index: self.BINARY_AND(oparg, next_instr) elif opcode == opcodedesc.BINARY_DIVIDE.index: self.BINARY_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_FLOOR_DIVIDE.index: self.BINARY_FLOOR_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_LSHIFT.index: self.BINARY_LSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_MODULO.index: self.BINARY_MODULO(oparg, next_instr) elif opcode == opcodedesc.BINARY_MULTIPLY.index: self.BINARY_MULTIPLY(oparg, next_instr) elif opcode == opcodedesc.BINARY_OR.index: self.BINARY_OR(oparg, next_instr) elif opcode == opcodedesc.BINARY_POWER.index: self.BINARY_POWER(oparg, next_instr) elif opcode == opcodedesc.BINARY_RSHIFT.index: self.BINARY_RSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBSCR.index: self.BINARY_SUBSCR(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBTRACT.index: self.BINARY_SUBTRACT(oparg, next_instr) elif opcode == opcodedesc.BINARY_TRUE_DIVIDE.index: self.BINARY_TRUE_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_XOR.index: self.BINARY_XOR(oparg, next_instr) elif opcode == opcodedesc.BUILD_CLASS.index: self.BUILD_CLASS(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST.index: self.BUILD_LIST(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST_FROM_ARG.index: self.BUILD_LIST_FROM_ARG(oparg, next_instr) elif opcode == opcodedesc.BUILD_MAP.index: self.BUILD_MAP(oparg, next_instr) elif opcode == opcodedesc.BUILD_SET.index: self.BUILD_SET(oparg, next_instr) elif opcode == opcodedesc.BUILD_SLICE.index: self.BUILD_SLICE(oparg, next_instr) elif opcode == opcodedesc.BUILD_TUPLE.index: self.BUILD_TUPLE(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION.index: self.CALL_FUNCTION(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_KW.index: self.CALL_FUNCTION_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR.index: self.CALL_FUNCTION_VAR(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR_KW.index: self.CALL_FUNCTION_VAR_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_METHOD.index: > self.CALL_METHOD(oparg, next_instr) interpreter\pyopcode.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ f = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_const_ar...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1180]', line 1> at line 5 oparg = 3, ignored = (18L,), n_args = 3, n_kwargs = 0, w_self = None @jit.unroll_safe def CALL_METHOD(f, oparg, *ignored): # opargs contains the arg, and kwarg count, excluding the implicit 'self' n_args = oparg & 0xff n_kwargs = (oparg >> 8) & 0xff w_self = f.peekvalue_maybe_none(n_args + (2 * n_kwargs)) n = n_args + (w_self is not None) if not n_kwargs: w_callable = f.peekvalue(n_args + (2 * n_kwargs) + 1) w_result = f.space.call_valuestack( > w_callable, n, f, methodcall=w_self is not None, dropvalues=n_args + 2) objspace\std\callmethod.py:96: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_const_ar...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1180]', line 1> at line 5 dropvalues = 5, methodcall = False def call_valuestack(self, w_func, nargs, frame, dropvalues, methodcall=False): # methodcall is only used for better error messages in argument.py from pypy.interpreter.function import Function, Method, is_builtin_code if frame.get_is_being_profiled() and is_builtin_code(w_func): # XXX: this code is copied&pasted :-( from the slow path below # call_valuestack(). args = frame.make_arguments(nargs) frame.dropvalues(dropvalues) return self.call_args_and_c_profile(frame, w_func, args) if not self.config.objspace.disable_call_speedhacks: # start of hack for performance if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: w_func = w_func.w_function # reuse callable stack place for w_inst frame.settopvalue(w_inst, nargs) nargs += 1 methodcall = True elif nargs > 0 and ( self.abstract_isinstance_w(frame.peekvalue(nargs-1), # :-( w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): return w_func.funccall_valuestack( > nargs, frame, methodcall=methodcall, dropvalues=dropvalues) interpreter\baseobjspace.py:1243: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_const_ar...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1180]', line 1> at line 5 dropvalues = 5, methodcall = False def funccall_valuestack(self, nargs, frame, dropvalues, methodcall=False): # speed hack # methodcall is only for better error messages from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit # if (jit.we_are_jitted() and code is self.space._code_of_sys_exc_info and nargs == 0): frame.dropvalues(dropvalues) from pypy.module.sys.vm import exc_info_direct return exc_info_direct(self.space, frame) # fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: f_0 = frame.peekvalue(0) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, f_0) elif nargs == 2: f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, f_1, f_0) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) frame.dropvalues(dropvalues) return code.fastcall_3(self.space, self, f_2, f_1, f_0) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) f_3 = frame.peekvalue(3) frame.dropvalues(dropvalues) return code.fastcall_4(self.space, self, f_3, f_2, f_1, f_0) elif (nargs | Code.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) return self._flat_pycall(code, nargs, frame, dropvalues) elif fast_natural_arity & Code.FLATPYCALL: natural_arity = fast_natural_arity & 0xff if natural_arity > nargs >= natural_arity - len(self.defs_w): assert isinstance(code, PyCode) return self._flat_pycall_defaults(code, nargs, frame, natural_arity - nargs, dropvalues) elif fast_natural_arity == Code.PASSTHROUGHARGS1 and nargs >= 1: assert isinstance(code, gateway.BuiltinCodePassThroughArguments1) w_obj = frame.peekvalue(nargs-1) args = frame.make_arguments(nargs-1) frame.dropvalues(dropvalues) return code.funcrun_obj(self, w_obj, args) args = frame.make_arguments(nargs, methodcall=methodcall) frame.dropvalues(dropvalues) > return self.call_args(args) interpreter\function.py:190: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('struct foo_s { const int a[]; ...; };'), W_BytesObje..._array_fields_varlength'), W_BytesObject('struct foo_s { const int a[4]; };')]) def call_args(self, args): # delegate activation to code > w_res = self.getcode().funcrun(self, args) interpreter\function.py:68: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('struct foo_s { const int a[]; ...; };'), W_BytesObje..._array_fields_varlength'), W_BytesObject('struct foo_s { const int a[4]; };')]) def funcrun(self, func, args): > return BuiltinCode.funcrun_obj(self, func, None, args) interpreter\gateway.py:781: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('struct foo_s { const int a[]; ...; };'), W_BytesObje..._array_fields_varlength'), W_BytesObject('struct foo_s { const int a[4]; };')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: w_result = activation._run(space, scope_w) except DescrMismatch: if w_obj is not None: args = args.prepend(w_obj) return self._type_unwrap_mismatch(space, args) except Exception as e: > self.handle_exception(space, e) interpreter\gateway.py:795: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> space = StdObjSpace e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def handle_exception(self, space, e): try: if not we_are_translated(): raise raise e except OperationError: raise except Exception as e: # general fall-back from pypy.interpreter import error > raise error.get_converted_unexpected_exception(space, e) interpreter\gateway.py:819: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('struct foo_s { const int a[]; ...; };'), W_BytesObje..._array_fields_varlength'), W_BytesObject('struct foo_s { const int a[4]; };')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: > w_result = activation._run(space, scope_w) interpreter\gateway.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinActivation_UwS_ObjSpace_text_text_text_W_Root_W_Root_W_Root_int_W_Root object at 0x000002791c13af38> space = StdObjSpace scope_w = [W_BytesObject('struct foo_s { const int a[]; ...; };'), W_BytesObject('test_const_array_fields_varlength'), W_BytesObject('struct foo_s { const int a[4]; };'), None, None, None, ...] def _run(self, space, scope_w): > return self.behavior(space, space.text_w(scope_w[0]), space.text_w(scope_w[1]), space.text_w(scope_w[2]), scope_w[3], scope_w[4], scope_w[5], space.gateway_int_w(scope_w[6]), scope_w[7]) <3152-codegen d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\rpython\tool\sourcetools.py:200>:3: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace, cdef = 'struct foo_s { const int a[]; ...; };' module_name = '_CFFI_test_const_array_fields_varlength' source = 'struct foo_s { const int a[4]; };', w_includes = None w_extra_source = None, w_min_version = None, packed = 0 w_extra_compile_args = None @unwrap_spec(cdef='text', module_name='text', source='text', packed=int) def prepare(space, cdef, module_name, source, w_includes=None, w_extra_source=None, w_min_version=None, packed=False, w_extra_compile_args=None): try: import cffi from cffi import FFI # <== the system one, which from cffi import recompiler # needs to be at least cffi 1.0.4 from cffi import ffiplatform except ImportError: pytest.skip("system cffi module not found or older than 1.0.0") if w_min_version is None: min_version = (1, 4, 0) else: min_version = tuple(space.unwrap(w_min_version)) if cffi.__version_info__ < min_version: pytest.skip("system cffi module needs to be at least %s, got %s" % ( min_version, cffi.__version_info__)) space.appexec([], """(): import _cffi_backend # force it to be initialized """) includes = [] if w_includes: includes += space.unpackiterable(w_includes) assert module_name.startswith('test_') module_name = '_CFFI_' + module_name rdir = udir.ensure('recompiler', dir=1) rdir.join('Python.h').write( '#include <stdio.h>\n' '#define PYPY_VERSION XX\n' '#define PyMODINIT_FUNC /*exported*/ void\n' ) path = module_name.replace('.', os.sep) if '.' in module_name: subrdir = rdir.join(module_name[:module_name.index('.')]) os.mkdir(str(subrdir)) else: subrdir = rdir c_file = str(rdir.join('%s.c' % path)) ffi = FFI() for include_ffi_object in includes: ffi.include(include_ffi_object._test_recompiler_source_ffi) ffi.cdef(cdef, packed=packed) ffi.set_source(module_name, source) ffi.emit_c_code(c_file) base_module_name = module_name.split('.')[-1] sources = [] if w_extra_source is not None: sources.append(space.str_w(w_extra_source)) kwargs = {} # GCC 14 promotes -Wincompatible-pointer-types from a warning to an error # by default, which breaks cffi's intentionally-mismatched field-check # probes (e.g. test_misdeclared_field_1). Keep it a warning so the module # compiles and cffi's runtime checks can run. extra = ['-Wno-error=incompatible-pointer-types'] if w_extra_compile_args is not None: extra = extra + space.unwrap(w_extra_compile_args) kwargs['extra_compile_args'] = extra ext = ffiplatform.get_extension(c_file, module_name, include_dirs=[str(rdir)], export_symbols=['_cffi_pypyinit_' + base_module_name], sources=sources, **kwargs) > ffiplatform.compile(str(rdir), ext) module\_cffi_backend\test\test_recompiler.py:86: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x000002792c8548e0> compiler_verbose = 0, debug = None def compile(tmpdir, ext, compiler_verbose=0, debug=None): """Compile a C extension module using distutils.""" saved_environ = os.environ.copy() try: > outputfilename = _build(tmpdir, ext, compiler_verbose, debug) d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x000002792c8548e0> compiler_verbose = 0, debug = 0 def _build(tmpdir, ext, compiler_verbose=0, debug=None): # XXX compact but horrible :-( from cffi._shimmed_dist_utils import Distribution, CompileError, LinkError, set_threshold, set_verbosity dist = Distribution({'ext_modules': [ext]}) dist.parse_config_files() options = dist.get_option_dict('build_ext') if debug is None: debug = sys.flags.debug options['debug'] = ('ffiplatform', debug) options['force'] = ('ffiplatform', True) options['build_lib'] = ('ffiplatform', tmpdir) options['build_temp'] = ('ffiplatform', tmpdir) # try: old_level = set_threshold(0) or 0 try: set_verbosity(compiler_verbose) dist.run_command('build_ext') cmd_obj = dist.get_command_obj('build_ext') [soname] = cmd_obj.get_outputs() finally: set_threshold(old_level) except (CompileError, LinkError) as e: > raise VerificationError('%s: %s' % (e.__class__.__name__, e)) E VerificationError: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2 d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:54: VerificationError ---------------------------- Captured stdout call ----------------------------- generating d:\systemtemp\pytest\usession-main-595\recompiler\_CFFI_test_const_array_fields_varlength.c ---------------------------- Captured stderr call ----------------------------- cl : Command line error D8021 : invalid numeric argument '/Wno-error=incompatible-pointer-types' ___________ AppTestRecompiler.test_const_array_fields_unknownlength ___________ self = <CallInfo when='call' exception: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2> func = <function <lambda> at 0x0000027921082548>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ..\_pytest\runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ..\_pytest\runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_const_array_fields_unknownlengt...l__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_const_array_fields_unknownlength'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ..\_pytest\vendored_packages\pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00000279153616a8> hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_const_array_fields_unknownlengt...l__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_const_array_fields_unknownlength'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ..\_pytest\vendored_packages\pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_const_array_fields_unknownlengt...l__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_const_array_fields_unknownlength'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ..\_pytest\vendored_packages\pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_const_array_fields_unknownlength'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791ef9b5b0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...nownlength'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027920cbe960> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027920cbe960> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...nownlength'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_const_array_fields_unknownlength'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791ef9b3f8> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...nownlength'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027920cbe920> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027920cbe920> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...nownlength'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_const_array_fields_unknownlength'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ..\_pytest\vendored_packages\pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_const_array_fields_unknownlength'> def pytest_runtest_call(item): try: > item.runtest() ..\_pytest\runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_const_array_fields_unknownlength'> def runtest(self): target = self.obj if self.config.option.runappdirect: return target() space = target.im_self.space filename = self._getdynfilename(target) func = app2interp_temp(target.im_func, filename=filename) w_instance = self.parent.w_instance > self.execute_appex(space, func, space, w_instance) tool\pytest\apptest.py:89: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_const_array_fields_unknownlength'> space = StdObjSpace target = <function test_const_array_fields_unknownlength at 0x00000279210825c0> args = (StdObjSpace, <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>) def execute_appex(self, space, target, *args): self.space = space try: > target(*args) tool\pytest\apptest.py:30: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) w_func = <Function test_const_array_fields_unknownlength> args = <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8> def appcaller(space, *args_w): if not isinstance(space, ObjSpace): raise TypeError("first argument must be a space instance.") # the last argument can be an Arguments w_func = self.wget(space, name) if not args_w: return space.call_function(w_func) else: args = args_w[-1] assert args is not None if not isinstance(args, Arguments): > return space.call_function(w_func, *args_w) interpreter\gateway.py:1227: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <Function test_const_array_fields_unknownlength> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) nargs = 1, Function = <class 'pypy.interpreter.function.Function'> Method = <class 'pypy.interpreter.function.Method'> def call_function(self, w_func, *args_w): nargs = len(args_w) # used for pruning funccall versions if not self.config.objspace.disable_call_speedhacks and nargs < 5: # start of hack for performance from pypy.interpreter.function import Function, Method if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: if nargs < 4: func = w_func.w_function if isinstance(func, Function): return func.funccall(w_inst, *args_w) elif args_w and ( self.abstract_isinstance_w(args_w[0], w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): > return w_func.funccall(*args_w) interpreter\baseobjspace.py:1210: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <Function test_const_array_fields_unknownlength> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) gateway = <module 'pypy.interpreter.gateway' from 'd:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\interpreter\\gateway.pyc'> PyCode = <class 'pypy.interpreter.pycode.PyCode'> code = <code object test_const_array_fields_unknownlength, file '[d:\pypy_stuff\build...-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:1189]', line 1> def funccall(self, *args_w): # speed hack from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit nargs = len(args_w) fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, args_w[0]) elif nargs == 2: assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, args_w[0], args_w[1]) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) return code.fastcall_3(self.space, self, args_w[0], args_w[1], args_w[2]) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) return code.fastcall_4(self.space, self, args_w[0], args_w[1], args_w[2], args_w[3]) elif (nargs | PyCode.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) if nargs < 5: new_frame = self.space.createframe(code, self.w_func_globals, self) for i in funccallunrolling: if i < nargs: new_frame.locals_cells_stack_w[i] = args_w[i] > return new_frame.run() interpreter\function.py:118: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_const_ar...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1189]', line 1> at line 5 def run(self): """Start this frame's execution.""" if self.getcode().co_flags & pycode.CO_GENERATOR: from pypy.interpreter.generator import GeneratorIterator return GeneratorIterator(self) else: > return self.execute_frame() interpreter\pyframe.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_const_ar...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1189]', line 1> at line 5 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, executioncontext) except OperationError: raise except Exception as e: # general fall-back > raise self._convert_unexpected_exception(e) interpreter\pyframe.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_const_ar...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1189]', line 1> at line 5 e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def _convert_unexpected_exception(self, e): from pypy.interpreter import error > operr = error.get_converted_unexpected_exception(self.space, e) interpreter\pyframe.py:943: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_const_ar...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1189]', line 1> at line 5 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, > executioncontext) interpreter\pyframe.py:286: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_const_ar...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1189]', line 1> at line 5 pycode = <code object test_const_array_fields_unknownlength, file '[d:\pypy_stuff\build...-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:1189]', line 1> next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def dispatch(self, pycode, next_instr, ec): # For the sequel, force 'next_instr' to be unsigned for performance next_instr = r_uint(next_instr) co_code = pycode.co_code try: while True: > next_instr = self.handle_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:64: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_const_ar...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1189]', line 1> at line 5 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00|\x01\x00\xc9\x01\x00d\x04\x0...\x00\x19d\x07\x00\x19j\x04\x00|\x01\x00\xc9\x01\x00d\x08\x00\xca\x01\x00k\x08\x00sv\x00t\x03\x00\x82\x01\x00d\x00\x00S' next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def handle_bytecode(self, co_code, next_instr, ec): try: > next_instr = self.dispatch_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:71: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_const_ar...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1189]', line 1> at line 5 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00|\x01\x00\xc9\x01\x00d\x04\x0...\x00\x19d\x07\x00\x19j\x04\x00|\x01\x00\xc9\x01\x00d\x08\x00\xca\x01\x00k\x08\x00sv\x00t\x03\x00\x82\x01\x00d\x00\x00S' next_instr = 18L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> @jit.unroll_safe def dispatch_bytecode(self, co_code, next_instr, ec): while True: self.last_instr = intmask(next_instr) if jit.we_are_jitted(): if self.debugdata: ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) else: # Only reload next_instr from last_instr when something that # can modify it actually ran (trace function or action # dispatcher). In the common case (no trace, positive ticker) # next_instr is unchanged and the round-trip is skipped. _d = self.debugdata if ec.space.reverse_debugging or ( _d is not None and _d.w_f_trace is not None) or ( not we_are_translated() and 'bytecode_only_trace' in ec.__dict__): ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) actionflag = ec.space.actionflag if actionflag.decrement_ticker(TICK_COUNTER_STEP) < 0: actionflag.action_dispatcher(ec, self) next_instr = r_uint(self.last_instr) opcode = ord(co_code[next_instr]) next_instr += 1 if opcode >= HAVE_ARGUMENT: lo = ord(co_code[next_instr]) hi = ord(co_code[next_instr+1]) next_instr += 2 oparg = (hi * 256) | lo else: oparg = 0 # note: the structure of the code here is such that it makes # (after translation) a big "if/elif" chain, which is then # turned into a switch(). while opcode == opcodedesc.EXTENDED_ARG.index: opcode = ord(co_code[next_instr]) if opcode < HAVE_ARGUMENT: raise BytecodeCorruption lo = ord(co_code[next_instr+1]) hi = ord(co_code[next_instr+2]) next_instr += 3 oparg = (oparg * 65536) | (hi * 256) | lo if opcode == opcodedesc.RETURN_VALUE.index: if not self.blockstack_non_empty(): self.frame_finished_execution = True # for generators raise Return w_returnvalue = self.popvalue() block = self.unrollstack(SReturnValue.kind) if block is None: self.pushvalue(w_returnvalue) raise Return else: unroller = SReturnValue(w_returnvalue) next_instr = block.handle(self, unroller) return next_instr # now inside a 'finally' block elif opcode == opcodedesc.END_FINALLY.index: unroller = self.end_finally() if isinstance(unroller, SuspendedUnroller): # go on unrolling the stack block = self.unrollstack(unroller.kind) if block is None: w_result = unroller.nomoreblocks() self.pushvalue(w_result) raise Return else: next_instr = block.handle(self, unroller) return next_instr elif opcode == opcodedesc.JUMP_ABSOLUTE.index: return self.jump_absolute(oparg, ec) elif opcode == opcodedesc.BREAK_LOOP.index: next_instr = self.BREAK_LOOP(oparg, next_instr) elif opcode == opcodedesc.CONTINUE_LOOP.index: return self.CONTINUE_LOOP(oparg, next_instr) elif opcode == opcodedesc.FOR_ITER.index: next_instr = self.FOR_ITER(oparg, next_instr) elif opcode == opcodedesc.JUMP_FORWARD.index: next_instr = self.JUMP_FORWARD(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_FALSE_OR_POP.index: next_instr = self.JUMP_IF_FALSE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_NOT_DEBUG.index: next_instr = self.JUMP_IF_NOT_DEBUG(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_TRUE_OR_POP.index: next_instr = self.JUMP_IF_TRUE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_FALSE.index: next_instr = self.POP_JUMP_IF_FALSE(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_TRUE.index: next_instr = self.POP_JUMP_IF_TRUE(oparg, next_instr) elif opcode == opcodedesc.BINARY_ADD.index: self.BINARY_ADD(oparg, next_instr) elif opcode == opcodedesc.BINARY_AND.index: self.BINARY_AND(oparg, next_instr) elif opcode == opcodedesc.BINARY_DIVIDE.index: self.BINARY_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_FLOOR_DIVIDE.index: self.BINARY_FLOOR_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_LSHIFT.index: self.BINARY_LSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_MODULO.index: self.BINARY_MODULO(oparg, next_instr) elif opcode == opcodedesc.BINARY_MULTIPLY.index: self.BINARY_MULTIPLY(oparg, next_instr) elif opcode == opcodedesc.BINARY_OR.index: self.BINARY_OR(oparg, next_instr) elif opcode == opcodedesc.BINARY_POWER.index: self.BINARY_POWER(oparg, next_instr) elif opcode == opcodedesc.BINARY_RSHIFT.index: self.BINARY_RSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBSCR.index: self.BINARY_SUBSCR(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBTRACT.index: self.BINARY_SUBTRACT(oparg, next_instr) elif opcode == opcodedesc.BINARY_TRUE_DIVIDE.index: self.BINARY_TRUE_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_XOR.index: self.BINARY_XOR(oparg, next_instr) elif opcode == opcodedesc.BUILD_CLASS.index: self.BUILD_CLASS(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST.index: self.BUILD_LIST(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST_FROM_ARG.index: self.BUILD_LIST_FROM_ARG(oparg, next_instr) elif opcode == opcodedesc.BUILD_MAP.index: self.BUILD_MAP(oparg, next_instr) elif opcode == opcodedesc.BUILD_SET.index: self.BUILD_SET(oparg, next_instr) elif opcode == opcodedesc.BUILD_SLICE.index: self.BUILD_SLICE(oparg, next_instr) elif opcode == opcodedesc.BUILD_TUPLE.index: self.BUILD_TUPLE(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION.index: self.CALL_FUNCTION(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_KW.index: self.CALL_FUNCTION_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR.index: self.CALL_FUNCTION_VAR(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR_KW.index: self.CALL_FUNCTION_VAR_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_METHOD.index: > self.CALL_METHOD(oparg, next_instr) interpreter\pyopcode.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ f = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_const_ar...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1189]', line 1> at line 5 oparg = 3, ignored = (18L,), n_args = 3, n_kwargs = 0, w_self = None @jit.unroll_safe def CALL_METHOD(f, oparg, *ignored): # opargs contains the arg, and kwarg count, excluding the implicit 'self' n_args = oparg & 0xff n_kwargs = (oparg >> 8) & 0xff w_self = f.peekvalue_maybe_none(n_args + (2 * n_kwargs)) n = n_args + (w_self is not None) if not n_kwargs: w_callable = f.peekvalue(n_args + (2 * n_kwargs) + 1) w_result = f.space.call_valuestack( > w_callable, n, f, methodcall=w_self is not None, dropvalues=n_args + 2) objspace\std\callmethod.py:96: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_const_ar...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1189]', line 1> at line 5 dropvalues = 5, methodcall = False def call_valuestack(self, w_func, nargs, frame, dropvalues, methodcall=False): # methodcall is only used for better error messages in argument.py from pypy.interpreter.function import Function, Method, is_builtin_code if frame.get_is_being_profiled() and is_builtin_code(w_func): # XXX: this code is copied&pasted :-( from the slow path below # call_valuestack(). args = frame.make_arguments(nargs) frame.dropvalues(dropvalues) return self.call_args_and_c_profile(frame, w_func, args) if not self.config.objspace.disable_call_speedhacks: # start of hack for performance if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: w_func = w_func.w_function # reuse callable stack place for w_inst frame.settopvalue(w_inst, nargs) nargs += 1 methodcall = True elif nargs > 0 and ( self.abstract_isinstance_w(frame.peekvalue(nargs-1), # :-( w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): return w_func.funccall_valuestack( > nargs, frame, methodcall=methodcall, dropvalues=dropvalues) interpreter\baseobjspace.py:1243: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_const_ar...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1189]', line 1> at line 5 dropvalues = 5, methodcall = False def funccall_valuestack(self, nargs, frame, dropvalues, methodcall=False): # speed hack # methodcall is only for better error messages from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit # if (jit.we_are_jitted() and code is self.space._code_of_sys_exc_info and nargs == 0): frame.dropvalues(dropvalues) from pypy.module.sys.vm import exc_info_direct return exc_info_direct(self.space, frame) # fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: f_0 = frame.peekvalue(0) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, f_0) elif nargs == 2: f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, f_1, f_0) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) frame.dropvalues(dropvalues) return code.fastcall_3(self.space, self, f_2, f_1, f_0) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) f_3 = frame.peekvalue(3) frame.dropvalues(dropvalues) return code.fastcall_4(self.space, self, f_3, f_2, f_1, f_0) elif (nargs | Code.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) return self._flat_pycall(code, nargs, frame, dropvalues) elif fast_natural_arity & Code.FLATPYCALL: natural_arity = fast_natural_arity & 0xff if natural_arity > nargs >= natural_arity - len(self.defs_w): assert isinstance(code, PyCode) return self._flat_pycall_defaults(code, nargs, frame, natural_arity - nargs, dropvalues) elif fast_natural_arity == Code.PASSTHROUGHARGS1 and nargs >= 1: assert isinstance(code, gateway.BuiltinCodePassThroughArguments1) w_obj = frame.peekvalue(nargs-1) args = frame.make_arguments(nargs-1) frame.dropvalues(dropvalues) return code.funcrun_obj(self, w_obj, args) args = frame.make_arguments(nargs, methodcall=methodcall) frame.dropvalues(dropvalues) > return self.call_args(args) interpreter\function.py:190: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('struct foo_s { const int a[...]; ...; };'), W_BytesO...ay_fields_unknownlength'), W_BytesObject('struct foo_s { const int a[4]; };')]) def call_args(self, args): # delegate activation to code > w_res = self.getcode().funcrun(self, args) interpreter\function.py:68: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('struct foo_s { const int a[...]; ...; };'), W_BytesO...ay_fields_unknownlength'), W_BytesObject('struct foo_s { const int a[4]; };')]) def funcrun(self, func, args): > return BuiltinCode.funcrun_obj(self, func, None, args) interpreter\gateway.py:781: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('struct foo_s { const int a[...]; ...; };'), W_BytesO...ay_fields_unknownlength'), W_BytesObject('struct foo_s { const int a[4]; };')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: w_result = activation._run(space, scope_w) except DescrMismatch: if w_obj is not None: args = args.prepend(w_obj) return self._type_unwrap_mismatch(space, args) except Exception as e: > self.handle_exception(space, e) interpreter\gateway.py:795: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> space = StdObjSpace e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def handle_exception(self, space, e): try: if not we_are_translated(): raise raise e except OperationError: raise except Exception as e: # general fall-back from pypy.interpreter import error > raise error.get_converted_unexpected_exception(space, e) interpreter\gateway.py:819: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('struct foo_s { const int a[...]; ...; };'), W_BytesO...ay_fields_unknownlength'), W_BytesObject('struct foo_s { const int a[4]; };')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: > w_result = activation._run(space, scope_w) interpreter\gateway.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinActivation_UwS_ObjSpace_text_text_text_W_Root_W_Root_W_Root_int_W_Root object at 0x000002791c13af38> space = StdObjSpace scope_w = [W_BytesObject('struct foo_s { const int a[...]; ...; };'), W_BytesObject('test_const_array_fields_unknownlength'), W_BytesObject('struct foo_s { const int a[4]; };'), None, None, None, ...] def _run(self, space, scope_w): > return self.behavior(space, space.text_w(scope_w[0]), space.text_w(scope_w[1]), space.text_w(scope_w[2]), scope_w[3], scope_w[4], scope_w[5], space.gateway_int_w(scope_w[6]), scope_w[7]) <3152-codegen d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\rpython\tool\sourcetools.py:200>:3: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace, cdef = 'struct foo_s { const int a[...]; ...; };' module_name = '_CFFI_test_const_array_fields_unknownlength' source = 'struct foo_s { const int a[4]; };', w_includes = None w_extra_source = None, w_min_version = None, packed = 0 w_extra_compile_args = None @unwrap_spec(cdef='text', module_name='text', source='text', packed=int) def prepare(space, cdef, module_name, source, w_includes=None, w_extra_source=None, w_min_version=None, packed=False, w_extra_compile_args=None): try: import cffi from cffi import FFI # <== the system one, which from cffi import recompiler # needs to be at least cffi 1.0.4 from cffi import ffiplatform except ImportError: pytest.skip("system cffi module not found or older than 1.0.0") if w_min_version is None: min_version = (1, 4, 0) else: min_version = tuple(space.unwrap(w_min_version)) if cffi.__version_info__ < min_version: pytest.skip("system cffi module needs to be at least %s, got %s" % ( min_version, cffi.__version_info__)) space.appexec([], """(): import _cffi_backend # force it to be initialized """) includes = [] if w_includes: includes += space.unpackiterable(w_includes) assert module_name.startswith('test_') module_name = '_CFFI_' + module_name rdir = udir.ensure('recompiler', dir=1) rdir.join('Python.h').write( '#include <stdio.h>\n' '#define PYPY_VERSION XX\n' '#define PyMODINIT_FUNC /*exported*/ void\n' ) path = module_name.replace('.', os.sep) if '.' in module_name: subrdir = rdir.join(module_name[:module_name.index('.')]) os.mkdir(str(subrdir)) else: subrdir = rdir c_file = str(rdir.join('%s.c' % path)) ffi = FFI() for include_ffi_object in includes: ffi.include(include_ffi_object._test_recompiler_source_ffi) ffi.cdef(cdef, packed=packed) ffi.set_source(module_name, source) ffi.emit_c_code(c_file) base_module_name = module_name.split('.')[-1] sources = [] if w_extra_source is not None: sources.append(space.str_w(w_extra_source)) kwargs = {} # GCC 14 promotes -Wincompatible-pointer-types from a warning to an error # by default, which breaks cffi's intentionally-mismatched field-check # probes (e.g. test_misdeclared_field_1). Keep it a warning so the module # compiles and cffi's runtime checks can run. extra = ['-Wno-error=incompatible-pointer-types'] if w_extra_compile_args is not None: extra = extra + space.unwrap(w_extra_compile_args) kwargs['extra_compile_args'] = extra ext = ffiplatform.get_extension(c_file, module_name, include_dirs=[str(rdir)], export_symbols=['_cffi_pypyinit_' + base_module_name], sources=sources, **kwargs) > ffiplatform.compile(str(rdir), ext) module\_cffi_backend\test\test_recompiler.py:86: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x0000027920cbff20> compiler_verbose = 0, debug = None def compile(tmpdir, ext, compiler_verbose=0, debug=None): """Compile a C extension module using distutils.""" saved_environ = os.environ.copy() try: > outputfilename = _build(tmpdir, ext, compiler_verbose, debug) d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x0000027920cbff20> compiler_verbose = 0, debug = 0 def _build(tmpdir, ext, compiler_verbose=0, debug=None): # XXX compact but horrible :-( from cffi._shimmed_dist_utils import Distribution, CompileError, LinkError, set_threshold, set_verbosity dist = Distribution({'ext_modules': [ext]}) dist.parse_config_files() options = dist.get_option_dict('build_ext') if debug is None: debug = sys.flags.debug options['debug'] = ('ffiplatform', debug) options['force'] = ('ffiplatform', True) options['build_lib'] = ('ffiplatform', tmpdir) options['build_temp'] = ('ffiplatform', tmpdir) # try: old_level = set_threshold(0) or 0 try: set_verbosity(compiler_verbose) dist.run_command('build_ext') cmd_obj = dist.get_command_obj('build_ext') [soname] = cmd_obj.get_outputs() finally: set_threshold(old_level) except (CompileError, LinkError) as e: > raise VerificationError('%s: %s' % (e.__class__.__name__, e)) E VerificationError: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2 d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:54: VerificationError ---------------------------- Captured stdout call ----------------------------- generating d:\systemtemp\pytest\usession-main-595\recompiler\_CFFI_test_const_array_fields_unknownlength.c ---------------------------- Captured stderr call ----------------------------- cl : Command line error D8021 : invalid numeric argument '/Wno-error=incompatible-pointer-types' _________________ AppTestRecompiler.test_const_function_args __________________ self = <CallInfo when='call' exception: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2> func = <function <lambda> at 0x0000027920031ad8>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ..\_pytest\runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ..\_pytest\runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_const_function_args'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_const_function_args'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ..\_pytest\vendored_packages\pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00000279153616a8> hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_const_function_args'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_const_function_args'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ..\_pytest\vendored_packages\pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_const_function_args'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_const_function_args'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ..\_pytest\vendored_packages\pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_const_function_args'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x0000027928176ea8> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...ction_args'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027929bc47e0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027929bc47e0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...ction_args'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_const_function_args'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x0000027928176db8> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...ction_args'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027929bc47a0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027929bc47a0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...ction_args'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_const_function_args'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ..\_pytest\vendored_packages\pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_const_function_args'> def pytest_runtest_call(item): try: > item.runtest() ..\_pytest\runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_const_function_args'> def runtest(self): target = self.obj if self.config.option.runappdirect: return target() space = target.im_self.space filename = self._getdynfilename(target) func = app2interp_temp(target.im_func, filename=filename) w_instance = self.parent.w_instance > self.execute_appex(space, func, space, w_instance) tool\pytest\apptest.py:89: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_const_function_args'>, space = StdObjSpace target = <function test_const_function_args at 0x0000027920031c40> args = (StdObjSpace, <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>) def execute_appex(self, space, target, *args): self.space = space try: > target(*args) tool\pytest\apptest.py:30: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) w_func = <Function test_const_function_args> args = <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8> def appcaller(space, *args_w): if not isinstance(space, ObjSpace): raise TypeError("first argument must be a space instance.") # the last argument can be an Arguments w_func = self.wget(space, name) if not args_w: return space.call_function(w_func) else: args = args_w[-1] assert args is not None if not isinstance(args, Arguments): > return space.call_function(w_func, *args_w) interpreter\gateway.py:1227: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <Function test_const_function_args> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) nargs = 1, Function = <class 'pypy.interpreter.function.Function'> Method = <class 'pypy.interpreter.function.Method'> def call_function(self, w_func, *args_w): nargs = len(args_w) # used for pruning funccall versions if not self.config.objspace.disable_call_speedhacks and nargs < 5: # start of hack for performance from pypy.interpreter.function import Function, Method if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: if nargs < 4: func = w_func.w_function if isinstance(func, Function): return func.funccall(w_inst, *args_w) elif args_w and ( self.abstract_isinstance_w(args_w[0], w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): > return w_func.funccall(*args_w) interpreter\baseobjspace.py:1210: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <Function test_const_function_args> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) gateway = <module 'pypy.interpreter.gateway' from 'd:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\interpreter\\gateway.pyc'> PyCode = <class 'pypy.interpreter.pycode.PyCode'> code = <code object test_const_function_args, file '[d:\pypy_stuff\buildbot64\slave\o...-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:1198]', line 1> def funccall(self, *args_w): # speed hack from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit nargs = len(args_w) fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, args_w[0]) elif nargs == 2: assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, args_w[0], args_w[1]) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) return code.fastcall_3(self.space, self, args_w[0], args_w[1], args_w[2]) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) return code.fastcall_4(self.space, self, args_w[0], args_w[1], args_w[2], args_w[3]) elif (nargs | PyCode.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) if nargs < 5: new_frame = self.space.createframe(code, self.w_func_globals, self) for i in funccallunrolling: if i < nargs: new_frame.locals_cells_stack_w[i] = args_w[i] > return new_frame.run() interpreter\function.py:118: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_const_fu...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1198]', line 1> at line 4 def run(self): """Start this frame's execution.""" if self.getcode().co_flags & pycode.CO_GENERATOR: from pypy.interpreter.generator import GeneratorIterator return GeneratorIterator(self) else: > return self.execute_frame() interpreter\pyframe.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_const_fu...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1198]', line 1> at line 4 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, executioncontext) except OperationError: raise except Exception as e: # general fall-back > raise self._convert_unexpected_exception(e) interpreter\pyframe.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_const_fu...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1198]', line 1> at line 4 e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def _convert_unexpected_exception(self, e): from pypy.interpreter import error > operr = error.get_converted_unexpected_exception(self.space, e) interpreter\pyframe.py:943: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_const_fu...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1198]', line 1> at line 4 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, > executioncontext) interpreter\pyframe.py:286: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_const_fu...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1198]', line 1> at line 4 pycode = <code object test_const_function_args, file '[d:\pypy_stuff\buildbot64\slave\o...-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:1198]', line 1> next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def dispatch(self, pycode, next_instr, ec): # For the sequel, force 'next_instr' to be unsigned for performance next_instr = r_uint(next_instr) co_code = pycode.co_code try: while True: > next_instr = self.handle_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:64: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_const_fu...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1198]', line 1> at line 4 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00\xcc9\x00|\x02\x00\xc9\x01\x0...\x03\x00\x82\x01\x00d\x00\x00Sd\x07\x00\xca\x02\x00\xca\x03\x00d\x08\x00k\x02\x00sW\x00t\x03\x00\x82\x01\x00d\x00\x00S' next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def handle_bytecode(self, co_code, next_instr, ec): try: > next_instr = self.dispatch_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:71: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_const_fu...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1198]', line 1> at line 4 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00\xcc9\x00|\x02\x00\xc9\x01\x0...\x03\x00\x82\x01\x00d\x00\x00Sd\x07\x00\xca\x02\x00\xca\x03\x00d\x08\x00k\x02\x00sW\x00t\x03\x00\x82\x01\x00d\x00\x00S' next_instr = 18L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> @jit.unroll_safe def dispatch_bytecode(self, co_code, next_instr, ec): while True: self.last_instr = intmask(next_instr) if jit.we_are_jitted(): if self.debugdata: ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) else: # Only reload next_instr from last_instr when something that # can modify it actually ran (trace function or action # dispatcher). In the common case (no trace, positive ticker) # next_instr is unchanged and the round-trip is skipped. _d = self.debugdata if ec.space.reverse_debugging or ( _d is not None and _d.w_f_trace is not None) or ( not we_are_translated() and 'bytecode_only_trace' in ec.__dict__): ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) actionflag = ec.space.actionflag if actionflag.decrement_ticker(TICK_COUNTER_STEP) < 0: actionflag.action_dispatcher(ec, self) next_instr = r_uint(self.last_instr) opcode = ord(co_code[next_instr]) next_instr += 1 if opcode >= HAVE_ARGUMENT: lo = ord(co_code[next_instr]) hi = ord(co_code[next_instr+1]) next_instr += 2 oparg = (hi * 256) | lo else: oparg = 0 # note: the structure of the code here is such that it makes # (after translation) a big "if/elif" chain, which is then # turned into a switch(). while opcode == opcodedesc.EXTENDED_ARG.index: opcode = ord(co_code[next_instr]) if opcode < HAVE_ARGUMENT: raise BytecodeCorruption lo = ord(co_code[next_instr+1]) hi = ord(co_code[next_instr+2]) next_instr += 3 oparg = (oparg * 65536) | (hi * 256) | lo if opcode == opcodedesc.RETURN_VALUE.index: if not self.blockstack_non_empty(): self.frame_finished_execution = True # for generators raise Return w_returnvalue = self.popvalue() block = self.unrollstack(SReturnValue.kind) if block is None: self.pushvalue(w_returnvalue) raise Return else: unroller = SReturnValue(w_returnvalue) next_instr = block.handle(self, unroller) return next_instr # now inside a 'finally' block elif opcode == opcodedesc.END_FINALLY.index: unroller = self.end_finally() if isinstance(unroller, SuspendedUnroller): # go on unrolling the stack block = self.unrollstack(unroller.kind) if block is None: w_result = unroller.nomoreblocks() self.pushvalue(w_result) raise Return else: next_instr = block.handle(self, unroller) return next_instr elif opcode == opcodedesc.JUMP_ABSOLUTE.index: return self.jump_absolute(oparg, ec) elif opcode == opcodedesc.BREAK_LOOP.index: next_instr = self.BREAK_LOOP(oparg, next_instr) elif opcode == opcodedesc.CONTINUE_LOOP.index: return self.CONTINUE_LOOP(oparg, next_instr) elif opcode == opcodedesc.FOR_ITER.index: next_instr = self.FOR_ITER(oparg, next_instr) elif opcode == opcodedesc.JUMP_FORWARD.index: next_instr = self.JUMP_FORWARD(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_FALSE_OR_POP.index: next_instr = self.JUMP_IF_FALSE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_NOT_DEBUG.index: next_instr = self.JUMP_IF_NOT_DEBUG(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_TRUE_OR_POP.index: next_instr = self.JUMP_IF_TRUE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_FALSE.index: next_instr = self.POP_JUMP_IF_FALSE(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_TRUE.index: next_instr = self.POP_JUMP_IF_TRUE(oparg, next_instr) elif opcode == opcodedesc.BINARY_ADD.index: self.BINARY_ADD(oparg, next_instr) elif opcode == opcodedesc.BINARY_AND.index: self.BINARY_AND(oparg, next_instr) elif opcode == opcodedesc.BINARY_DIVIDE.index: self.BINARY_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_FLOOR_DIVIDE.index: self.BINARY_FLOOR_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_LSHIFT.index: self.BINARY_LSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_MODULO.index: self.BINARY_MODULO(oparg, next_instr) elif opcode == opcodedesc.BINARY_MULTIPLY.index: self.BINARY_MULTIPLY(oparg, next_instr) elif opcode == opcodedesc.BINARY_OR.index: self.BINARY_OR(oparg, next_instr) elif opcode == opcodedesc.BINARY_POWER.index: self.BINARY_POWER(oparg, next_instr) elif opcode == opcodedesc.BINARY_RSHIFT.index: self.BINARY_RSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBSCR.index: self.BINARY_SUBSCR(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBTRACT.index: self.BINARY_SUBTRACT(oparg, next_instr) elif opcode == opcodedesc.BINARY_TRUE_DIVIDE.index: self.BINARY_TRUE_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_XOR.index: self.BINARY_XOR(oparg, next_instr) elif opcode == opcodedesc.BUILD_CLASS.index: self.BUILD_CLASS(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST.index: self.BUILD_LIST(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST_FROM_ARG.index: self.BUILD_LIST_FROM_ARG(oparg, next_instr) elif opcode == opcodedesc.BUILD_MAP.index: self.BUILD_MAP(oparg, next_instr) elif opcode == opcodedesc.BUILD_SET.index: self.BUILD_SET(oparg, next_instr) elif opcode == opcodedesc.BUILD_SLICE.index: self.BUILD_SLICE(oparg, next_instr) elif opcode == opcodedesc.BUILD_TUPLE.index: self.BUILD_TUPLE(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION.index: self.CALL_FUNCTION(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_KW.index: self.CALL_FUNCTION_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR.index: self.CALL_FUNCTION_VAR(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR_KW.index: self.CALL_FUNCTION_VAR_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_METHOD.index: > self.CALL_METHOD(oparg, next_instr) interpreter\pyopcode.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ f = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_const_fu...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1198]', line 1> at line 4 oparg = 3, ignored = (18L,), n_args = 3, n_kwargs = 0, w_self = None @jit.unroll_safe def CALL_METHOD(f, oparg, *ignored): # opargs contains the arg, and kwarg count, excluding the implicit 'self' n_args = oparg & 0xff n_kwargs = (oparg >> 8) & 0xff w_self = f.peekvalue_maybe_none(n_args + (2 * n_kwargs)) n = n_args + (w_self is not None) if not n_kwargs: w_callable = f.peekvalue(n_args + (2 * n_kwargs) + 1) w_result = f.space.call_valuestack( > w_callable, n, f, methodcall=w_self is not None, dropvalues=n_args + 2) objspace\std\callmethod.py:96: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_const_fu...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1198]', line 1> at line 4 dropvalues = 5, methodcall = False def call_valuestack(self, w_func, nargs, frame, dropvalues, methodcall=False): # methodcall is only used for better error messages in argument.py from pypy.interpreter.function import Function, Method, is_builtin_code if frame.get_is_being_profiled() and is_builtin_code(w_func): # XXX: this code is copied&pasted :-( from the slow path below # call_valuestack(). args = frame.make_arguments(nargs) frame.dropvalues(dropvalues) return self.call_args_and_c_profile(frame, w_func, args) if not self.config.objspace.disable_call_speedhacks: # start of hack for performance if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: w_func = w_func.w_function # reuse callable stack place for w_inst frame.settopvalue(w_inst, nargs) nargs += 1 methodcall = True elif nargs > 0 and ( self.abstract_isinstance_w(frame.peekvalue(nargs-1), # :-( w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): return w_func.funccall_valuestack( > nargs, frame, methodcall=methodcall, dropvalues=dropvalues) interpreter\baseobjspace.py:1243: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_const_fu...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1198]', line 1> at line 4 dropvalues = 5, methodcall = False def funccall_valuestack(self, nargs, frame, dropvalues, methodcall=False): # speed hack # methodcall is only for better error messages from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit # if (jit.we_are_jitted() and code is self.space._code_of_sys_exc_info and nargs == 0): frame.dropvalues(dropvalues) from pypy.module.sys.vm import exc_info_direct return exc_info_direct(self.space, frame) # fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: f_0 = frame.peekvalue(0) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, f_0) elif nargs == 2: f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, f_1, f_0) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) frame.dropvalues(dropvalues) return code.fastcall_3(self.space, self, f_2, f_1, f_0) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) f_3 = frame.peekvalue(3) frame.dropvalues(dropvalues) return code.fastcall_4(self.space, self, f_3, f_2, f_1, f_0) elif (nargs | Code.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) return self._flat_pycall(code, nargs, frame, dropvalues) elif fast_natural_arity & Code.FLATPYCALL: natural_arity = fast_natural_arity & 0xff if natural_arity > nargs >= natural_arity - len(self.defs_w): assert isinstance(code, PyCode) return self._flat_pycall_defaults(code, nargs, frame, natural_arity - nargs, dropvalues) elif fast_natural_arity == Code.PASSTHROUGHARGS1 and nargs >= 1: assert isinstance(code, gateway.BuiltinCodePassThroughArguments1) w_obj = frame.peekvalue(nargs-1) args = frame.make_arguments(nargs-1) frame.dropvalues(dropvalues) return code.funcrun_obj(self, w_obj, args) args = frame.make_arguments(nargs, methodcall=methodcall) frame.dropvalues(dropvalues) > return self.call_args(args) interpreter\function.py:190: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('int foobar(const int a, const int *b, const int c[])...st int c[]) {\n return a + *b + *c;\n }\n ')]) def call_args(self, args): # delegate activation to code > w_res = self.getcode().funcrun(self, args) interpreter\function.py:68: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('int foobar(const int a, const int *b, const int c[])...st int c[]) {\n return a + *b + *c;\n }\n ')]) def funcrun(self, func, args): > return BuiltinCode.funcrun_obj(self, func, None, args) interpreter\gateway.py:781: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('int foobar(const int a, const int *b, const int c[])...st int c[]) {\n return a + *b + *c;\n }\n ')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: w_result = activation._run(space, scope_w) except DescrMismatch: if w_obj is not None: args = args.prepend(w_obj) return self._type_unwrap_mismatch(space, args) except Exception as e: > self.handle_exception(space, e) interpreter\gateway.py:795: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> space = StdObjSpace e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def handle_exception(self, space, e): try: if not we_are_translated(): raise raise e except OperationError: raise except Exception as e: # general fall-back from pypy.interpreter import error > raise error.get_converted_unexpected_exception(space, e) interpreter\gateway.py:819: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('int foobar(const int a, const int *b, const int c[])...st int c[]) {\n return a + *b + *c;\n }\n ')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: > w_result = activation._run(space, scope_w) interpreter\gateway.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinActivation_UwS_ObjSpace_text_text_text_W_Root_W_Root_W_Root_int_W_Root object at 0x000002791c13af38> space = StdObjSpace scope_w = [W_BytesObject('int foobar(const int a, const int *b, const int c[]);'), W_BytesObject('test_const_function_args'), W_... const int *b, const int c[]) {\n return a + *b + *c;\n }\n '), None, None, None, ...] def _run(self, space, scope_w): > return self.behavior(space, space.text_w(scope_w[0]), space.text_w(scope_w[1]), space.text_w(scope_w[2]), scope_w[3], scope_w[4], scope_w[5], space.gateway_int_w(scope_w[6]), scope_w[7]) <3152-codegen d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\rpython\tool\sourcetools.py:200>:3: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace cdef = 'int foobar(const int a, const int *b, const int c[]);' module_name = '_CFFI_test_const_function_args' source = '\n int foobar(const int a, const int *b, const int c[]) {\n return a + *b + *c;\n }\n ' w_includes = None, w_extra_source = None, w_min_version = None, packed = 0 w_extra_compile_args = None @unwrap_spec(cdef='text', module_name='text', source='text', packed=int) def prepare(space, cdef, module_name, source, w_includes=None, w_extra_source=None, w_min_version=None, packed=False, w_extra_compile_args=None): try: import cffi from cffi import FFI # <== the system one, which from cffi import recompiler # needs to be at least cffi 1.0.4 from cffi import ffiplatform except ImportError: pytest.skip("system cffi module not found or older than 1.0.0") if w_min_version is None: min_version = (1, 4, 0) else: min_version = tuple(space.unwrap(w_min_version)) if cffi.__version_info__ < min_version: pytest.skip("system cffi module needs to be at least %s, got %s" % ( min_version, cffi.__version_info__)) space.appexec([], """(): import _cffi_backend # force it to be initialized """) includes = [] if w_includes: includes += space.unpackiterable(w_includes) assert module_name.startswith('test_') module_name = '_CFFI_' + module_name rdir = udir.ensure('recompiler', dir=1) rdir.join('Python.h').write( '#include <stdio.h>\n' '#define PYPY_VERSION XX\n' '#define PyMODINIT_FUNC /*exported*/ void\n' ) path = module_name.replace('.', os.sep) if '.' in module_name: subrdir = rdir.join(module_name[:module_name.index('.')]) os.mkdir(str(subrdir)) else: subrdir = rdir c_file = str(rdir.join('%s.c' % path)) ffi = FFI() for include_ffi_object in includes: ffi.include(include_ffi_object._test_recompiler_source_ffi) ffi.cdef(cdef, packed=packed) ffi.set_source(module_name, source) ffi.emit_c_code(c_file) base_module_name = module_name.split('.')[-1] sources = [] if w_extra_source is not None: sources.append(space.str_w(w_extra_source)) kwargs = {} # GCC 14 promotes -Wincompatible-pointer-types from a warning to an error # by default, which breaks cffi's intentionally-mismatched field-check # probes (e.g. test_misdeclared_field_1). Keep it a warning so the module # compiles and cffi's runtime checks can run. extra = ['-Wno-error=incompatible-pointer-types'] if w_extra_compile_args is not None: extra = extra + space.unwrap(w_extra_compile_args) kwargs['extra_compile_args'] = extra ext = ffiplatform.get_extension(c_file, module_name, include_dirs=[str(rdir)], export_symbols=['_cffi_pypyinit_' + base_module_name], sources=sources, **kwargs) > ffiplatform.compile(str(rdir), ext) module\_cffi_backend\test\test_recompiler.py:86: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x0000027929bc4ce0> compiler_verbose = 0, debug = None def compile(tmpdir, ext, compiler_verbose=0, debug=None): """Compile a C extension module using distutils.""" saved_environ = os.environ.copy() try: > outputfilename = _build(tmpdir, ext, compiler_verbose, debug) d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x0000027929bc4ce0> compiler_verbose = 0, debug = 0 def _build(tmpdir, ext, compiler_verbose=0, debug=None): # XXX compact but horrible :-( from cffi._shimmed_dist_utils import Distribution, CompileError, LinkError, set_threshold, set_verbosity dist = Distribution({'ext_modules': [ext]}) dist.parse_config_files() options = dist.get_option_dict('build_ext') if debug is None: debug = sys.flags.debug options['debug'] = ('ffiplatform', debug) options['force'] = ('ffiplatform', True) options['build_lib'] = ('ffiplatform', tmpdir) options['build_temp'] = ('ffiplatform', tmpdir) # try: old_level = set_threshold(0) or 0 try: set_verbosity(compiler_verbose) dist.run_command('build_ext') cmd_obj = dist.get_command_obj('build_ext') [soname] = cmd_obj.get_outputs() finally: set_threshold(old_level) except (CompileError, LinkError) as e: > raise VerificationError('%s: %s' % (e.__class__.__name__, e)) E VerificationError: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2 d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:54: VerificationError ---------------------------- Captured stdout call ----------------------------- generating d:\systemtemp\pytest\usession-main-595\recompiler\_CFFI_test_const_function_args.c ---------------------------- Captured stderr call ----------------------------- cl : Command line error D8021 : invalid numeric argument '/Wno-error=incompatible-pointer-types' _______________ AppTestRecompiler.test_const_function_type_args _______________ self = <CallInfo when='call' exception: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2> func = <function <lambda> at 0x000002792b268c50>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ..\_pytest\runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ..\_pytest\runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_const_function_type_args'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_const_function_type_args'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ..\_pytest\vendored_packages\pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00000279153616a8> hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_const_function_type_args'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_const_function_type_args'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ..\_pytest\vendored_packages\pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_const_function_type_args'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_const_function_type_args'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ..\_pytest\vendored_packages\pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_const_function_type_args'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002792c36ad18> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i..._type_args'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792a4ddce0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792a4ddce0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i..._type_args'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_const_function_type_args'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002792c36ac78> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i..._type_args'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792a4ddca0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792a4ddca0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i..._type_args'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_const_function_type_args'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ..\_pytest\vendored_packages\pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_const_function_type_args'> def pytest_runtest_call(item): try: > item.runtest() ..\_pytest\runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_const_function_type_args'> def runtest(self): target = self.obj if self.config.option.runappdirect: return target() space = target.im_self.space filename = self._getdynfilename(target) func = app2interp_temp(target.im_func, filename=filename) w_instance = self.parent.w_instance > self.execute_appex(space, func, space, w_instance) tool\pytest\apptest.py:89: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_const_function_type_args'>, space = StdObjSpace target = <function test_const_function_type_args at 0x000002792b268cc8> args = (StdObjSpace, <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>) def execute_appex(self, space, target, *args): self.space = space try: > target(*args) tool\pytest\apptest.py:30: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) w_func = <Function test_const_function_type_args> args = <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8> def appcaller(space, *args_w): if not isinstance(space, ObjSpace): raise TypeError("first argument must be a space instance.") # the last argument can be an Arguments w_func = self.wget(space, name) if not args_w: return space.call_function(w_func) else: args = args_w[-1] assert args is not None if not isinstance(args, Arguments): > return space.call_function(w_func, *args_w) interpreter\gateway.py:1227: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <Function test_const_function_type_args> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) nargs = 1, Function = <class 'pypy.interpreter.function.Function'> Method = <class 'pypy.interpreter.function.Method'> def call_function(self, w_func, *args_w): nargs = len(args_w) # used for pruning funccall versions if not self.config.objspace.disable_call_speedhacks and nargs < 5: # start of hack for performance from pypy.interpreter.function import Function, Method if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: if nargs < 4: func = w_func.w_function if isinstance(func, Function): return func.funccall(w_inst, *args_w) elif args_w and ( self.abstract_isinstance_w(args_w[0], w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): > return w_func.funccall(*args_w) interpreter\baseobjspace.py:1210: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <Function test_const_function_type_args> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) gateway = <module 'pypy.interpreter.gateway' from 'd:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\interpreter\\gateway.pyc'> PyCode = <class 'pypy.interpreter.pycode.PyCode'> code = <code object test_const_function_type_args, file '[d:\pypy_stuff\buildbot64\sl...-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:1208]', line 1> def funccall(self, *args_w): # speed hack from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit nargs = len(args_w) fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, args_w[0]) elif nargs == 2: assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, args_w[0], args_w[1]) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) return code.fastcall_3(self.space, self, args_w[0], args_w[1], args_w[2]) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) return code.fastcall_4(self.space, self, args_w[0], args_w[1], args_w[2], args_w[3]) elif (nargs | PyCode.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) if nargs < 5: new_frame = self.space.createframe(code, self.w_func_globals, self) for i in funccallunrolling: if i < nargs: new_frame.locals_cells_stack_w[i] = args_w[i] > return new_frame.run() interpreter\function.py:118: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_const_fu...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1208]', line 1> at line 4 def run(self): """Start this frame's execution.""" if self.getcode().co_flags & pycode.CO_GENERATOR: from pypy.interpreter.generator import GeneratorIterator return GeneratorIterator(self) else: > return self.execute_frame() interpreter\pyframe.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_const_fu...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1208]', line 1> at line 4 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, executioncontext) except OperationError: raise except Exception as e: # general fall-back > raise self._convert_unexpected_exception(e) interpreter\pyframe.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_const_fu...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1208]', line 1> at line 4 e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def _convert_unexpected_exception(self, e): from pypy.interpreter import error > operr = error.get_converted_unexpected_exception(self.space, e) interpreter\pyframe.py:943: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_const_fu...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1208]', line 1> at line 4 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, > executioncontext) interpreter\pyframe.py:286: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_const_fu...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1208]', line 1> at line 4 pycode = <code object test_const_function_type_args, file '[d:\pypy_stuff\buildbot64\sl...-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:1208]', line 1> next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def dispatch(self, pycode, next_instr, ec): # For the sequel, force 'next_instr' to be unsigned for performance next_instr = r_uint(next_instr) co_code = pycode.co_code try: while True: > next_instr = self.handle_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:64: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_const_fu...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1208]', line 1> at line 4 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00|\x01\x00\xc9\x01\x00|\x02\x0...3\x00j\x03\x00d\x08\x00\x19|\x01\x00\xc9\x01\x00d\x07\x00\xca\x01\x00k\x08\x00s\x9c\x00t\x04\x00\x82\x01\x00d\x00\x00S' next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def handle_bytecode(self, co_code, next_instr, ec): try: > next_instr = self.dispatch_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:71: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_const_fu...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1208]', line 1> at line 4 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00|\x01\x00\xc9\x01\x00|\x02\x0...3\x00j\x03\x00d\x08\x00\x19|\x01\x00\xc9\x01\x00d\x07\x00\xca\x01\x00k\x08\x00s\x9c\x00t\x04\x00\x82\x01\x00d\x00\x00S' next_instr = 18L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> @jit.unroll_safe def dispatch_bytecode(self, co_code, next_instr, ec): while True: self.last_instr = intmask(next_instr) if jit.we_are_jitted(): if self.debugdata: ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) else: # Only reload next_instr from last_instr when something that # can modify it actually ran (trace function or action # dispatcher). In the common case (no trace, positive ticker) # next_instr is unchanged and the round-trip is skipped. _d = self.debugdata if ec.space.reverse_debugging or ( _d is not None and _d.w_f_trace is not None) or ( not we_are_translated() and 'bytecode_only_trace' in ec.__dict__): ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) actionflag = ec.space.actionflag if actionflag.decrement_ticker(TICK_COUNTER_STEP) < 0: actionflag.action_dispatcher(ec, self) next_instr = r_uint(self.last_instr) opcode = ord(co_code[next_instr]) next_instr += 1 if opcode >= HAVE_ARGUMENT: lo = ord(co_code[next_instr]) hi = ord(co_code[next_instr+1]) next_instr += 2 oparg = (hi * 256) | lo else: oparg = 0 # note: the structure of the code here is such that it makes # (after translation) a big "if/elif" chain, which is then # turned into a switch(). while opcode == opcodedesc.EXTENDED_ARG.index: opcode = ord(co_code[next_instr]) if opcode < HAVE_ARGUMENT: raise BytecodeCorruption lo = ord(co_code[next_instr+1]) hi = ord(co_code[next_instr+2]) next_instr += 3 oparg = (oparg * 65536) | (hi * 256) | lo if opcode == opcodedesc.RETURN_VALUE.index: if not self.blockstack_non_empty(): self.frame_finished_execution = True # for generators raise Return w_returnvalue = self.popvalue() block = self.unrollstack(SReturnValue.kind) if block is None: self.pushvalue(w_returnvalue) raise Return else: unroller = SReturnValue(w_returnvalue) next_instr = block.handle(self, unroller) return next_instr # now inside a 'finally' block elif opcode == opcodedesc.END_FINALLY.index: unroller = self.end_finally() if isinstance(unroller, SuspendedUnroller): # go on unrolling the stack block = self.unrollstack(unroller.kind) if block is None: w_result = unroller.nomoreblocks() self.pushvalue(w_result) raise Return else: next_instr = block.handle(self, unroller) return next_instr elif opcode == opcodedesc.JUMP_ABSOLUTE.index: return self.jump_absolute(oparg, ec) elif opcode == opcodedesc.BREAK_LOOP.index: next_instr = self.BREAK_LOOP(oparg, next_instr) elif opcode == opcodedesc.CONTINUE_LOOP.index: return self.CONTINUE_LOOP(oparg, next_instr) elif opcode == opcodedesc.FOR_ITER.index: next_instr = self.FOR_ITER(oparg, next_instr) elif opcode == opcodedesc.JUMP_FORWARD.index: next_instr = self.JUMP_FORWARD(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_FALSE_OR_POP.index: next_instr = self.JUMP_IF_FALSE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_NOT_DEBUG.index: next_instr = self.JUMP_IF_NOT_DEBUG(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_TRUE_OR_POP.index: next_instr = self.JUMP_IF_TRUE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_FALSE.index: next_instr = self.POP_JUMP_IF_FALSE(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_TRUE.index: next_instr = self.POP_JUMP_IF_TRUE(oparg, next_instr) elif opcode == opcodedesc.BINARY_ADD.index: self.BINARY_ADD(oparg, next_instr) elif opcode == opcodedesc.BINARY_AND.index: self.BINARY_AND(oparg, next_instr) elif opcode == opcodedesc.BINARY_DIVIDE.index: self.BINARY_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_FLOOR_DIVIDE.index: self.BINARY_FLOOR_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_LSHIFT.index: self.BINARY_LSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_MODULO.index: self.BINARY_MODULO(oparg, next_instr) elif opcode == opcodedesc.BINARY_MULTIPLY.index: self.BINARY_MULTIPLY(oparg, next_instr) elif opcode == opcodedesc.BINARY_OR.index: self.BINARY_OR(oparg, next_instr) elif opcode == opcodedesc.BINARY_POWER.index: self.BINARY_POWER(oparg, next_instr) elif opcode == opcodedesc.BINARY_RSHIFT.index: self.BINARY_RSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBSCR.index: self.BINARY_SUBSCR(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBTRACT.index: self.BINARY_SUBTRACT(oparg, next_instr) elif opcode == opcodedesc.BINARY_TRUE_DIVIDE.index: self.BINARY_TRUE_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_XOR.index: self.BINARY_XOR(oparg, next_instr) elif opcode == opcodedesc.BUILD_CLASS.index: self.BUILD_CLASS(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST.index: self.BUILD_LIST(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST_FROM_ARG.index: self.BUILD_LIST_FROM_ARG(oparg, next_instr) elif opcode == opcodedesc.BUILD_MAP.index: self.BUILD_MAP(oparg, next_instr) elif opcode == opcodedesc.BUILD_SET.index: self.BUILD_SET(oparg, next_instr) elif opcode == opcodedesc.BUILD_SLICE.index: self.BUILD_SLICE(oparg, next_instr) elif opcode == opcodedesc.BUILD_TUPLE.index: self.BUILD_TUPLE(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION.index: self.CALL_FUNCTION(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_KW.index: self.CALL_FUNCTION_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR.index: self.CALL_FUNCTION_VAR(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR_KW.index: self.CALL_FUNCTION_VAR_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_METHOD.index: > self.CALL_METHOD(oparg, next_instr) interpreter\pyopcode.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ f = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_const_fu...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1208]', line 1> at line 4 oparg = 3, ignored = (18L,), n_args = 3, n_kwargs = 0, w_self = None @jit.unroll_safe def CALL_METHOD(f, oparg, *ignored): # opargs contains the arg, and kwarg count, excluding the implicit 'self' n_args = oparg & 0xff n_kwargs = (oparg >> 8) & 0xff w_self = f.peekvalue_maybe_none(n_args + (2 * n_kwargs)) n = n_args + (w_self is not None) if not n_kwargs: w_callable = f.peekvalue(n_args + (2 * n_kwargs) + 1) w_result = f.space.call_valuestack( > w_callable, n, f, methodcall=w_self is not None, dropvalues=n_args + 2) objspace\std\callmethod.py:96: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_const_fu...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1208]', line 1> at line 4 dropvalues = 5, methodcall = False def call_valuestack(self, w_func, nargs, frame, dropvalues, methodcall=False): # methodcall is only used for better error messages in argument.py from pypy.interpreter.function import Function, Method, is_builtin_code if frame.get_is_being_profiled() and is_builtin_code(w_func): # XXX: this code is copied&pasted :-( from the slow path below # call_valuestack(). args = frame.make_arguments(nargs) frame.dropvalues(dropvalues) return self.call_args_and_c_profile(frame, w_func, args) if not self.config.objspace.disable_call_speedhacks: # start of hack for performance if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: w_func = w_func.w_function # reuse callable stack place for w_inst frame.settopvalue(w_inst, nargs) nargs += 1 methodcall = True elif nargs > 0 and ( self.abstract_isinstance_w(frame.peekvalue(nargs-1), # :-( w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): return w_func.funccall_valuestack( > nargs, frame, methodcall=methodcall, dropvalues=dropvalues) interpreter\baseobjspace.py:1243: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_const_fu...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1208]', line 1> at line 4 dropvalues = 5, methodcall = False def funccall_valuestack(self, nargs, frame, dropvalues, methodcall=False): # speed hack # methodcall is only for better error messages from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit # if (jit.we_are_jitted() and code is self.space._code_of_sys_exc_info and nargs == 0): frame.dropvalues(dropvalues) from pypy.module.sys.vm import exc_info_direct return exc_info_direct(self.space, frame) # fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: f_0 = frame.peekvalue(0) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, f_0) elif nargs == 2: f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, f_1, f_0) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) frame.dropvalues(dropvalues) return code.fastcall_3(self.space, self, f_2, f_1, f_0) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) f_3 = frame.peekvalue(3) frame.dropvalues(dropvalues) return code.fastcall_4(self.space, self, f_3, f_2, f_1, f_0) elif (nargs | Code.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) return self._flat_pycall(code, nargs, frame, dropvalues) elif fast_natural_arity & Code.FLATPYCALL: natural_arity = fast_natural_arity & 0xff if natural_arity > nargs >= natural_arity - len(self.defs_w): assert isinstance(code, PyCode) return self._flat_pycall_defaults(code, nargs, frame, natural_arity - nargs, dropvalues) elif fast_natural_arity == Code.PASSTHROUGHARGS1 and nargs >= 1: assert isinstance(code, gateway.BuiltinCodePassThroughArguments1) w_obj = frame.peekvalue(nargs-1) args = frame.make_arguments(nargs-1) frame.dropvalues(dropvalues) return code.funcrun_obj(self, w_obj, args) args = frame.make_arguments(nargs, methodcall=methodcall) frame.dropvalues(dropvalues) > return self.call_args(args) interpreter\function.py:190: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('int (*foobar)(const int a, const int *b, const int c... int (*foobar)(const int a, const int *b, const int c[]);\n ')]) def call_args(self, args): # delegate activation to code > w_res = self.getcode().funcrun(self, args) interpreter\function.py:68: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('int (*foobar)(const int a, const int *b, const int c... int (*foobar)(const int a, const int *b, const int c[]);\n ')]) def funcrun(self, func, args): > return BuiltinCode.funcrun_obj(self, func, None, args) interpreter\gateway.py:781: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('int (*foobar)(const int a, const int *b, const int c... int (*foobar)(const int a, const int *b, const int c[]);\n ')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: w_result = activation._run(space, scope_w) except DescrMismatch: if w_obj is not None: args = args.prepend(w_obj) return self._type_unwrap_mismatch(space, args) except Exception as e: > self.handle_exception(space, e) interpreter\gateway.py:795: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> space = StdObjSpace e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def handle_exception(self, space, e): try: if not we_are_translated(): raise raise e except OperationError: raise except Exception as e: # general fall-back from pypy.interpreter import error > raise error.get_converted_unexpected_exception(space, e) interpreter\gateway.py:819: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('int (*foobar)(const int a, const int *b, const int c... int (*foobar)(const int a, const int *b, const int c[]);\n ')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: > w_result = activation._run(space, scope_w) interpreter\gateway.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinActivation_UwS_ObjSpace_text_text_text_W_Root_W_Root_W_Root_int_W_Root object at 0x000002791c13af38> space = StdObjSpace scope_w = [W_BytesObject('int (*foobar)(const int a, const int *b, const int c[]);'), W_BytesObject('test_const_function_type_ar...BytesObject('\n int (*foobar)(const int a, const int *b, const int c[]);\n '), None, None, None, ...] def _run(self, space, scope_w): > return self.behavior(space, space.text_w(scope_w[0]), space.text_w(scope_w[1]), space.text_w(scope_w[2]), scope_w[3], scope_w[4], scope_w[5], space.gateway_int_w(scope_w[6]), scope_w[7]) <3152-codegen d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\rpython\tool\sourcetools.py:200>:3: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace cdef = 'int (*foobar)(const int a, const int *b, const int c[]);' module_name = '_CFFI_test_const_function_type_args' source = '\n int (*foobar)(const int a, const int *b, const int c[]);\n ' w_includes = None, w_extra_source = None, w_min_version = None, packed = 0 w_extra_compile_args = None @unwrap_spec(cdef='text', module_name='text', source='text', packed=int) def prepare(space, cdef, module_name, source, w_includes=None, w_extra_source=None, w_min_version=None, packed=False, w_extra_compile_args=None): try: import cffi from cffi import FFI # <== the system one, which from cffi import recompiler # needs to be at least cffi 1.0.4 from cffi import ffiplatform except ImportError: pytest.skip("system cffi module not found or older than 1.0.0") if w_min_version is None: min_version = (1, 4, 0) else: min_version = tuple(space.unwrap(w_min_version)) if cffi.__version_info__ < min_version: pytest.skip("system cffi module needs to be at least %s, got %s" % ( min_version, cffi.__version_info__)) space.appexec([], """(): import _cffi_backend # force it to be initialized """) includes = [] if w_includes: includes += space.unpackiterable(w_includes) assert module_name.startswith('test_') module_name = '_CFFI_' + module_name rdir = udir.ensure('recompiler', dir=1) rdir.join('Python.h').write( '#include <stdio.h>\n' '#define PYPY_VERSION XX\n' '#define PyMODINIT_FUNC /*exported*/ void\n' ) path = module_name.replace('.', os.sep) if '.' in module_name: subrdir = rdir.join(module_name[:module_name.index('.')]) os.mkdir(str(subrdir)) else: subrdir = rdir c_file = str(rdir.join('%s.c' % path)) ffi = FFI() for include_ffi_object in includes: ffi.include(include_ffi_object._test_recompiler_source_ffi) ffi.cdef(cdef, packed=packed) ffi.set_source(module_name, source) ffi.emit_c_code(c_file) base_module_name = module_name.split('.')[-1] sources = [] if w_extra_source is not None: sources.append(space.str_w(w_extra_source)) kwargs = {} # GCC 14 promotes -Wincompatible-pointer-types from a warning to an error # by default, which breaks cffi's intentionally-mismatched field-check # probes (e.g. test_misdeclared_field_1). Keep it a warning so the module # compiles and cffi's runtime checks can run. extra = ['-Wno-error=incompatible-pointer-types'] if w_extra_compile_args is not None: extra = extra + space.unwrap(w_extra_compile_args) kwargs['extra_compile_args'] = extra ext = ffiplatform.get_extension(c_file, module_name, include_dirs=[str(rdir)], export_symbols=['_cffi_pypyinit_' + base_module_name], sources=sources, **kwargs) > ffiplatform.compile(str(rdir), ext) module\_cffi_backend\test\test_recompiler.py:86: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x000002792a4ee760> compiler_verbose = 0, debug = None def compile(tmpdir, ext, compiler_verbose=0, debug=None): """Compile a C extension module using distutils.""" saved_environ = os.environ.copy() try: > outputfilename = _build(tmpdir, ext, compiler_verbose, debug) d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x000002792a4ee760> compiler_verbose = 0, debug = 0 def _build(tmpdir, ext, compiler_verbose=0, debug=None): # XXX compact but horrible :-( from cffi._shimmed_dist_utils import Distribution, CompileError, LinkError, set_threshold, set_verbosity dist = Distribution({'ext_modules': [ext]}) dist.parse_config_files() options = dist.get_option_dict('build_ext') if debug is None: debug = sys.flags.debug options['debug'] = ('ffiplatform', debug) options['force'] = ('ffiplatform', True) options['build_lib'] = ('ffiplatform', tmpdir) options['build_temp'] = ('ffiplatform', tmpdir) # try: old_level = set_threshold(0) or 0 try: set_verbosity(compiler_verbose) dist.run_command('build_ext') cmd_obj = dist.get_command_obj('build_ext') [soname] = cmd_obj.get_outputs() finally: set_threshold(old_level) except (CompileError, LinkError) as e: > raise VerificationError('%s: %s' % (e.__class__.__name__, e)) E VerificationError: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2 d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:54: VerificationError ---------------------------- Captured stdout call ----------------------------- generating d:\systemtemp\pytest\usession-main-595\recompiler\_CFFI_test_const_function_type_args.c ---------------------------- Captured stderr call ----------------------------- d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\cparser.py:165: UserWarning: Global variable 'foobar' in cdef(): for consistency with C it should have a storage class specifier (usually 'extern') "(usually 'extern')" % (decl.name,)) cl : Command line error D8021 : invalid numeric argument '/Wno-error=incompatible-pointer-types' ____________________ AppTestRecompiler.test_const_constant ____________________ self = <CallInfo when='call' exception: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2> func = <function <lambda> at 0x000002792c977e20>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ..\_pytest\runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ..\_pytest\runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_const_constant'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_const_constant'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ..\_pytest\vendored_packages\pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00000279153616a8> hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_const_constant'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_const_constant'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ..\_pytest\vendored_packages\pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_const_constant'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_const_constant'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ..\_pytest\vendored_packages\pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_const_constant'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791fd40cc8> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...t_constant'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027921a773a0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027921a773a0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...t_constant'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_const_constant'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791fd40c50> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...t_constant'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027921a77360> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027921a77360> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...t_constant'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_const_constant'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ..\_pytest\vendored_packages\pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_const_constant'> def pytest_runtest_call(item): try: > item.runtest() ..\_pytest\runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_const_constant'> def runtest(self): target = self.obj if self.config.option.runappdirect: return target() space = target.im_self.space filename = self._getdynfilename(target) func = app2interp_temp(target.im_func, filename=filename) w_instance = self.parent.w_instance > self.execute_appex(space, func, space, w_instance) tool\pytest\apptest.py:89: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_const_constant'>, space = StdObjSpace target = <function test_const_constant at 0x000002792c977e98> args = (StdObjSpace, <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>) def execute_appex(self, space, target, *args): self.space = space try: > target(*args) tool\pytest\apptest.py:30: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) w_func = <Function test_const_constant> args = <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8> def appcaller(space, *args_w): if not isinstance(space, ObjSpace): raise TypeError("first argument must be a space instance.") # the last argument can be an Arguments w_func = self.wget(space, name) if not args_w: return space.call_function(w_func) else: args = args_w[-1] assert args is not None if not isinstance(args, Arguments): > return space.call_function(w_func, *args_w) interpreter\gateway.py:1227: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <Function test_const_constant> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) nargs = 1, Function = <class 'pypy.interpreter.function.Function'> Method = <class 'pypy.interpreter.function.Method'> def call_function(self, w_func, *args_w): nargs = len(args_w) # used for pruning funccall versions if not self.config.objspace.disable_call_speedhacks and nargs < 5: # start of hack for performance from pypy.interpreter.function import Function, Method if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: if nargs < 4: func = w_func.w_function if isinstance(func, Function): return func.funccall(w_inst, *args_w) elif args_w and ( self.abstract_isinstance_w(args_w[0], w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): > return w_func.funccall(*args_w) interpreter\baseobjspace.py:1210: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <Function test_const_constant> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) gateway = <module 'pypy.interpreter.gateway' from 'd:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\interpreter\\gateway.pyc'> PyCode = <class 'pypy.interpreter.pycode.PyCode'> code = <code object test_const_constant, file '[d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:1219]', line 1> def funccall(self, *args_w): # speed hack from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit nargs = len(args_w) fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, args_w[0]) elif nargs == 2: assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, args_w[0], args_w[1]) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) return code.fastcall_3(self.space, self, args_w[0], args_w[1], args_w[2]) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) return code.fastcall_4(self.space, self, args_w[0], args_w[1], args_w[2], args_w[3]) elif (nargs | PyCode.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) if nargs < 5: new_frame = self.space.createframe(code, self.w_func_globals, self) for i in funccallunrolling: if i < nargs: new_frame.locals_cells_stack_w[i] = args_w[i] > return new_frame.run() interpreter\function.py:118: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_const_co...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1219]', line 1> at line 4 def run(self): """Start this frame's execution.""" if self.getcode().co_flags & pycode.CO_GENERATOR: from pypy.interpreter.generator import GeneratorIterator return GeneratorIterator(self) else: > return self.execute_frame() interpreter\pyframe.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_const_co...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1219]', line 1> at line 4 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, executioncontext) except OperationError: raise except Exception as e: # general fall-back > raise self._convert_unexpected_exception(e) interpreter\pyframe.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_const_co...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1219]', line 1> at line 4 e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def _convert_unexpected_exception(self, e): from pypy.interpreter import error > operr = error.get_converted_unexpected_exception(self.space, e) interpreter\pyframe.py:943: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_const_co...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1219]', line 1> at line 4 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, > executioncontext) interpreter\pyframe.py:286: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_const_co...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1219]', line 1> at line 4 pycode = <code object test_const_constant, file '[d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:1219]', line 1> next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def dispatch(self, pycode, next_instr, ec): # For the sequel, force 'next_instr' to be unsigned for performance next_instr = r_uint(next_instr) co_code = pycode.co_code try: while True: > next_instr = self.handle_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:64: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_const_co...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1219]', line 1> at line 4 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00\xcc\x18\x00|\x02\x00j\x01\x0...00d\x00\x00S\x82\x01\x00\xcc\x18\x00|\x02\x00j\x01\x00j\x04\x00d\x05\x00k\x02\x00sQ\x00t\x03\x00\x82\x01\x00d\x00\x00S' next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def handle_bytecode(self, co_code, next_instr, ec): try: > next_instr = self.dispatch_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:71: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_const_co...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1219]', line 1> at line 4 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00\xcc\x18\x00|\x02\x00j\x01\x0...00d\x00\x00S\x82\x01\x00\xcc\x18\x00|\x02\x00j\x01\x00j\x04\x00d\x05\x00k\x02\x00sQ\x00t\x03\x00\x82\x01\x00d\x00\x00S' next_instr = 18L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> @jit.unroll_safe def dispatch_bytecode(self, co_code, next_instr, ec): while True: self.last_instr = intmask(next_instr) if jit.we_are_jitted(): if self.debugdata: ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) else: # Only reload next_instr from last_instr when something that # can modify it actually ran (trace function or action # dispatcher). In the common case (no trace, positive ticker) # next_instr is unchanged and the round-trip is skipped. _d = self.debugdata if ec.space.reverse_debugging or ( _d is not None and _d.w_f_trace is not None) or ( not we_are_translated() and 'bytecode_only_trace' in ec.__dict__): ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) actionflag = ec.space.actionflag if actionflag.decrement_ticker(TICK_COUNTER_STEP) < 0: actionflag.action_dispatcher(ec, self) next_instr = r_uint(self.last_instr) opcode = ord(co_code[next_instr]) next_instr += 1 if opcode >= HAVE_ARGUMENT: lo = ord(co_code[next_instr]) hi = ord(co_code[next_instr+1]) next_instr += 2 oparg = (hi * 256) | lo else: oparg = 0 # note: the structure of the code here is such that it makes # (after translation) a big "if/elif" chain, which is then # turned into a switch(). while opcode == opcodedesc.EXTENDED_ARG.index: opcode = ord(co_code[next_instr]) if opcode < HAVE_ARGUMENT: raise BytecodeCorruption lo = ord(co_code[next_instr+1]) hi = ord(co_code[next_instr+2]) next_instr += 3 oparg = (oparg * 65536) | (hi * 256) | lo if opcode == opcodedesc.RETURN_VALUE.index: if not self.blockstack_non_empty(): self.frame_finished_execution = True # for generators raise Return w_returnvalue = self.popvalue() block = self.unrollstack(SReturnValue.kind) if block is None: self.pushvalue(w_returnvalue) raise Return else: unroller = SReturnValue(w_returnvalue) next_instr = block.handle(self, unroller) return next_instr # now inside a 'finally' block elif opcode == opcodedesc.END_FINALLY.index: unroller = self.end_finally() if isinstance(unroller, SuspendedUnroller): # go on unrolling the stack block = self.unrollstack(unroller.kind) if block is None: w_result = unroller.nomoreblocks() self.pushvalue(w_result) raise Return else: next_instr = block.handle(self, unroller) return next_instr elif opcode == opcodedesc.JUMP_ABSOLUTE.index: return self.jump_absolute(oparg, ec) elif opcode == opcodedesc.BREAK_LOOP.index: next_instr = self.BREAK_LOOP(oparg, next_instr) elif opcode == opcodedesc.CONTINUE_LOOP.index: return self.CONTINUE_LOOP(oparg, next_instr) elif opcode == opcodedesc.FOR_ITER.index: next_instr = self.FOR_ITER(oparg, next_instr) elif opcode == opcodedesc.JUMP_FORWARD.index: next_instr = self.JUMP_FORWARD(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_FALSE_OR_POP.index: next_instr = self.JUMP_IF_FALSE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_NOT_DEBUG.index: next_instr = self.JUMP_IF_NOT_DEBUG(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_TRUE_OR_POP.index: next_instr = self.JUMP_IF_TRUE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_FALSE.index: next_instr = self.POP_JUMP_IF_FALSE(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_TRUE.index: next_instr = self.POP_JUMP_IF_TRUE(oparg, next_instr) elif opcode == opcodedesc.BINARY_ADD.index: self.BINARY_ADD(oparg, next_instr) elif opcode == opcodedesc.BINARY_AND.index: self.BINARY_AND(oparg, next_instr) elif opcode == opcodedesc.BINARY_DIVIDE.index: self.BINARY_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_FLOOR_DIVIDE.index: self.BINARY_FLOOR_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_LSHIFT.index: self.BINARY_LSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_MODULO.index: self.BINARY_MODULO(oparg, next_instr) elif opcode == opcodedesc.BINARY_MULTIPLY.index: self.BINARY_MULTIPLY(oparg, next_instr) elif opcode == opcodedesc.BINARY_OR.index: self.BINARY_OR(oparg, next_instr) elif opcode == opcodedesc.BINARY_POWER.index: self.BINARY_POWER(oparg, next_instr) elif opcode == opcodedesc.BINARY_RSHIFT.index: self.BINARY_RSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBSCR.index: self.BINARY_SUBSCR(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBTRACT.index: self.BINARY_SUBTRACT(oparg, next_instr) elif opcode == opcodedesc.BINARY_TRUE_DIVIDE.index: self.BINARY_TRUE_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_XOR.index: self.BINARY_XOR(oparg, next_instr) elif opcode == opcodedesc.BUILD_CLASS.index: self.BUILD_CLASS(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST.index: self.BUILD_LIST(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST_FROM_ARG.index: self.BUILD_LIST_FROM_ARG(oparg, next_instr) elif opcode == opcodedesc.BUILD_MAP.index: self.BUILD_MAP(oparg, next_instr) elif opcode == opcodedesc.BUILD_SET.index: self.BUILD_SET(oparg, next_instr) elif opcode == opcodedesc.BUILD_SLICE.index: self.BUILD_SLICE(oparg, next_instr) elif opcode == opcodedesc.BUILD_TUPLE.index: self.BUILD_TUPLE(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION.index: self.CALL_FUNCTION(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_KW.index: self.CALL_FUNCTION_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR.index: self.CALL_FUNCTION_VAR(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR_KW.index: self.CALL_FUNCTION_VAR_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_METHOD.index: > self.CALL_METHOD(oparg, next_instr) interpreter\pyopcode.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ f = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_const_co...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1219]', line 1> at line 4 oparg = 3, ignored = (18L,), n_args = 3, n_kwargs = 0, w_self = None @jit.unroll_safe def CALL_METHOD(f, oparg, *ignored): # opargs contains the arg, and kwarg count, excluding the implicit 'self' n_args = oparg & 0xff n_kwargs = (oparg >> 8) & 0xff w_self = f.peekvalue_maybe_none(n_args + (2 * n_kwargs)) n = n_args + (w_self is not None) if not n_kwargs: w_callable = f.peekvalue(n_args + (2 * n_kwargs) + 1) w_result = f.space.call_valuestack( > w_callable, n, f, methodcall=w_self is not None, dropvalues=n_args + 2) objspace\std\callmethod.py:96: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_const_co...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1219]', line 1> at line 4 dropvalues = 5, methodcall = False def call_valuestack(self, w_func, nargs, frame, dropvalues, methodcall=False): # methodcall is only used for better error messages in argument.py from pypy.interpreter.function import Function, Method, is_builtin_code if frame.get_is_being_profiled() and is_builtin_code(w_func): # XXX: this code is copied&pasted :-( from the slow path below # call_valuestack(). args = frame.make_arguments(nargs) frame.dropvalues(dropvalues) return self.call_args_and_c_profile(frame, w_func, args) if not self.config.objspace.disable_call_speedhacks: # start of hack for performance if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: w_func = w_func.w_function # reuse callable stack place for w_inst frame.settopvalue(w_inst, nargs) nargs += 1 methodcall = True elif nargs > 0 and ( self.abstract_isinstance_w(frame.peekvalue(nargs-1), # :-( w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): return w_func.funccall_valuestack( > nargs, frame, methodcall=methodcall, dropvalues=dropvalues) interpreter\baseobjspace.py:1243: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_const_co...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1219]', line 1> at line 4 dropvalues = 5, methodcall = False def funccall_valuestack(self, nargs, frame, dropvalues, methodcall=False): # speed hack # methodcall is only for better error messages from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit # if (jit.we_are_jitted() and code is self.space._code_of_sys_exc_info and nargs == 0): frame.dropvalues(dropvalues) from pypy.module.sys.vm import exc_info_direct return exc_info_direct(self.space, frame) # fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: f_0 = frame.peekvalue(0) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, f_0) elif nargs == 2: f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, f_1, f_0) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) frame.dropvalues(dropvalues) return code.fastcall_3(self.space, self, f_2, f_1, f_0) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) f_3 = frame.peekvalue(3) frame.dropvalues(dropvalues) return code.fastcall_4(self.space, self, f_3, f_2, f_1, f_0) elif (nargs | Code.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) return self._flat_pycall(code, nargs, frame, dropvalues) elif fast_natural_arity & Code.FLATPYCALL: natural_arity = fast_natural_arity & 0xff if natural_arity > nargs >= natural_arity - len(self.defs_w): assert isinstance(code, PyCode) return self._flat_pycall_defaults(code, nargs, frame, natural_arity - nargs, dropvalues) elif fast_natural_arity == Code.PASSTHROUGHARGS1 and nargs >= 1: assert isinstance(code, gateway.BuiltinCodePassThroughArguments1) w_obj = frame.peekvalue(nargs-1) args = frame.make_arguments(nargs-1) frame.dropvalues(dropvalues) return code.funcrun_obj(self, w_obj, args) args = frame.make_arguments(nargs, methodcall=methodcall) frame.dropvalues(dropvalues) > return self.call_args(args) interpreter\function.py:190: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('struct foo_s { int x,y; }; const struct foo_s myfoo;... struct foo_s { int x,y; }; const struct foo_s myfoo = { 40, 2 };\n ')]) def call_args(self, args): # delegate activation to code > w_res = self.getcode().funcrun(self, args) interpreter\function.py:68: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('struct foo_s { int x,y; }; const struct foo_s myfoo;... struct foo_s { int x,y; }; const struct foo_s myfoo = { 40, 2 };\n ')]) def funcrun(self, func, args): > return BuiltinCode.funcrun_obj(self, func, None, args) interpreter\gateway.py:781: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('struct foo_s { int x,y; }; const struct foo_s myfoo;... struct foo_s { int x,y; }; const struct foo_s myfoo = { 40, 2 };\n ')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: w_result = activation._run(space, scope_w) except DescrMismatch: if w_obj is not None: args = args.prepend(w_obj) return self._type_unwrap_mismatch(space, args) except Exception as e: > self.handle_exception(space, e) interpreter\gateway.py:795: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> space = StdObjSpace e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def handle_exception(self, space, e): try: if not we_are_translated(): raise raise e except OperationError: raise except Exception as e: # general fall-back from pypy.interpreter import error > raise error.get_converted_unexpected_exception(space, e) interpreter\gateway.py:819: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('struct foo_s { int x,y; }; const struct foo_s myfoo;... struct foo_s { int x,y; }; const struct foo_s myfoo = { 40, 2 };\n ')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: > w_result = activation._run(space, scope_w) interpreter\gateway.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinActivation_UwS_ObjSpace_text_text_text_W_Root_W_Root_W_Root_int_W_Root object at 0x000002791c13af38> space = StdObjSpace scope_w = [W_BytesObject('struct foo_s { int x,y; }; const struct foo_s myfoo;'), W_BytesObject('test_const_constant'), W_BytesObject('\n struct foo_s { int x,y; }; const struct foo_s myfoo = { 40, 2 };\n '), None, None, None, ...] def _run(self, space, scope_w): > return self.behavior(space, space.text_w(scope_w[0]), space.text_w(scope_w[1]), space.text_w(scope_w[2]), scope_w[3], scope_w[4], scope_w[5], space.gateway_int_w(scope_w[6]), scope_w[7]) <3152-codegen d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\rpython\tool\sourcetools.py:200>:3: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace cdef = 'struct foo_s { int x,y; }; const struct foo_s myfoo;' module_name = '_CFFI_test_const_constant' source = '\n struct foo_s { int x,y; }; const struct foo_s myfoo = { 40, 2 };\n ' w_includes = None, w_extra_source = None, w_min_version = None, packed = 0 w_extra_compile_args = None @unwrap_spec(cdef='text', module_name='text', source='text', packed=int) def prepare(space, cdef, module_name, source, w_includes=None, w_extra_source=None, w_min_version=None, packed=False, w_extra_compile_args=None): try: import cffi from cffi import FFI # <== the system one, which from cffi import recompiler # needs to be at least cffi 1.0.4 from cffi import ffiplatform except ImportError: pytest.skip("system cffi module not found or older than 1.0.0") if w_min_version is None: min_version = (1, 4, 0) else: min_version = tuple(space.unwrap(w_min_version)) if cffi.__version_info__ < min_version: pytest.skip("system cffi module needs to be at least %s, got %s" % ( min_version, cffi.__version_info__)) space.appexec([], """(): import _cffi_backend # force it to be initialized """) includes = [] if w_includes: includes += space.unpackiterable(w_includes) assert module_name.startswith('test_') module_name = '_CFFI_' + module_name rdir = udir.ensure('recompiler', dir=1) rdir.join('Python.h').write( '#include <stdio.h>\n' '#define PYPY_VERSION XX\n' '#define PyMODINIT_FUNC /*exported*/ void\n' ) path = module_name.replace('.', os.sep) if '.' in module_name: subrdir = rdir.join(module_name[:module_name.index('.')]) os.mkdir(str(subrdir)) else: subrdir = rdir c_file = str(rdir.join('%s.c' % path)) ffi = FFI() for include_ffi_object in includes: ffi.include(include_ffi_object._test_recompiler_source_ffi) ffi.cdef(cdef, packed=packed) ffi.set_source(module_name, source) ffi.emit_c_code(c_file) base_module_name = module_name.split('.')[-1] sources = [] if w_extra_source is not None: sources.append(space.str_w(w_extra_source)) kwargs = {} # GCC 14 promotes -Wincompatible-pointer-types from a warning to an error # by default, which breaks cffi's intentionally-mismatched field-check # probes (e.g. test_misdeclared_field_1). Keep it a warning so the module # compiles and cffi's runtime checks can run. extra = ['-Wno-error=incompatible-pointer-types'] if w_extra_compile_args is not None: extra = extra + space.unwrap(w_extra_compile_args) kwargs['extra_compile_args'] = extra ext = ffiplatform.get_extension(c_file, module_name, include_dirs=[str(rdir)], export_symbols=['_cffi_pypyinit_' + base_module_name], sources=sources, **kwargs) > ffiplatform.compile(str(rdir), ext) module\_cffi_backend\test\test_recompiler.py:86: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x0000027921a77f60> compiler_verbose = 0, debug = None def compile(tmpdir, ext, compiler_verbose=0, debug=None): """Compile a C extension module using distutils.""" saved_environ = os.environ.copy() try: > outputfilename = _build(tmpdir, ext, compiler_verbose, debug) d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x0000027921a77f60> compiler_verbose = 0, debug = 0 def _build(tmpdir, ext, compiler_verbose=0, debug=None): # XXX compact but horrible :-( from cffi._shimmed_dist_utils import Distribution, CompileError, LinkError, set_threshold, set_verbosity dist = Distribution({'ext_modules': [ext]}) dist.parse_config_files() options = dist.get_option_dict('build_ext') if debug is None: debug = sys.flags.debug options['debug'] = ('ffiplatform', debug) options['force'] = ('ffiplatform', True) options['build_lib'] = ('ffiplatform', tmpdir) options['build_temp'] = ('ffiplatform', tmpdir) # try: old_level = set_threshold(0) or 0 try: set_verbosity(compiler_verbose) dist.run_command('build_ext') cmd_obj = dist.get_command_obj('build_ext') [soname] = cmd_obj.get_outputs() finally: set_threshold(old_level) except (CompileError, LinkError) as e: > raise VerificationError('%s: %s' % (e.__class__.__name__, e)) E VerificationError: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2 d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:54: VerificationError ---------------------------- Captured stdout call ----------------------------- generating d:\systemtemp\pytest\usession-main-595\recompiler\_CFFI_test_const_constant.c ---------------------------- Captured stderr call ----------------------------- cl : Command line error D8021 : invalid numeric argument '/Wno-error=incompatible-pointer-types' __________________ AppTestRecompiler.test_const_via_typedef ___________________ self = <CallInfo when='call' exception: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2> func = <function <lambda> at 0x0000027925029538>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ..\_pytest\runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ..\_pytest\runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_const_via_typedef'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_const_via_typedef'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ..\_pytest\vendored_packages\pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00000279153616a8> hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_const_via_typedef'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_const_via_typedef'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ..\_pytest\vendored_packages\pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_const_via_typedef'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_const_via_typedef'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ..\_pytest\vendored_packages\pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_const_via_typedef'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791ef9bbc8> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...ia_typedef'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002791cc7d820> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002791cc7d820> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...ia_typedef'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_const_via_typedef'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791ef9bb50> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...ia_typedef'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002791cc7d7e0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002791cc7d7e0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...ia_typedef'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_const_via_typedef'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ..\_pytest\vendored_packages\pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_const_via_typedef'> def pytest_runtest_call(item): try: > item.runtest() ..\_pytest\runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_const_via_typedef'> def runtest(self): target = self.obj if self.config.option.runappdirect: return target() space = target.im_self.space filename = self._getdynfilename(target) func = app2interp_temp(target.im_func, filename=filename) w_instance = self.parent.w_instance > self.execute_appex(space, func, space, w_instance) tool\pytest\apptest.py:89: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_const_via_typedef'>, space = StdObjSpace target = <function test_const_via_typedef at 0x00000279250296a0> args = (StdObjSpace, <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>) def execute_appex(self, space, target, *args): self.space = space try: > target(*args) tool\pytest\apptest.py:30: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) w_func = <Function test_const_via_typedef> args = <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8> def appcaller(space, *args_w): if not isinstance(space, ObjSpace): raise TypeError("first argument must be a space instance.") # the last argument can be an Arguments w_func = self.wget(space, name) if not args_w: return space.call_function(w_func) else: args = args_w[-1] assert args is not None if not isinstance(args, Arguments): > return space.call_function(w_func, *args_w) interpreter\gateway.py:1227: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <Function test_const_via_typedef> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) nargs = 1, Function = <class 'pypy.interpreter.function.Function'> Method = <class 'pypy.interpreter.function.Method'> def call_function(self, w_func, *args_w): nargs = len(args_w) # used for pruning funccall versions if not self.config.objspace.disable_call_speedhacks and nargs < 5: # start of hack for performance from pypy.interpreter.function import Function, Method if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: if nargs < 4: func = w_func.w_function if isinstance(func, Function): return func.funccall(w_inst, *args_w) elif args_w and ( self.abstract_isinstance_w(args_w[0], w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): > return w_func.funccall(*args_w) interpreter\baseobjspace.py:1210: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <Function test_const_via_typedef> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) gateway = <module 'pypy.interpreter.gateway' from 'd:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\interpreter\\gateway.pyc'> PyCode = <class 'pypy.interpreter.pycode.PyCode'> code = <code object test_const_via_typedef, file '[d:\pypy_stuff\buildbot64\slave\own...-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:1228]', line 1> def funccall(self, *args_w): # speed hack from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit nargs = len(args_w) fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, args_w[0]) elif nargs == 2: assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, args_w[0], args_w[1]) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) return code.fastcall_3(self.space, self, args_w[0], args_w[1], args_w[2]) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) return code.fastcall_4(self.space, self, args_w[0], args_w[1], args_w[2], args_w[3]) elif (nargs | PyCode.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) if nargs < 5: new_frame = self.space.createframe(code, self.w_func_globals, self) for i in funccallunrolling: if i < nargs: new_frame.locals_cells_stack_w[i] = args_w[i] > return new_frame.run() interpreter\function.py:118: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_const_vi...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1228]', line 1> at line 4 def run(self): """Start this frame's execution.""" if self.getcode().co_flags & pycode.CO_GENERATOR: from pypy.interpreter.generator import GeneratorIterator return GeneratorIterator(self) else: > return self.execute_frame() interpreter\pyframe.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_const_vi...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1228]', line 1> at line 4 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, executioncontext) except OperationError: raise except Exception as e: # general fall-back > raise self._convert_unexpected_exception(e) interpreter\pyframe.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_const_vi...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1228]', line 1> at line 4 e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def _convert_unexpected_exception(self, e): from pypy.interpreter import error > operr = error.get_converted_unexpected_exception(self.space, e) interpreter\pyframe.py:943: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_const_vi...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1228]', line 1> at line 4 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, > executioncontext) interpreter\pyframe.py:286: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_const_vi...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1228]', line 1> at line 4 pycode = <code object test_const_via_typedef, file '[d:\pypy_stuff\buildbot64\slave\own...-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:1228]', line 1> next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def dispatch(self, pycode, next_instr, ec): # For the sequel, force 'next_instr' to be unsigned for performance next_instr = r_uint(next_instr) co_code = pycode.co_code try: while True: > next_instr = self.handle_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:64: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_const_vi...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1228]', line 1> at line 4 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00\xcc\x15\x00|\x02\x00j\x01\x00d\x04\x00k\x02\x00s3\x00t\x02\x00\x82\x01\x00t\x03\x00t\x04\x00d\x05\x00\x83\x02\x00\x01d\x00\x00S' next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def handle_bytecode(self, co_code, next_instr, ec): try: > next_instr = self.dispatch_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:71: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_const_vi...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1228]', line 1> at line 4 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00\xcc\x15\x00|\x02\x00j\x01\x00d\x04\x00k\x02\x00s3\x00t\x02\x00\x82\x01\x00t\x03\x00t\x04\x00d\x05\x00\x83\x02\x00\x01d\x00\x00S' next_instr = 18L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> @jit.unroll_safe def dispatch_bytecode(self, co_code, next_instr, ec): while True: self.last_instr = intmask(next_instr) if jit.we_are_jitted(): if self.debugdata: ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) else: # Only reload next_instr from last_instr when something that # can modify it actually ran (trace function or action # dispatcher). In the common case (no trace, positive ticker) # next_instr is unchanged and the round-trip is skipped. _d = self.debugdata if ec.space.reverse_debugging or ( _d is not None and _d.w_f_trace is not None) or ( not we_are_translated() and 'bytecode_only_trace' in ec.__dict__): ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) actionflag = ec.space.actionflag if actionflag.decrement_ticker(TICK_COUNTER_STEP) < 0: actionflag.action_dispatcher(ec, self) next_instr = r_uint(self.last_instr) opcode = ord(co_code[next_instr]) next_instr += 1 if opcode >= HAVE_ARGUMENT: lo = ord(co_code[next_instr]) hi = ord(co_code[next_instr+1]) next_instr += 2 oparg = (hi * 256) | lo else: oparg = 0 # note: the structure of the code here is such that it makes # (after translation) a big "if/elif" chain, which is then # turned into a switch(). while opcode == opcodedesc.EXTENDED_ARG.index: opcode = ord(co_code[next_instr]) if opcode < HAVE_ARGUMENT: raise BytecodeCorruption lo = ord(co_code[next_instr+1]) hi = ord(co_code[next_instr+2]) next_instr += 3 oparg = (oparg * 65536) | (hi * 256) | lo if opcode == opcodedesc.RETURN_VALUE.index: if not self.blockstack_non_empty(): self.frame_finished_execution = True # for generators raise Return w_returnvalue = self.popvalue() block = self.unrollstack(SReturnValue.kind) if block is None: self.pushvalue(w_returnvalue) raise Return else: unroller = SReturnValue(w_returnvalue) next_instr = block.handle(self, unroller) return next_instr # now inside a 'finally' block elif opcode == opcodedesc.END_FINALLY.index: unroller = self.end_finally() if isinstance(unroller, SuspendedUnroller): # go on unrolling the stack block = self.unrollstack(unroller.kind) if block is None: w_result = unroller.nomoreblocks() self.pushvalue(w_result) raise Return else: next_instr = block.handle(self, unroller) return next_instr elif opcode == opcodedesc.JUMP_ABSOLUTE.index: return self.jump_absolute(oparg, ec) elif opcode == opcodedesc.BREAK_LOOP.index: next_instr = self.BREAK_LOOP(oparg, next_instr) elif opcode == opcodedesc.CONTINUE_LOOP.index: return self.CONTINUE_LOOP(oparg, next_instr) elif opcode == opcodedesc.FOR_ITER.index: next_instr = self.FOR_ITER(oparg, next_instr) elif opcode == opcodedesc.JUMP_FORWARD.index: next_instr = self.JUMP_FORWARD(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_FALSE_OR_POP.index: next_instr = self.JUMP_IF_FALSE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_NOT_DEBUG.index: next_instr = self.JUMP_IF_NOT_DEBUG(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_TRUE_OR_POP.index: next_instr = self.JUMP_IF_TRUE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_FALSE.index: next_instr = self.POP_JUMP_IF_FALSE(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_TRUE.index: next_instr = self.POP_JUMP_IF_TRUE(oparg, next_instr) elif opcode == opcodedesc.BINARY_ADD.index: self.BINARY_ADD(oparg, next_instr) elif opcode == opcodedesc.BINARY_AND.index: self.BINARY_AND(oparg, next_instr) elif opcode == opcodedesc.BINARY_DIVIDE.index: self.BINARY_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_FLOOR_DIVIDE.index: self.BINARY_FLOOR_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_LSHIFT.index: self.BINARY_LSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_MODULO.index: self.BINARY_MODULO(oparg, next_instr) elif opcode == opcodedesc.BINARY_MULTIPLY.index: self.BINARY_MULTIPLY(oparg, next_instr) elif opcode == opcodedesc.BINARY_OR.index: self.BINARY_OR(oparg, next_instr) elif opcode == opcodedesc.BINARY_POWER.index: self.BINARY_POWER(oparg, next_instr) elif opcode == opcodedesc.BINARY_RSHIFT.index: self.BINARY_RSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBSCR.index: self.BINARY_SUBSCR(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBTRACT.index: self.BINARY_SUBTRACT(oparg, next_instr) elif opcode == opcodedesc.BINARY_TRUE_DIVIDE.index: self.BINARY_TRUE_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_XOR.index: self.BINARY_XOR(oparg, next_instr) elif opcode == opcodedesc.BUILD_CLASS.index: self.BUILD_CLASS(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST.index: self.BUILD_LIST(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST_FROM_ARG.index: self.BUILD_LIST_FROM_ARG(oparg, next_instr) elif opcode == opcodedesc.BUILD_MAP.index: self.BUILD_MAP(oparg, next_instr) elif opcode == opcodedesc.BUILD_SET.index: self.BUILD_SET(oparg, next_instr) elif opcode == opcodedesc.BUILD_SLICE.index: self.BUILD_SLICE(oparg, next_instr) elif opcode == opcodedesc.BUILD_TUPLE.index: self.BUILD_TUPLE(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION.index: self.CALL_FUNCTION(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_KW.index: self.CALL_FUNCTION_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR.index: self.CALL_FUNCTION_VAR(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR_KW.index: self.CALL_FUNCTION_VAR_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_METHOD.index: > self.CALL_METHOD(oparg, next_instr) interpreter\pyopcode.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ f = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_const_vi...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1228]', line 1> at line 4 oparg = 3, ignored = (18L,), n_args = 3, n_kwargs = 0, w_self = None @jit.unroll_safe def CALL_METHOD(f, oparg, *ignored): # opargs contains the arg, and kwarg count, excluding the implicit 'self' n_args = oparg & 0xff n_kwargs = (oparg >> 8) & 0xff w_self = f.peekvalue_maybe_none(n_args + (2 * n_kwargs)) n = n_args + (w_self is not None) if not n_kwargs: w_callable = f.peekvalue(n_args + (2 * n_kwargs) + 1) w_result = f.space.call_valuestack( > w_callable, n, f, methodcall=w_self is not None, dropvalues=n_args + 2) objspace\std\callmethod.py:96: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_const_vi...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1228]', line 1> at line 4 dropvalues = 5, methodcall = False def call_valuestack(self, w_func, nargs, frame, dropvalues, methodcall=False): # methodcall is only used for better error messages in argument.py from pypy.interpreter.function import Function, Method, is_builtin_code if frame.get_is_being_profiled() and is_builtin_code(w_func): # XXX: this code is copied&pasted :-( from the slow path below # call_valuestack(). args = frame.make_arguments(nargs) frame.dropvalues(dropvalues) return self.call_args_and_c_profile(frame, w_func, args) if not self.config.objspace.disable_call_speedhacks: # start of hack for performance if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: w_func = w_func.w_function # reuse callable stack place for w_inst frame.settopvalue(w_inst, nargs) nargs += 1 methodcall = True elif nargs > 0 and ( self.abstract_isinstance_w(frame.peekvalue(nargs-1), # :-( w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): return w_func.funccall_valuestack( > nargs, frame, methodcall=methodcall, dropvalues=dropvalues) interpreter\baseobjspace.py:1243: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_const_vi...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1228]', line 1> at line 4 dropvalues = 5, methodcall = False def funccall_valuestack(self, nargs, frame, dropvalues, methodcall=False): # speed hack # methodcall is only for better error messages from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit # if (jit.we_are_jitted() and code is self.space._code_of_sys_exc_info and nargs == 0): frame.dropvalues(dropvalues) from pypy.module.sys.vm import exc_info_direct return exc_info_direct(self.space, frame) # fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: f_0 = frame.peekvalue(0) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, f_0) elif nargs == 2: f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, f_1, f_0) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) frame.dropvalues(dropvalues) return code.fastcall_3(self.space, self, f_2, f_1, f_0) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) f_3 = frame.peekvalue(3) frame.dropvalues(dropvalues) return code.fastcall_4(self.space, self, f_3, f_2, f_1, f_0) elif (nargs | Code.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) return self._flat_pycall(code, nargs, frame, dropvalues) elif fast_natural_arity & Code.FLATPYCALL: natural_arity = fast_natural_arity & 0xff if natural_arity > nargs >= natural_arity - len(self.defs_w): assert isinstance(code, PyCode) return self._flat_pycall_defaults(code, nargs, frame, natural_arity - nargs, dropvalues) elif fast_natural_arity == Code.PASSTHROUGHARGS1 and nargs >= 1: assert isinstance(code, gateway.BuiltinCodePassThroughArguments1) w_obj = frame.peekvalue(nargs-1) args = frame.make_arguments(nargs-1) frame.dropvalues(dropvalues) return code.funcrun_obj(self, w_obj, args) args = frame.make_arguments(nargs, methodcall=methodcall) frame.dropvalues(dropvalues) > return self.call_args(args) interpreter\function.py:190: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('typedef const int const_t; const_t aaa;'), W_BytesOb... typedef const int const_t;\n #define aaa 42\n ')]) def call_args(self, args): # delegate activation to code > w_res = self.getcode().funcrun(self, args) interpreter\function.py:68: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('typedef const int const_t; const_t aaa;'), W_BytesOb... typedef const int const_t;\n #define aaa 42\n ')]) def funcrun(self, func, args): > return BuiltinCode.funcrun_obj(self, func, None, args) interpreter\gateway.py:781: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('typedef const int const_t; const_t aaa;'), W_BytesOb... typedef const int const_t;\n #define aaa 42\n ')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: w_result = activation._run(space, scope_w) except DescrMismatch: if w_obj is not None: args = args.prepend(w_obj) return self._type_unwrap_mismatch(space, args) except Exception as e: > self.handle_exception(space, e) interpreter\gateway.py:795: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> space = StdObjSpace e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def handle_exception(self, space, e): try: if not we_are_translated(): raise raise e except OperationError: raise except Exception as e: # general fall-back from pypy.interpreter import error > raise error.get_converted_unexpected_exception(space, e) interpreter\gateway.py:819: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('typedef const int const_t; const_t aaa;'), W_BytesOb... typedef const int const_t;\n #define aaa 42\n ')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: > w_result = activation._run(space, scope_w) interpreter\gateway.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinActivation_UwS_ObjSpace_text_text_text_W_Root_W_Root_W_Root_int_W_Root object at 0x000002791c13af38> space = StdObjSpace scope_w = [W_BytesObject('typedef const int const_t; const_t aaa;'), W_BytesObject('test_const_via_typedef'), W_BytesObject('\n typedef const int const_t;\n #define aaa 42\n '), None, None, None, ...] def _run(self, space, scope_w): > return self.behavior(space, space.text_w(scope_w[0]), space.text_w(scope_w[1]), space.text_w(scope_w[2]), scope_w[3], scope_w[4], scope_w[5], space.gateway_int_w(scope_w[6]), scope_w[7]) <3152-codegen d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\rpython\tool\sourcetools.py:200>:3: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace, cdef = 'typedef const int const_t; const_t aaa;' module_name = '_CFFI_test_const_via_typedef' source = '\n typedef const int const_t;\n #define aaa 42\n ' w_includes = None, w_extra_source = None, w_min_version = None, packed = 0 w_extra_compile_args = None @unwrap_spec(cdef='text', module_name='text', source='text', packed=int) def prepare(space, cdef, module_name, source, w_includes=None, w_extra_source=None, w_min_version=None, packed=False, w_extra_compile_args=None): try: import cffi from cffi import FFI # <== the system one, which from cffi import recompiler # needs to be at least cffi 1.0.4 from cffi import ffiplatform except ImportError: pytest.skip("system cffi module not found or older than 1.0.0") if w_min_version is None: min_version = (1, 4, 0) else: min_version = tuple(space.unwrap(w_min_version)) if cffi.__version_info__ < min_version: pytest.skip("system cffi module needs to be at least %s, got %s" % ( min_version, cffi.__version_info__)) space.appexec([], """(): import _cffi_backend # force it to be initialized """) includes = [] if w_includes: includes += space.unpackiterable(w_includes) assert module_name.startswith('test_') module_name = '_CFFI_' + module_name rdir = udir.ensure('recompiler', dir=1) rdir.join('Python.h').write( '#include <stdio.h>\n' '#define PYPY_VERSION XX\n' '#define PyMODINIT_FUNC /*exported*/ void\n' ) path = module_name.replace('.', os.sep) if '.' in module_name: subrdir = rdir.join(module_name[:module_name.index('.')]) os.mkdir(str(subrdir)) else: subrdir = rdir c_file = str(rdir.join('%s.c' % path)) ffi = FFI() for include_ffi_object in includes: ffi.include(include_ffi_object._test_recompiler_source_ffi) ffi.cdef(cdef, packed=packed) ffi.set_source(module_name, source) ffi.emit_c_code(c_file) base_module_name = module_name.split('.')[-1] sources = [] if w_extra_source is not None: sources.append(space.str_w(w_extra_source)) kwargs = {} # GCC 14 promotes -Wincompatible-pointer-types from a warning to an error # by default, which breaks cffi's intentionally-mismatched field-check # probes (e.g. test_misdeclared_field_1). Keep it a warning so the module # compiles and cffi's runtime checks can run. extra = ['-Wno-error=incompatible-pointer-types'] if w_extra_compile_args is not None: extra = extra + space.unwrap(w_extra_compile_args) kwargs['extra_compile_args'] = extra ext = ffiplatform.get_extension(c_file, module_name, include_dirs=[str(rdir)], export_symbols=['_cffi_pypyinit_' + base_module_name], sources=sources, **kwargs) > ffiplatform.compile(str(rdir), ext) module\_cffi_backend\test\test_recompiler.py:86: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x000002791debcee0> compiler_verbose = 0, debug = None def compile(tmpdir, ext, compiler_verbose=0, debug=None): """Compile a C extension module using distutils.""" saved_environ = os.environ.copy() try: > outputfilename = _build(tmpdir, ext, compiler_verbose, debug) d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x000002791debcee0> compiler_verbose = 0, debug = 0 def _build(tmpdir, ext, compiler_verbose=0, debug=None): # XXX compact but horrible :-( from cffi._shimmed_dist_utils import Distribution, CompileError, LinkError, set_threshold, set_verbosity dist = Distribution({'ext_modules': [ext]}) dist.parse_config_files() options = dist.get_option_dict('build_ext') if debug is None: debug = sys.flags.debug options['debug'] = ('ffiplatform', debug) options['force'] = ('ffiplatform', True) options['build_lib'] = ('ffiplatform', tmpdir) options['build_temp'] = ('ffiplatform', tmpdir) # try: old_level = set_threshold(0) or 0 try: set_verbosity(compiler_verbose) dist.run_command('build_ext') cmd_obj = dist.get_command_obj('build_ext') [soname] = cmd_obj.get_outputs() finally: set_threshold(old_level) except (CompileError, LinkError) as e: > raise VerificationError('%s: %s' % (e.__class__.__name__, e)) E VerificationError: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2 d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:54: VerificationError ---------------------------- Captured stdout call ----------------------------- generating d:\systemtemp\pytest\usession-main-595\recompiler\_CFFI_test_const_via_typedef.c ---------------------------- Captured stderr call ----------------------------- cl : Command line error D8021 : invalid numeric argument '/Wno-error=incompatible-pointer-types' ______________ AppTestRecompiler.test_win32_calling_convention_0 ______________ self = <CallInfo when='call' exception: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2> func = <function <lambda> at 0x0000027920031538>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ..\_pytest\runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ..\_pytest\runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_win32_calling_convention_0'>, '...lticall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_win32_calling_convention_0'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ..\_pytest\vendored_packages\pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00000279153616a8> hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_win32_calling_convention_0'>, '...lticall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_win32_calling_convention_0'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ..\_pytest\vendored_packages\pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_win32_calling_convention_0'>, '...lticall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_win32_calling_convention_0'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ..\_pytest\vendored_packages\pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_win32_calling_convention_0'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x0000027927fed808> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...nvention_0'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027928b38b60> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027928b38b60> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...nvention_0'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_win32_calling_convention_0'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x0000027927fed7b8> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...nvention_0'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027928b38b20> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027928b38b20> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...nvention_0'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_win32_calling_convention_0'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ..\_pytest\vendored_packages\pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_win32_calling_convention_0'> def pytest_runtest_call(item): try: > item.runtest() ..\_pytest\runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_win32_calling_convention_0'> def runtest(self): target = self.obj if self.config.option.runappdirect: return target() space = target.im_self.space filename = self._getdynfilename(target) func = app2interp_temp(target.im_func, filename=filename) w_instance = self.parent.w_instance > self.execute_appex(space, func, space, w_instance) tool\pytest\apptest.py:89: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_win32_calling_convention_0'>, space = StdObjSpace target = <function test_win32_calling_convention_0 at 0x00000279200315b0> args = (StdObjSpace, <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>) def execute_appex(self, space, target, *args): self.space = space try: > target(*args) tool\pytest\apptest.py:30: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) w_func = <Function test_win32_calling_convention_0> args = <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8> def appcaller(space, *args_w): if not isinstance(space, ObjSpace): raise TypeError("first argument must be a space instance.") # the last argument can be an Arguments w_func = self.wget(space, name) if not args_w: return space.call_function(w_func) else: args = args_w[-1] assert args is not None if not isinstance(args, Arguments): > return space.call_function(w_func, *args_w) interpreter\gateway.py:1227: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <Function test_win32_calling_convention_0> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) nargs = 1, Function = <class 'pypy.interpreter.function.Function'> Method = <class 'pypy.interpreter.function.Method'> def call_function(self, w_func, *args_w): nargs = len(args_w) # used for pruning funccall versions if not self.config.objspace.disable_call_speedhacks and nargs < 5: # start of hack for performance from pypy.interpreter.function import Function, Method if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: if nargs < 4: func = w_func.w_function if isinstance(func, Function): return func.funccall(w_inst, *args_w) elif args_w and ( self.abstract_isinstance_w(args_w[0], w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): > return w_func.funccall(*args_w) interpreter\baseobjspace.py:1210: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <Function test_win32_calling_convention_0> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) gateway = <module 'pypy.interpreter.gateway' from 'd:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\interpreter\\gateway.pyc'> PyCode = <class 'pypy.interpreter.pycode.PyCode'> code = <code object test_win32_calling_convention_0, file '[d:\pypy_stuff\buildbot64\...-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:1238]', line 1> def funccall(self, *args_w): # speed hack from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit nargs = len(args_w) fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, args_w[0]) elif nargs == 2: assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, args_w[0], args_w[1]) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) return code.fastcall_3(self.space, self, args_w[0], args_w[1], args_w[2]) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) return code.fastcall_4(self.space, self, args_w[0], args_w[1], args_w[2], args_w[3]) elif (nargs | PyCode.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) if nargs < 5: new_frame = self.space.createframe(code, self.w_func_globals, self) for i in funccallunrolling: if i < nargs: new_frame.locals_cells_stack_w[i] = args_w[i] > return new_frame.run() interpreter\function.py:118: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_win32_ca...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1238]', line 1> at line 8 def run(self): """Start this frame's execution.""" if self.getcode().co_flags & pycode.CO_GENERATOR: from pypy.interpreter.generator import GeneratorIterator return GeneratorIterator(self) else: > return self.execute_frame() interpreter\pyframe.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_win32_ca...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1238]', line 1> at line 8 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, executioncontext) except OperationError: raise except Exception as e: # general fall-back > raise self._convert_unexpected_exception(e) interpreter\pyframe.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_win32_ca...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1238]', line 1> at line 8 e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def _convert_unexpected_exception(self, e): from pypy.interpreter import error > operr = error.get_converted_unexpected_exception(self.space, e) interpreter\pyframe.py:943: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_win32_ca...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1238]', line 1> at line 8 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, > executioncontext) interpreter\pyframe.py:286: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_win32_ca...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1238]', line 1> at line 8 pycode = <code object test_win32_calling_convention_0, file '[d:\pypy_stuff\buildbot64\...-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:1238]', line 1> next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def dispatch(self, pycode, next_instr, ec): # For the sequel, force 'next_instr' to be unsigned for performance next_instr = r_uint(next_instr) co_code = pycode.co_code try: while True: > next_instr = self.handle_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:64: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_win32_ca...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1238]', line 1> at line 8 co_code = 'd\x01\x00d\x00\x00l\x00\x00}\x01\x00|\x00\x00\xc9\x01\x00d\x02\x00d\x03\x00d\x04\x00\xca\x03\x00\\\x02\x00}\x02\x00}\...c9\n\x00|\x05\x00\xca\x01\x00|\x02\x00\xc9\n\x00|\x04\x00\xca\x01\x00k\x08\x00s\xc7\x01t\x04\x00\x82\x01\x00d\x00\x00S' next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def handle_bytecode(self, co_code, next_instr, ec): try: > next_instr = self.dispatch_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:71: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_win32_ca...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1238]', line 1> at line 8 co_code = 'd\x01\x00d\x00\x00l\x00\x00}\x01\x00|\x00\x00\xc9\x01\x00d\x02\x00d\x03\x00d\x04\x00\xca\x03\x00\\\x02\x00}\x02\x00}\...c9\n\x00|\x05\x00\xca\x01\x00|\x02\x00\xc9\n\x00|\x04\x00\xca\x01\x00k\x08\x00s\xc7\x01t\x04\x00\x82\x01\x00d\x00\x00S' next_instr = 30L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> @jit.unroll_safe def dispatch_bytecode(self, co_code, next_instr, ec): while True: self.last_instr = intmask(next_instr) if jit.we_are_jitted(): if self.debugdata: ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) else: # Only reload next_instr from last_instr when something that # can modify it actually ran (trace function or action # dispatcher). In the common case (no trace, positive ticker) # next_instr is unchanged and the round-trip is skipped. _d = self.debugdata if ec.space.reverse_debugging or ( _d is not None and _d.w_f_trace is not None) or ( not we_are_translated() and 'bytecode_only_trace' in ec.__dict__): ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) actionflag = ec.space.actionflag if actionflag.decrement_ticker(TICK_COUNTER_STEP) < 0: actionflag.action_dispatcher(ec, self) next_instr = r_uint(self.last_instr) opcode = ord(co_code[next_instr]) next_instr += 1 if opcode >= HAVE_ARGUMENT: lo = ord(co_code[next_instr]) hi = ord(co_code[next_instr+1]) next_instr += 2 oparg = (hi * 256) | lo else: oparg = 0 # note: the structure of the code here is such that it makes # (after translation) a big "if/elif" chain, which is then # turned into a switch(). while opcode == opcodedesc.EXTENDED_ARG.index: opcode = ord(co_code[next_instr]) if opcode < HAVE_ARGUMENT: raise BytecodeCorruption lo = ord(co_code[next_instr+1]) hi = ord(co_code[next_instr+2]) next_instr += 3 oparg = (oparg * 65536) | (hi * 256) | lo if opcode == opcodedesc.RETURN_VALUE.index: if not self.blockstack_non_empty(): self.frame_finished_execution = True # for generators raise Return w_returnvalue = self.popvalue() block = self.unrollstack(SReturnValue.kind) if block is None: self.pushvalue(w_returnvalue) raise Return else: unroller = SReturnValue(w_returnvalue) next_instr = block.handle(self, unroller) return next_instr # now inside a 'finally' block elif opcode == opcodedesc.END_FINALLY.index: unroller = self.end_finally() if isinstance(unroller, SuspendedUnroller): # go on unrolling the stack block = self.unrollstack(unroller.kind) if block is None: w_result = unroller.nomoreblocks() self.pushvalue(w_result) raise Return else: next_instr = block.handle(self, unroller) return next_instr elif opcode == opcodedesc.JUMP_ABSOLUTE.index: return self.jump_absolute(oparg, ec) elif opcode == opcodedesc.BREAK_LOOP.index: next_instr = self.BREAK_LOOP(oparg, next_instr) elif opcode == opcodedesc.CONTINUE_LOOP.index: return self.CONTINUE_LOOP(oparg, next_instr) elif opcode == opcodedesc.FOR_ITER.index: next_instr = self.FOR_ITER(oparg, next_instr) elif opcode == opcodedesc.JUMP_FORWARD.index: next_instr = self.JUMP_FORWARD(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_FALSE_OR_POP.index: next_instr = self.JUMP_IF_FALSE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_NOT_DEBUG.index: next_instr = self.JUMP_IF_NOT_DEBUG(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_TRUE_OR_POP.index: next_instr = self.JUMP_IF_TRUE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_FALSE.index: next_instr = self.POP_JUMP_IF_FALSE(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_TRUE.index: next_instr = self.POP_JUMP_IF_TRUE(oparg, next_instr) elif opcode == opcodedesc.BINARY_ADD.index: self.BINARY_ADD(oparg, next_instr) elif opcode == opcodedesc.BINARY_AND.index: self.BINARY_AND(oparg, next_instr) elif opcode == opcodedesc.BINARY_DIVIDE.index: self.BINARY_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_FLOOR_DIVIDE.index: self.BINARY_FLOOR_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_LSHIFT.index: self.BINARY_LSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_MODULO.index: self.BINARY_MODULO(oparg, next_instr) elif opcode == opcodedesc.BINARY_MULTIPLY.index: self.BINARY_MULTIPLY(oparg, next_instr) elif opcode == opcodedesc.BINARY_OR.index: self.BINARY_OR(oparg, next_instr) elif opcode == opcodedesc.BINARY_POWER.index: self.BINARY_POWER(oparg, next_instr) elif opcode == opcodedesc.BINARY_RSHIFT.index: self.BINARY_RSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBSCR.index: self.BINARY_SUBSCR(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBTRACT.index: self.BINARY_SUBTRACT(oparg, next_instr) elif opcode == opcodedesc.BINARY_TRUE_DIVIDE.index: self.BINARY_TRUE_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_XOR.index: self.BINARY_XOR(oparg, next_instr) elif opcode == opcodedesc.BUILD_CLASS.index: self.BUILD_CLASS(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST.index: self.BUILD_LIST(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST_FROM_ARG.index: self.BUILD_LIST_FROM_ARG(oparg, next_instr) elif opcode == opcodedesc.BUILD_MAP.index: self.BUILD_MAP(oparg, next_instr) elif opcode == opcodedesc.BUILD_SET.index: self.BUILD_SET(oparg, next_instr) elif opcode == opcodedesc.BUILD_SLICE.index: self.BUILD_SLICE(oparg, next_instr) elif opcode == opcodedesc.BUILD_TUPLE.index: self.BUILD_TUPLE(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION.index: self.CALL_FUNCTION(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_KW.index: self.CALL_FUNCTION_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR.index: self.CALL_FUNCTION_VAR(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR_KW.index: self.CALL_FUNCTION_VAR_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_METHOD.index: > self.CALL_METHOD(oparg, next_instr) interpreter\pyopcode.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ f = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_win32_ca...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1238]', line 1> at line 8 oparg = 3, ignored = (30L,), n_args = 3, n_kwargs = 0, w_self = None @jit.unroll_safe def CALL_METHOD(f, oparg, *ignored): # opargs contains the arg, and kwarg count, excluding the implicit 'self' n_args = oparg & 0xff n_kwargs = (oparg >> 8) & 0xff w_self = f.peekvalue_maybe_none(n_args + (2 * n_kwargs)) n = n_args + (w_self is not None) if not n_kwargs: w_callable = f.peekvalue(n_args + (2 * n_kwargs) + 1) w_result = f.space.call_valuestack( > w_callable, n, f, methodcall=w_self is not None, dropvalues=n_args + 2) objspace\std\callmethod.py:96: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_win32_ca...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1238]', line 1> at line 8 dropvalues = 5, methodcall = False def call_valuestack(self, w_func, nargs, frame, dropvalues, methodcall=False): # methodcall is only used for better error messages in argument.py from pypy.interpreter.function import Function, Method, is_builtin_code if frame.get_is_being_profiled() and is_builtin_code(w_func): # XXX: this code is copied&pasted :-( from the slow path below # call_valuestack(). args = frame.make_arguments(nargs) frame.dropvalues(dropvalues) return self.call_args_and_c_profile(frame, w_func, args) if not self.config.objspace.disable_call_speedhacks: # start of hack for performance if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: w_func = w_func.w_function # reuse callable stack place for w_inst frame.settopvalue(w_inst, nargs) nargs += 1 methodcall = True elif nargs > 0 and ( self.abstract_isinstance_w(frame.peekvalue(nargs-1), # :-( w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): return w_func.funccall_valuestack( > nargs, frame, methodcall=methodcall, dropvalues=dropvalues) interpreter\baseobjspace.py:1243: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_win32_ca...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1238]', line 1> at line 8 dropvalues = 5, methodcall = False def funccall_valuestack(self, nargs, frame, dropvalues, methodcall=False): # speed hack # methodcall is only for better error messages from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit # if (jit.we_are_jitted() and code is self.space._code_of_sys_exc_info and nargs == 0): frame.dropvalues(dropvalues) from pypy.module.sys.vm import exc_info_direct return exc_info_direct(self.space, frame) # fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: f_0 = frame.peekvalue(0) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, f_0) elif nargs == 2: f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, f_1, f_0) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) frame.dropvalues(dropvalues) return code.fastcall_3(self.space, self, f_2, f_1, f_0) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) f_3 = frame.peekvalue(3) frame.dropvalues(dropvalues) return code.fastcall_4(self.space, self, f_3, f_2, f_1, f_0) elif (nargs | Code.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) return self._flat_pycall(code, nargs, frame, dropvalues) elif fast_natural_arity & Code.FLATPYCALL: natural_arity = fast_natural_arity & 0xff if natural_arity > nargs >= natural_arity - len(self.defs_w): assert isinstance(code, PyCode) return self._flat_pycall_defaults(code, nargs, frame, natural_arity - nargs, dropvalues) elif fast_natural_arity == Code.PASSTHROUGHARGS1 and nargs >= 1: assert isinstance(code, gateway.BuiltinCodePassThroughArguments1) w_obj = frame.peekvalue(nargs-1) args = frame.make_arguments(nargs-1) frame.dropvalues(dropvalues) return code.funcrun_obj(self, w_obj, args) args = frame.make_arguments(nargs, methodcall=methodcall) frame.dropvalues(dropvalues) > return self.call_args(args) interpreter\function.py:190: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('\n int call1(int(__cdecl *cb)(int));\n ...= %d\\n", result);\n return result;\n }\n ')]) def call_args(self, args): # delegate activation to code > w_res = self.getcode().funcrun(self, args) interpreter\function.py:68: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('\n int call1(int(__cdecl *cb)(int));\n ...= %d\\n", result);\n return result;\n }\n ')]) def funcrun(self, func, args): > return BuiltinCode.funcrun_obj(self, func, None, args) interpreter\gateway.py:781: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('\n int call1(int(__cdecl *cb)(int));\n ...= %d\\n", result);\n return result;\n }\n ')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: w_result = activation._run(space, scope_w) except DescrMismatch: if w_obj is not None: args = args.prepend(w_obj) return self._type_unwrap_mismatch(space, args) except Exception as e: > self.handle_exception(space, e) interpreter\gateway.py:795: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> space = StdObjSpace e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def handle_exception(self, space, e): try: if not we_are_translated(): raise raise e except OperationError: raise except Exception as e: # general fall-back from pypy.interpreter import error > raise error.get_converted_unexpected_exception(space, e) interpreter\gateway.py:819: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('\n int call1(int(__cdecl *cb)(int));\n ...= %d\\n", result);\n return result;\n }\n ')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: > w_result = activation._run(space, scope_w) interpreter\gateway.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinActivation_UwS_ObjSpace_text_text_text_W_Root_W_Root_W_Root_int_W_Root object at 0x000002791c13af38> space = StdObjSpace scope_w = [W_BytesObject('\n int call1(int(__cdecl *cb)(int));\n int (*const call2)(int(__stdcall *cb)(i...ine __stdcall...t = %d\\n", result);\n return result;\n }\n '), None, None, None, ...] def _run(self, space, scope_w): > return self.behavior(space, space.text_w(scope_w[0]), space.text_w(scope_w[1]), space.text_w(scope_w[2]), scope_w[3], scope_w[4], scope_w[5], space.gateway_int_w(scope_w[6]), scope_w[7]) <3152-codegen d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\rpython\tool\sourcetools.py:200>:3: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace cdef = '\n int call1(int(__cdecl *cb)(int));\n int (*const call2)(int(__stdcall *cb)(int));\n ' module_name = '_CFFI_test_win32_calling_convention_0' source = '\n #ifndef _MSC_VER\n # define __stdcall /* nothing */\n #endif\n int c... cb(-i);\n //printf("result = %d\\n", result);\n return result;\n }\n ' w_includes = None, w_extra_source = None, w_min_version = None, packed = 0 w_extra_compile_args = None @unwrap_spec(cdef='text', module_name='text', source='text', packed=int) def prepare(space, cdef, module_name, source, w_includes=None, w_extra_source=None, w_min_version=None, packed=False, w_extra_compile_args=None): try: import cffi from cffi import FFI # <== the system one, which from cffi import recompiler # needs to be at least cffi 1.0.4 from cffi import ffiplatform except ImportError: pytest.skip("system cffi module not found or older than 1.0.0") if w_min_version is None: min_version = (1, 4, 0) else: min_version = tuple(space.unwrap(w_min_version)) if cffi.__version_info__ < min_version: pytest.skip("system cffi module needs to be at least %s, got %s" % ( min_version, cffi.__version_info__)) space.appexec([], """(): import _cffi_backend # force it to be initialized """) includes = [] if w_includes: includes += space.unpackiterable(w_includes) assert module_name.startswith('test_') module_name = '_CFFI_' + module_name rdir = udir.ensure('recompiler', dir=1) rdir.join('Python.h').write( '#include <stdio.h>\n' '#define PYPY_VERSION XX\n' '#define PyMODINIT_FUNC /*exported*/ void\n' ) path = module_name.replace('.', os.sep) if '.' in module_name: subrdir = rdir.join(module_name[:module_name.index('.')]) os.mkdir(str(subrdir)) else: subrdir = rdir c_file = str(rdir.join('%s.c' % path)) ffi = FFI() for include_ffi_object in includes: ffi.include(include_ffi_object._test_recompiler_source_ffi) ffi.cdef(cdef, packed=packed) ffi.set_source(module_name, source) ffi.emit_c_code(c_file) base_module_name = module_name.split('.')[-1] sources = [] if w_extra_source is not None: sources.append(space.str_w(w_extra_source)) kwargs = {} # GCC 14 promotes -Wincompatible-pointer-types from a warning to an error # by default, which breaks cffi's intentionally-mismatched field-check # probes (e.g. test_misdeclared_field_1). Keep it a warning so the module # compiles and cffi's runtime checks can run. extra = ['-Wno-error=incompatible-pointer-types'] if w_extra_compile_args is not None: extra = extra + space.unwrap(w_extra_compile_args) kwargs['extra_compile_args'] = extra ext = ffiplatform.get_extension(c_file, module_name, include_dirs=[str(rdir)], export_symbols=['_cffi_pypyinit_' + base_module_name], sources=sources, **kwargs) > ffiplatform.compile(str(rdir), ext) module\_cffi_backend\test\test_recompiler.py:86: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x0000027928b66160> compiler_verbose = 0, debug = None def compile(tmpdir, ext, compiler_verbose=0, debug=None): """Compile a C extension module using distutils.""" saved_environ = os.environ.copy() try: > outputfilename = _build(tmpdir, ext, compiler_verbose, debug) d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x0000027928b66160> compiler_verbose = 0, debug = 0 def _build(tmpdir, ext, compiler_verbose=0, debug=None): # XXX compact but horrible :-( from cffi._shimmed_dist_utils import Distribution, CompileError, LinkError, set_threshold, set_verbosity dist = Distribution({'ext_modules': [ext]}) dist.parse_config_files() options = dist.get_option_dict('build_ext') if debug is None: debug = sys.flags.debug options['debug'] = ('ffiplatform', debug) options['force'] = ('ffiplatform', True) options['build_lib'] = ('ffiplatform', tmpdir) options['build_temp'] = ('ffiplatform', tmpdir) # try: old_level = set_threshold(0) or 0 try: set_verbosity(compiler_verbose) dist.run_command('build_ext') cmd_obj = dist.get_command_obj('build_ext') [soname] = cmd_obj.get_outputs() finally: set_threshold(old_level) except (CompileError, LinkError) as e: > raise VerificationError('%s: %s' % (e.__class__.__name__, e)) E VerificationError: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2 d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:54: VerificationError ---------------------------- Captured stdout call ----------------------------- generating d:\systemtemp\pytest\usession-main-595\recompiler\_CFFI_test_win32_calling_convention_0.c ---------------------------- Captured stderr call ----------------------------- cl : Command line error D8021 : invalid numeric argument '/Wno-error=incompatible-pointer-types' ______________ AppTestRecompiler.test_win32_calling_convention_1 ______________ self = <CallInfo when='call' exception: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2> func = <function <lambda> at 0x000002792b269d30>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ..\_pytest\runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ..\_pytest\runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_win32_calling_convention_1'>, '...lticall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_win32_calling_convention_1'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ..\_pytest\vendored_packages\pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00000279153616a8> hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_win32_calling_convention_1'>, '...lticall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_win32_calling_convention_1'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ..\_pytest\vendored_packages\pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_win32_calling_convention_1'>, '...lticall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_win32_calling_convention_1'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ..\_pytest\vendored_packages\pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_win32_calling_convention_1'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791f7407a0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...nvention_1'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027926a274e0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027926a274e0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...nvention_1'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_win32_calling_convention_1'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791f740750> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...nvention_1'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027926a274a0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027926a274a0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...nvention_1'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_win32_calling_convention_1'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ..\_pytest\vendored_packages\pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_win32_calling_convention_1'> def pytest_runtest_call(item): try: > item.runtest() ..\_pytest\runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_win32_calling_convention_1'> def runtest(self): target = self.obj if self.config.option.runappdirect: return target() space = target.im_self.space filename = self._getdynfilename(target) func = app2interp_temp(target.im_func, filename=filename) w_instance = self.parent.w_instance > self.execute_appex(space, func, space, w_instance) tool\pytest\apptest.py:89: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_win32_calling_convention_1'>, space = StdObjSpace target = <function test_win32_calling_convention_1 at 0x000002792b269f10> args = (StdObjSpace, <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>) def execute_appex(self, space, target, *args): self.space = space try: > target(*args) tool\pytest\apptest.py:30: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) w_func = <Function test_win32_calling_convention_1> args = <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8> def appcaller(space, *args_w): if not isinstance(space, ObjSpace): raise TypeError("first argument must be a space instance.") # the last argument can be an Arguments w_func = self.wget(space, name) if not args_w: return space.call_function(w_func) else: args = args_w[-1] assert args is not None if not isinstance(args, Arguments): > return space.call_function(w_func, *args_w) interpreter\gateway.py:1227: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <Function test_win32_calling_convention_1> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) nargs = 1, Function = <class 'pypy.interpreter.function.Function'> Method = <class 'pypy.interpreter.function.Method'> def call_function(self, w_func, *args_w): nargs = len(args_w) # used for pruning funccall versions if not self.config.objspace.disable_call_speedhacks and nargs < 5: # start of hack for performance from pypy.interpreter.function import Function, Method if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: if nargs < 4: func = w_func.w_function if isinstance(func, Function): return func.funccall(w_inst, *args_w) elif args_w and ( self.abstract_isinstance_w(args_w[0], w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): > return w_func.funccall(*args_w) interpreter\baseobjspace.py:1210: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <Function test_win32_calling_convention_1> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) gateway = <module 'pypy.interpreter.gateway' from 'd:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\interpreter\\gateway.pyc'> PyCode = <class 'pypy.interpreter.pycode.PyCode'> code = <code object test_win32_calling_convention_1, file '[d:\pypy_stuff\buildbot64\...-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:1287]', line 1> def funccall(self, *args_w): # speed hack from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit nargs = len(args_w) fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, args_w[0]) elif nargs == 2: assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, args_w[0], args_w[1]) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) return code.fastcall_3(self.space, self, args_w[0], args_w[1], args_w[2]) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) return code.fastcall_4(self.space, self, args_w[0], args_w[1], args_w[2], args_w[3]) elif (nargs | PyCode.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) if nargs < 5: new_frame = self.space.createframe(code, self.w_func_globals, self) for i in funccallunrolling: if i < nargs: new_frame.locals_cells_stack_w[i] = args_w[i] > return new_frame.run() interpreter\function.py:118: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_win32_ca...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1287]', line 1> at line 7 def run(self): """Start this frame's execution.""" if self.getcode().co_flags & pycode.CO_GENERATOR: from pypy.interpreter.generator import GeneratorIterator return GeneratorIterator(self) else: > return self.execute_frame() interpreter\pyframe.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_win32_ca...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1287]', line 1> at line 7 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, executioncontext) except OperationError: raise except Exception as e: # general fall-back > raise self._convert_unexpected_exception(e) interpreter\pyframe.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_win32_ca...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1287]', line 1> at line 7 e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def _convert_unexpected_exception(self, e): from pypy.interpreter import error > operr = error.get_converted_unexpected_exception(self.space, e) interpreter\pyframe.py:943: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_win32_ca...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1287]', line 1> at line 7 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, > executioncontext) interpreter\pyframe.py:286: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_win32_ca...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1287]', line 1> at line 7 pycode = <code object test_win32_calling_convention_1, file '[d:\pypy_stuff\buildbot64\...-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:1287]', line 1> next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def dispatch(self, pycode, next_instr, ec): # For the sequel, force 'next_instr' to be unsigned for performance next_instr = r_uint(next_instr) co_code = pycode.co_code try: while True: > next_instr = self.handle_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:64: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_win32_ca...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1287]', line 1> at line 7 co_code = "|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00|\x01\x00\xc9\x01\x00|\x02\x0...\x01\x00\xc9\x01\x00|\x02\x00d\x08\x00\xca\x02\x00\x83\x01\x00d\t\x00k\x02\x00s\xe1\x00t\x03\x00\x82\x01\x00d\x00\x00S" next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def handle_bytecode(self, co_code, next_instr, ec): try: > next_instr = self.dispatch_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:71: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_win32_ca...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1287]', line 1> at line 7 co_code = "|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00|\x01\x00\xc9\x01\x00|\x02\x0...\x01\x00\xc9\x01\x00|\x02\x00d\x08\x00\xca\x02\x00\x83\x01\x00d\t\x00k\x02\x00s\xe1\x00t\x03\x00\x82\x01\x00d\x00\x00S" next_instr = 18L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> @jit.unroll_safe def dispatch_bytecode(self, co_code, next_instr, ec): while True: self.last_instr = intmask(next_instr) if jit.we_are_jitted(): if self.debugdata: ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) else: # Only reload next_instr from last_instr when something that # can modify it actually ran (trace function or action # dispatcher). In the common case (no trace, positive ticker) # next_instr is unchanged and the round-trip is skipped. _d = self.debugdata if ec.space.reverse_debugging or ( _d is not None and _d.w_f_trace is not None) or ( not we_are_translated() and 'bytecode_only_trace' in ec.__dict__): ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) actionflag = ec.space.actionflag if actionflag.decrement_ticker(TICK_COUNTER_STEP) < 0: actionflag.action_dispatcher(ec, self) next_instr = r_uint(self.last_instr) opcode = ord(co_code[next_instr]) next_instr += 1 if opcode >= HAVE_ARGUMENT: lo = ord(co_code[next_instr]) hi = ord(co_code[next_instr+1]) next_instr += 2 oparg = (hi * 256) | lo else: oparg = 0 # note: the structure of the code here is such that it makes # (after translation) a big "if/elif" chain, which is then # turned into a switch(). while opcode == opcodedesc.EXTENDED_ARG.index: opcode = ord(co_code[next_instr]) if opcode < HAVE_ARGUMENT: raise BytecodeCorruption lo = ord(co_code[next_instr+1]) hi = ord(co_code[next_instr+2]) next_instr += 3 oparg = (oparg * 65536) | (hi * 256) | lo if opcode == opcodedesc.RETURN_VALUE.index: if not self.blockstack_non_empty(): self.frame_finished_execution = True # for generators raise Return w_returnvalue = self.popvalue() block = self.unrollstack(SReturnValue.kind) if block is None: self.pushvalue(w_returnvalue) raise Return else: unroller = SReturnValue(w_returnvalue) next_instr = block.handle(self, unroller) return next_instr # now inside a 'finally' block elif opcode == opcodedesc.END_FINALLY.index: unroller = self.end_finally() if isinstance(unroller, SuspendedUnroller): # go on unrolling the stack block = self.unrollstack(unroller.kind) if block is None: w_result = unroller.nomoreblocks() self.pushvalue(w_result) raise Return else: next_instr = block.handle(self, unroller) return next_instr elif opcode == opcodedesc.JUMP_ABSOLUTE.index: return self.jump_absolute(oparg, ec) elif opcode == opcodedesc.BREAK_LOOP.index: next_instr = self.BREAK_LOOP(oparg, next_instr) elif opcode == opcodedesc.CONTINUE_LOOP.index: return self.CONTINUE_LOOP(oparg, next_instr) elif opcode == opcodedesc.FOR_ITER.index: next_instr = self.FOR_ITER(oparg, next_instr) elif opcode == opcodedesc.JUMP_FORWARD.index: next_instr = self.JUMP_FORWARD(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_FALSE_OR_POP.index: next_instr = self.JUMP_IF_FALSE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_NOT_DEBUG.index: next_instr = self.JUMP_IF_NOT_DEBUG(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_TRUE_OR_POP.index: next_instr = self.JUMP_IF_TRUE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_FALSE.index: next_instr = self.POP_JUMP_IF_FALSE(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_TRUE.index: next_instr = self.POP_JUMP_IF_TRUE(oparg, next_instr) elif opcode == opcodedesc.BINARY_ADD.index: self.BINARY_ADD(oparg, next_instr) elif opcode == opcodedesc.BINARY_AND.index: self.BINARY_AND(oparg, next_instr) elif opcode == opcodedesc.BINARY_DIVIDE.index: self.BINARY_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_FLOOR_DIVIDE.index: self.BINARY_FLOOR_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_LSHIFT.index: self.BINARY_LSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_MODULO.index: self.BINARY_MODULO(oparg, next_instr) elif opcode == opcodedesc.BINARY_MULTIPLY.index: self.BINARY_MULTIPLY(oparg, next_instr) elif opcode == opcodedesc.BINARY_OR.index: self.BINARY_OR(oparg, next_instr) elif opcode == opcodedesc.BINARY_POWER.index: self.BINARY_POWER(oparg, next_instr) elif opcode == opcodedesc.BINARY_RSHIFT.index: self.BINARY_RSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBSCR.index: self.BINARY_SUBSCR(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBTRACT.index: self.BINARY_SUBTRACT(oparg, next_instr) elif opcode == opcodedesc.BINARY_TRUE_DIVIDE.index: self.BINARY_TRUE_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_XOR.index: self.BINARY_XOR(oparg, next_instr) elif opcode == opcodedesc.BUILD_CLASS.index: self.BUILD_CLASS(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST.index: self.BUILD_LIST(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST_FROM_ARG.index: self.BUILD_LIST_FROM_ARG(oparg, next_instr) elif opcode == opcodedesc.BUILD_MAP.index: self.BUILD_MAP(oparg, next_instr) elif opcode == opcodedesc.BUILD_SET.index: self.BUILD_SET(oparg, next_instr) elif opcode == opcodedesc.BUILD_SLICE.index: self.BUILD_SLICE(oparg, next_instr) elif opcode == opcodedesc.BUILD_TUPLE.index: self.BUILD_TUPLE(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION.index: self.CALL_FUNCTION(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_KW.index: self.CALL_FUNCTION_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR.index: self.CALL_FUNCTION_VAR(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR_KW.index: self.CALL_FUNCTION_VAR_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_METHOD.index: > self.CALL_METHOD(oparg, next_instr) interpreter\pyopcode.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ f = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_win32_ca...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1287]', line 1> at line 7 oparg = 3, ignored = (18L,), n_args = 3, n_kwargs = 0, w_self = None @jit.unroll_safe def CALL_METHOD(f, oparg, *ignored): # opargs contains the arg, and kwarg count, excluding the implicit 'self' n_args = oparg & 0xff n_kwargs = (oparg >> 8) & 0xff w_self = f.peekvalue_maybe_none(n_args + (2 * n_kwargs)) n = n_args + (w_self is not None) if not n_kwargs: w_callable = f.peekvalue(n_args + (2 * n_kwargs) + 1) w_result = f.space.call_valuestack( > w_callable, n, f, methodcall=w_self is not None, dropvalues=n_args + 2) objspace\std\callmethod.py:96: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_win32_ca...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1287]', line 1> at line 7 dropvalues = 5, methodcall = False def call_valuestack(self, w_func, nargs, frame, dropvalues, methodcall=False): # methodcall is only used for better error messages in argument.py from pypy.interpreter.function import Function, Method, is_builtin_code if frame.get_is_being_profiled() and is_builtin_code(w_func): # XXX: this code is copied&pasted :-( from the slow path below # call_valuestack(). args = frame.make_arguments(nargs) frame.dropvalues(dropvalues) return self.call_args_and_c_profile(frame, w_func, args) if not self.config.objspace.disable_call_speedhacks: # start of hack for performance if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: w_func = w_func.w_function # reuse callable stack place for w_inst frame.settopvalue(w_inst, nargs) nargs += 1 methodcall = True elif nargs > 0 and ( self.abstract_isinstance_w(frame.peekvalue(nargs-1), # :-( w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): return w_func.funccall_valuestack( > nargs, frame, methodcall=methodcall, dropvalues=dropvalues) interpreter\baseobjspace.py:1243: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_win32_ca...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1287]', line 1> at line 7 dropvalues = 5, methodcall = False def funccall_valuestack(self, nargs, frame, dropvalues, methodcall=False): # speed hack # methodcall is only for better error messages from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit # if (jit.we_are_jitted() and code is self.space._code_of_sys_exc_info and nargs == 0): frame.dropvalues(dropvalues) from pypy.module.sys.vm import exc_info_direct return exc_info_direct(self.space, frame) # fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: f_0 = frame.peekvalue(0) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, f_0) elif nargs == 2: f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, f_1, f_0) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) frame.dropvalues(dropvalues) return code.fastcall_3(self.space, self, f_2, f_1, f_0) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) f_3 = frame.peekvalue(3) frame.dropvalues(dropvalues) return code.fastcall_4(self.space, self, f_3, f_2, f_1, f_0) elif (nargs | Code.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) return self._flat_pycall(code, nargs, frame, dropvalues) elif fast_natural_arity & Code.FLATPYCALL: natural_arity = fast_natural_arity & 0xff if natural_arity > nargs >= natural_arity - len(self.defs_w): assert isinstance(code, PyCode) return self._flat_pycall_defaults(code, nargs, frame, natural_arity - nargs, dropvalues) elif fast_natural_arity == Code.PASSTHROUGHARGS1 and nargs >= 1: assert isinstance(code, gateway.BuiltinCodePassThroughArguments1) w_obj = frame.peekvalue(nargs-1) args = frame.make_arguments(nargs-1) frame.dropvalues(dropvalues) return code.funcrun_obj(self, w_obj, args) args = frame.make_arguments(nargs, methodcall=methodcall) frame.dropvalues(dropvalues) > return self.call_args(args) interpreter\function.py:190: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('\n int __cdecl call1(int(__cdecl *cb)...= %d\\n", result);\n return result;\n }\n ')]) def call_args(self, args): # delegate activation to code > w_res = self.getcode().funcrun(self, args) interpreter\function.py:68: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('\n int __cdecl call1(int(__cdecl *cb)...= %d\\n", result);\n return result;\n }\n ')]) def funcrun(self, func, args): > return BuiltinCode.funcrun_obj(self, func, None, args) interpreter\gateway.py:781: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('\n int __cdecl call1(int(__cdecl *cb)...= %d\\n", result);\n return result;\n }\n ')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: w_result = activation._run(space, scope_w) except DescrMismatch: if w_obj is not None: args = args.prepend(w_obj) return self._type_unwrap_mismatch(space, args) except Exception as e: > self.handle_exception(space, e) interpreter\gateway.py:795: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> space = StdObjSpace e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def handle_exception(self, space, e): try: if not we_are_translated(): raise raise e except OperationError: raise except Exception as e: # general fall-back from pypy.interpreter import error > raise error.get_converted_unexpected_exception(space, e) interpreter\gateway.py:819: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('\n int __cdecl call1(int(__cdecl *cb)...= %d\\n", result);\n return result;\n }\n ')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: > w_result = activation._run(space, scope_w) interpreter\gateway.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinActivation_UwS_ObjSpace_text_text_text_W_Root_W_Root_W_Root_int_W_Root object at 0x000002791c13af38> space = StdObjSpace scope_w = [W_BytesObject('\n int __cdecl call1(int(__cdecl *cb)(int));\n ...l *const cb1)(int);\n i...ine __cdecl\n...t = %d\\n", result);\n return result;\n }\n '), None, None, None, ...] def _run(self, space, scope_w): > return self.behavior(space, space.text_w(scope_w[0]), space.text_w(scope_w[1]), space.text_w(scope_w[2]), scope_w[3], scope_w[4], scope_w[5], space.gateway_int_w(scope_w[6]), scope_w[7]) <3152-codegen d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\rpython\tool\sourcetools.py:200>:3: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace cdef = '\n int __cdecl call1(int(__cdecl *cb)(int));\n int __stdcall call2(int(__stdcall *cb)(int));\n int (__cdecl *const cb1)(int);\n int (__stdcall *const cb2)(int);\n ' module_name = '_CFFI_test_win32_calling_convention_1' source = '\n #ifndef _MSC_VER\n # define __cdecl\n # define __stdcall\n #endif\n ... cb(-i);\n //printf("result = %d\\n", result);\n return result;\n }\n ' w_includes = None, w_extra_source = None, w_min_version = None, packed = 0 w_extra_compile_args = None @unwrap_spec(cdef='text', module_name='text', source='text', packed=int) def prepare(space, cdef, module_name, source, w_includes=None, w_extra_source=None, w_min_version=None, packed=False, w_extra_compile_args=None): try: import cffi from cffi import FFI # <== the system one, which from cffi import recompiler # needs to be at least cffi 1.0.4 from cffi import ffiplatform except ImportError: pytest.skip("system cffi module not found or older than 1.0.0") if w_min_version is None: min_version = (1, 4, 0) else: min_version = tuple(space.unwrap(w_min_version)) if cffi.__version_info__ < min_version: pytest.skip("system cffi module needs to be at least %s, got %s" % ( min_version, cffi.__version_info__)) space.appexec([], """(): import _cffi_backend # force it to be initialized """) includes = [] if w_includes: includes += space.unpackiterable(w_includes) assert module_name.startswith('test_') module_name = '_CFFI_' + module_name rdir = udir.ensure('recompiler', dir=1) rdir.join('Python.h').write( '#include <stdio.h>\n' '#define PYPY_VERSION XX\n' '#define PyMODINIT_FUNC /*exported*/ void\n' ) path = module_name.replace('.', os.sep) if '.' in module_name: subrdir = rdir.join(module_name[:module_name.index('.')]) os.mkdir(str(subrdir)) else: subrdir = rdir c_file = str(rdir.join('%s.c' % path)) ffi = FFI() for include_ffi_object in includes: ffi.include(include_ffi_object._test_recompiler_source_ffi) ffi.cdef(cdef, packed=packed) ffi.set_source(module_name, source) ffi.emit_c_code(c_file) base_module_name = module_name.split('.')[-1] sources = [] if w_extra_source is not None: sources.append(space.str_w(w_extra_source)) kwargs = {} # GCC 14 promotes -Wincompatible-pointer-types from a warning to an error # by default, which breaks cffi's intentionally-mismatched field-check # probes (e.g. test_misdeclared_field_1). Keep it a warning so the module # compiles and cffi's runtime checks can run. extra = ['-Wno-error=incompatible-pointer-types'] if w_extra_compile_args is not None: extra = extra + space.unwrap(w_extra_compile_args) kwargs['extra_compile_args'] = extra ext = ffiplatform.get_extension(c_file, module_name, include_dirs=[str(rdir)], export_symbols=['_cffi_pypyinit_' + base_module_name], sources=sources, **kwargs) > ffiplatform.compile(str(rdir), ext) module\_cffi_backend\test\test_recompiler.py:86: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x0000027926a856a0> compiler_verbose = 0, debug = None def compile(tmpdir, ext, compiler_verbose=0, debug=None): """Compile a C extension module using distutils.""" saved_environ = os.environ.copy() try: > outputfilename = _build(tmpdir, ext, compiler_verbose, debug) d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x0000027926a856a0> compiler_verbose = 0, debug = 0 def _build(tmpdir, ext, compiler_verbose=0, debug=None): # XXX compact but horrible :-( from cffi._shimmed_dist_utils import Distribution, CompileError, LinkError, set_threshold, set_verbosity dist = Distribution({'ext_modules': [ext]}) dist.parse_config_files() options = dist.get_option_dict('build_ext') if debug is None: debug = sys.flags.debug options['debug'] = ('ffiplatform', debug) options['force'] = ('ffiplatform', True) options['build_lib'] = ('ffiplatform', tmpdir) options['build_temp'] = ('ffiplatform', tmpdir) # try: old_level = set_threshold(0) or 0 try: set_verbosity(compiler_verbose) dist.run_command('build_ext') cmd_obj = dist.get_command_obj('build_ext') [soname] = cmd_obj.get_outputs() finally: set_threshold(old_level) except (CompileError, LinkError) as e: > raise VerificationError('%s: %s' % (e.__class__.__name__, e)) E VerificationError: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2 d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:54: VerificationError ---------------------------- Captured stdout call ----------------------------- generating d:\systemtemp\pytest\usession-main-595\recompiler\_CFFI_test_win32_calling_convention_1.c ---------------------------- Captured stderr call ----------------------------- cl : Command line error D8021 : invalid numeric argument '/Wno-error=incompatible-pointer-types' ______________ AppTestRecompiler.test_win32_calling_convention_2 ______________ self = <CallInfo when='call' exception: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2> func = <function <lambda> at 0x00000279270c55b0>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ..\_pytest\runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ..\_pytest\runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_win32_calling_convention_2'>, '...lticall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_win32_calling_convention_2'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ..\_pytest\vendored_packages\pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00000279153616a8> hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_win32_calling_convention_2'>, '...lticall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_win32_calling_convention_2'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ..\_pytest\vendored_packages\pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_win32_calling_convention_2'>, '...lticall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_win32_calling_convention_2'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ..\_pytest\vendored_packages\pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_win32_calling_convention_2'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791fb3bb28> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...nvention_2'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792d02e1a0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792d02e1a0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...nvention_2'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_win32_calling_convention_2'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791fb3b600> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...nvention_2'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792d02e160> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792d02e160> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...nvention_2'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_win32_calling_convention_2'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ..\_pytest\vendored_packages\pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_win32_calling_convention_2'> def pytest_runtest_call(item): try: > item.runtest() ..\_pytest\runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_win32_calling_convention_2'> def runtest(self): target = self.obj if self.config.option.runappdirect: return target() space = target.im_self.space filename = self._getdynfilename(target) func = app2interp_temp(target.im_func, filename=filename) w_instance = self.parent.w_instance > self.execute_appex(space, func, space, w_instance) tool\pytest\apptest.py:89: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_win32_calling_convention_2'>, space = StdObjSpace target = <function test_win32_calling_convention_2 at 0x00000279270c5628> args = (StdObjSpace, <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>) def execute_appex(self, space, target, *args): self.space = space try: > target(*args) tool\pytest\apptest.py:30: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) w_func = <Function test_win32_calling_convention_2> args = <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8> def appcaller(space, *args_w): if not isinstance(space, ObjSpace): raise TypeError("first argument must be a space instance.") # the last argument can be an Arguments w_func = self.wget(space, name) if not args_w: return space.call_function(w_func) else: args = args_w[-1] assert args is not None if not isinstance(args, Arguments): > return space.call_function(w_func, *args_w) interpreter\gateway.py:1227: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <Function test_win32_calling_convention_2> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) nargs = 1, Function = <class 'pypy.interpreter.function.Function'> Method = <class 'pypy.interpreter.function.Method'> def call_function(self, w_func, *args_w): nargs = len(args_w) # used for pruning funccall versions if not self.config.objspace.disable_call_speedhacks and nargs < 5: # start of hack for performance from pypy.interpreter.function import Function, Method if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: if nargs < 4: func = w_func.w_function if isinstance(func, Function): return func.funccall(w_inst, *args_w) elif args_w and ( self.abstract_isinstance_w(args_w[0], w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): > return w_func.funccall(*args_w) interpreter\baseobjspace.py:1210: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <Function test_win32_calling_convention_2> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) gateway = <module 'pypy.interpreter.gateway' from 'd:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\interpreter\\gateway.pyc'> PyCode = <class 'pypy.interpreter.pycode.PyCode'> code = <code object test_win32_calling_convention_2, file '[d:\pypy_stuff\buildbot64\...-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:1330]', line 1> def funccall(self, *args_w): # speed hack from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit nargs = len(args_w) fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, args_w[0]) elif nargs == 2: assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, args_w[0], args_w[1]) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) return code.fastcall_3(self.space, self, args_w[0], args_w[1], args_w[2]) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) return code.fastcall_4(self.space, self, args_w[0], args_w[1], args_w[2], args_w[3]) elif (nargs | PyCode.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) if nargs < 5: new_frame = self.space.createframe(code, self.w_func_globals, self) for i in funccallunrolling: if i < nargs: new_frame.locals_cells_stack_w[i] = args_w[i] > return new_frame.run() interpreter\function.py:118: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_win32_ca...ld\pypy\module\_cffi_backend\test\test_recompiler.py:1330]', line 1> at line 12 def run(self): """Start this frame's execution.""" if self.getcode().co_flags & pycode.CO_GENERATOR: from pypy.interpreter.generator import GeneratorIterator return GeneratorIterator(self) else: > return self.execute_frame() interpreter\pyframe.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_win32_ca...ld\pypy\module\_cffi_backend\test\test_recompiler.py:1330]', line 1> at line 12 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, executioncontext) except OperationError: raise except Exception as e: # general fall-back > raise self._convert_unexpected_exception(e) interpreter\pyframe.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_win32_ca...ld\pypy\module\_cffi_backend\test\test_recompiler.py:1330]', line 1> at line 12 e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def _convert_unexpected_exception(self, e): from pypy.interpreter import error > operr = error.get_converted_unexpected_exception(self.space, e) interpreter\pyframe.py:943: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_win32_ca...ld\pypy\module\_cffi_backend\test\test_recompiler.py:1330]', line 1> at line 12 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, > executioncontext) interpreter\pyframe.py:286: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_win32_ca...ld\pypy\module\_cffi_backend\test\test_recompiler.py:1330]', line 1> at line 12 pycode = <code object test_win32_calling_convention_2, file '[d:\pypy_stuff\buildbot64\...-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:1330]', line 1> next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def dispatch(self, pycode, next_instr, ec): # For the sequel, force 'next_instr' to be unsigned for performance next_instr = r_uint(next_instr) co_code = pycode.co_code try: while True: > next_instr = self.handle_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:64: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_win32_ca...ld\pypy\module\_cffi_backend\test\test_recompiler.py:1330]', line 1> at line 12 co_code = "d\x01\x00d\x00\x00l\x00\x00}\x01\x00|\x00\x00\xc9\x01\x00d\x02\x00d\x03\x00d\x04\x00\xca\x03\x00\\\x02\x00}\x02\x00}\...0|\x02\x00\xc9\x02\x00|\x03\x00d\t\x00\xca\x02\x00\x83\x01\x00d\x0c\x00k\x02\x00s\x84\x01t\t\x00\x82\x01\x00d\x00\x00S" next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def handle_bytecode(self, co_code, next_instr, ec): try: > next_instr = self.dispatch_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:71: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_win32_ca...ld\pypy\module\_cffi_backend\test\test_recompiler.py:1330]', line 1> at line 12 co_code = "d\x01\x00d\x00\x00l\x00\x00}\x01\x00|\x00\x00\xc9\x01\x00d\x02\x00d\x03\x00d\x04\x00\xca\x03\x00\\\x02\x00}\x02\x00}\...0|\x02\x00\xc9\x02\x00|\x03\x00d\t\x00\xca\x02\x00\x83\x01\x00d\x0c\x00k\x02\x00s\x84\x01t\t\x00\x82\x01\x00d\x00\x00S" next_instr = 30L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> @jit.unroll_safe def dispatch_bytecode(self, co_code, next_instr, ec): while True: self.last_instr = intmask(next_instr) if jit.we_are_jitted(): if self.debugdata: ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) else: # Only reload next_instr from last_instr when something that # can modify it actually ran (trace function or action # dispatcher). In the common case (no trace, positive ticker) # next_instr is unchanged and the round-trip is skipped. _d = self.debugdata if ec.space.reverse_debugging or ( _d is not None and _d.w_f_trace is not None) or ( not we_are_translated() and 'bytecode_only_trace' in ec.__dict__): ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) actionflag = ec.space.actionflag if actionflag.decrement_ticker(TICK_COUNTER_STEP) < 0: actionflag.action_dispatcher(ec, self) next_instr = r_uint(self.last_instr) opcode = ord(co_code[next_instr]) next_instr += 1 if opcode >= HAVE_ARGUMENT: lo = ord(co_code[next_instr]) hi = ord(co_code[next_instr+1]) next_instr += 2 oparg = (hi * 256) | lo else: oparg = 0 # note: the structure of the code here is such that it makes # (after translation) a big "if/elif" chain, which is then # turned into a switch(). while opcode == opcodedesc.EXTENDED_ARG.index: opcode = ord(co_code[next_instr]) if opcode < HAVE_ARGUMENT: raise BytecodeCorruption lo = ord(co_code[next_instr+1]) hi = ord(co_code[next_instr+2]) next_instr += 3 oparg = (oparg * 65536) | (hi * 256) | lo if opcode == opcodedesc.RETURN_VALUE.index: if not self.blockstack_non_empty(): self.frame_finished_execution = True # for generators raise Return w_returnvalue = self.popvalue() block = self.unrollstack(SReturnValue.kind) if block is None: self.pushvalue(w_returnvalue) raise Return else: unroller = SReturnValue(w_returnvalue) next_instr = block.handle(self, unroller) return next_instr # now inside a 'finally' block elif opcode == opcodedesc.END_FINALLY.index: unroller = self.end_finally() if isinstance(unroller, SuspendedUnroller): # go on unrolling the stack block = self.unrollstack(unroller.kind) if block is None: w_result = unroller.nomoreblocks() self.pushvalue(w_result) raise Return else: next_instr = block.handle(self, unroller) return next_instr elif opcode == opcodedesc.JUMP_ABSOLUTE.index: return self.jump_absolute(oparg, ec) elif opcode == opcodedesc.BREAK_LOOP.index: next_instr = self.BREAK_LOOP(oparg, next_instr) elif opcode == opcodedesc.CONTINUE_LOOP.index: return self.CONTINUE_LOOP(oparg, next_instr) elif opcode == opcodedesc.FOR_ITER.index: next_instr = self.FOR_ITER(oparg, next_instr) elif opcode == opcodedesc.JUMP_FORWARD.index: next_instr = self.JUMP_FORWARD(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_FALSE_OR_POP.index: next_instr = self.JUMP_IF_FALSE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_NOT_DEBUG.index: next_instr = self.JUMP_IF_NOT_DEBUG(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_TRUE_OR_POP.index: next_instr = self.JUMP_IF_TRUE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_FALSE.index: next_instr = self.POP_JUMP_IF_FALSE(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_TRUE.index: next_instr = self.POP_JUMP_IF_TRUE(oparg, next_instr) elif opcode == opcodedesc.BINARY_ADD.index: self.BINARY_ADD(oparg, next_instr) elif opcode == opcodedesc.BINARY_AND.index: self.BINARY_AND(oparg, next_instr) elif opcode == opcodedesc.BINARY_DIVIDE.index: self.BINARY_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_FLOOR_DIVIDE.index: self.BINARY_FLOOR_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_LSHIFT.index: self.BINARY_LSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_MODULO.index: self.BINARY_MODULO(oparg, next_instr) elif opcode == opcodedesc.BINARY_MULTIPLY.index: self.BINARY_MULTIPLY(oparg, next_instr) elif opcode == opcodedesc.BINARY_OR.index: self.BINARY_OR(oparg, next_instr) elif opcode == opcodedesc.BINARY_POWER.index: self.BINARY_POWER(oparg, next_instr) elif opcode == opcodedesc.BINARY_RSHIFT.index: self.BINARY_RSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBSCR.index: self.BINARY_SUBSCR(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBTRACT.index: self.BINARY_SUBTRACT(oparg, next_instr) elif opcode == opcodedesc.BINARY_TRUE_DIVIDE.index: self.BINARY_TRUE_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_XOR.index: self.BINARY_XOR(oparg, next_instr) elif opcode == opcodedesc.BUILD_CLASS.index: self.BUILD_CLASS(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST.index: self.BUILD_LIST(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST_FROM_ARG.index: self.BUILD_LIST_FROM_ARG(oparg, next_instr) elif opcode == opcodedesc.BUILD_MAP.index: self.BUILD_MAP(oparg, next_instr) elif opcode == opcodedesc.BUILD_SET.index: self.BUILD_SET(oparg, next_instr) elif opcode == opcodedesc.BUILD_SLICE.index: self.BUILD_SLICE(oparg, next_instr) elif opcode == opcodedesc.BUILD_TUPLE.index: self.BUILD_TUPLE(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION.index: self.CALL_FUNCTION(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_KW.index: self.CALL_FUNCTION_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR.index: self.CALL_FUNCTION_VAR(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR_KW.index: self.CALL_FUNCTION_VAR_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_METHOD.index: > self.CALL_METHOD(oparg, next_instr) interpreter\pyopcode.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ f = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_win32_ca...ld\pypy\module\_cffi_backend\test\test_recompiler.py:1330]', line 1> at line 12 oparg = 3, ignored = (30L,), n_args = 3, n_kwargs = 0, w_self = None @jit.unroll_safe def CALL_METHOD(f, oparg, *ignored): # opargs contains the arg, and kwarg count, excluding the implicit 'self' n_args = oparg & 0xff n_kwargs = (oparg >> 8) & 0xff w_self = f.peekvalue_maybe_none(n_args + (2 * n_kwargs)) n = n_args + (w_self is not None) if not n_kwargs: w_callable = f.peekvalue(n_args + (2 * n_kwargs) + 1) w_result = f.space.call_valuestack( > w_callable, n, f, methodcall=w_self is not None, dropvalues=n_args + 2) objspace\std\callmethod.py:96: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_win32_ca...ld\pypy\module\_cffi_backend\test\test_recompiler.py:1330]', line 1> at line 12 dropvalues = 5, methodcall = False def call_valuestack(self, w_func, nargs, frame, dropvalues, methodcall=False): # methodcall is only used for better error messages in argument.py from pypy.interpreter.function import Function, Method, is_builtin_code if frame.get_is_being_profiled() and is_builtin_code(w_func): # XXX: this code is copied&pasted :-( from the slow path below # call_valuestack(). args = frame.make_arguments(nargs) frame.dropvalues(dropvalues) return self.call_args_and_c_profile(frame, w_func, args) if not self.config.objspace.disable_call_speedhacks: # start of hack for performance if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: w_func = w_func.w_function # reuse callable stack place for w_inst frame.settopvalue(w_inst, nargs) nargs += 1 methodcall = True elif nargs > 0 and ( self.abstract_isinstance_w(frame.peekvalue(nargs-1), # :-( w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): return w_func.funccall_valuestack( > nargs, frame, methodcall=methodcall, dropvalues=dropvalues) interpreter\baseobjspace.py:1243: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_win32_ca...ld\pypy\module\_cffi_backend\test\test_recompiler.py:1330]', line 1> at line 12 dropvalues = 5, methodcall = False def funccall_valuestack(self, nargs, frame, dropvalues, methodcall=False): # speed hack # methodcall is only for better error messages from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit # if (jit.we_are_jitted() and code is self.space._code_of_sys_exc_info and nargs == 0): frame.dropvalues(dropvalues) from pypy.module.sys.vm import exc_info_direct return exc_info_direct(self.space, frame) # fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: f_0 = frame.peekvalue(0) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, f_0) elif nargs == 2: f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, f_1, f_0) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) frame.dropvalues(dropvalues) return code.fastcall_3(self.space, self, f_2, f_1, f_0) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) f_3 = frame.peekvalue(3) frame.dropvalues(dropvalues) return code.fastcall_4(self.space, self, f_3, f_2, f_1, f_0) elif (nargs | Code.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) return self._flat_pycall(code, nargs, frame, dropvalues) elif fast_natural_arity & Code.FLATPYCALL: natural_arity = fast_natural_arity & 0xff if natural_arity > nargs >= natural_arity - len(self.defs_w): assert isinstance(code, PyCode) return self._flat_pycall_defaults(code, nargs, frame, natural_arity - nargs, dropvalues) elif fast_natural_arity == Code.PASSTHROUGHARGS1 and nargs >= 1: assert isinstance(code, gateway.BuiltinCodePassThroughArguments1) w_obj = frame.peekvalue(nargs-1) args = frame.make_arguments(nargs-1) frame.dropvalues(dropvalues) return code.funcrun_obj(self, w_obj, args) args = frame.make_arguments(nargs, methodcall=methodcall) frame.dropvalues(dropvalues) > return self.call_args(args) interpreter\function.py:190: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('\n int __stdcall call1(int(__cdecl *cb)... x * 2; }\n int __stdcall cb2(int x) { return x * 3; }\n ')]) def call_args(self, args): # delegate activation to code > w_res = self.getcode().funcrun(self, args) interpreter\function.py:68: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('\n int __stdcall call1(int(__cdecl *cb)... x * 2; }\n int __stdcall cb2(int x) { return x * 3; }\n ')]) def funcrun(self, func, args): > return BuiltinCode.funcrun_obj(self, func, None, args) interpreter\gateway.py:781: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('\n int __stdcall call1(int(__cdecl *cb)... x * 2; }\n int __stdcall cb2(int x) { return x * 3; }\n ')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: w_result = activation._run(space, scope_w) except DescrMismatch: if w_obj is not None: args = args.prepend(w_obj) return self._type_unwrap_mismatch(space, args) except Exception as e: > self.handle_exception(space, e) interpreter\gateway.py:795: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> space = StdObjSpace e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def handle_exception(self, space, e): try: if not we_are_translated(): raise raise e except OperationError: raise except Exception as e: # general fall-back from pypy.interpreter import error > raise error.get_converted_unexpected_exception(space, e) interpreter\gateway.py:819: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('\n int __stdcall call1(int(__cdecl *cb)... x * 2; }\n int __stdcall cb2(int x) { return x * 3; }\n ')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: > w_result = activation._run(space, scope_w) interpreter\gateway.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinActivation_UwS_ObjSpace_text_text_text_W_Root_W_Root_W_Root_int_W_Root object at 0x000002791c13af38> space = StdObjSpace scope_w = [W_BytesObject('\n int __stdcall call1(int(__cdecl *cb)(int));\n ...l *const cb1)(int);\n i...ine __cdecl\n...rn x * 2; }\n int __stdcall cb2(int x) { return x * 3; }\n '), None, None, None, ...] def _run(self, space, scope_w): > return self.behavior(space, space.text_w(scope_w[0]), space.text_w(scope_w[1]), space.text_w(scope_w[2]), scope_w[3], scope_w[4], scope_w[5], space.gateway_int_w(scope_w[6]), scope_w[7]) <3152-codegen d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\rpython\tool\sourcetools.py:200>:3: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace cdef = '\n int __stdcall call1(int(__cdecl *cb)(int));\n int __cdecl call2(int(__stdcall *cb)(int));\n int (__cdecl *const cb1)(int);\n int (__stdcall *const cb2)(int);\n ' module_name = '_CFFI_test_win32_calling_convention_2' source = '\n #ifndef _MSC_VER\n # define __cdecl\n # define __stdcall\n #endif\n ... int __cdecl cb1(int x) { return x * 2; }\n int __stdcall cb2(int x) { return x * 3; }\n ' w_includes = None, w_extra_source = None, w_min_version = None, packed = 0 w_extra_compile_args = None @unwrap_spec(cdef='text', module_name='text', source='text', packed=int) def prepare(space, cdef, module_name, source, w_includes=None, w_extra_source=None, w_min_version=None, packed=False, w_extra_compile_args=None): try: import cffi from cffi import FFI # <== the system one, which from cffi import recompiler # needs to be at least cffi 1.0.4 from cffi import ffiplatform except ImportError: pytest.skip("system cffi module not found or older than 1.0.0") if w_min_version is None: min_version = (1, 4, 0) else: min_version = tuple(space.unwrap(w_min_version)) if cffi.__version_info__ < min_version: pytest.skip("system cffi module needs to be at least %s, got %s" % ( min_version, cffi.__version_info__)) space.appexec([], """(): import _cffi_backend # force it to be initialized """) includes = [] if w_includes: includes += space.unpackiterable(w_includes) assert module_name.startswith('test_') module_name = '_CFFI_' + module_name rdir = udir.ensure('recompiler', dir=1) rdir.join('Python.h').write( '#include <stdio.h>\n' '#define PYPY_VERSION XX\n' '#define PyMODINIT_FUNC /*exported*/ void\n' ) path = module_name.replace('.', os.sep) if '.' in module_name: subrdir = rdir.join(module_name[:module_name.index('.')]) os.mkdir(str(subrdir)) else: subrdir = rdir c_file = str(rdir.join('%s.c' % path)) ffi = FFI() for include_ffi_object in includes: ffi.include(include_ffi_object._test_recompiler_source_ffi) ffi.cdef(cdef, packed=packed) ffi.set_source(module_name, source) ffi.emit_c_code(c_file) base_module_name = module_name.split('.')[-1] sources = [] if w_extra_source is not None: sources.append(space.str_w(w_extra_source)) kwargs = {} # GCC 14 promotes -Wincompatible-pointer-types from a warning to an error # by default, which breaks cffi's intentionally-mismatched field-check # probes (e.g. test_misdeclared_field_1). Keep it a warning so the module # compiles and cffi's runtime checks can run. extra = ['-Wno-error=incompatible-pointer-types'] if w_extra_compile_args is not None: extra = extra + space.unwrap(w_extra_compile_args) kwargs['extra_compile_args'] = extra ext = ffiplatform.get_extension(c_file, module_name, include_dirs=[str(rdir)], export_symbols=['_cffi_pypyinit_' + base_module_name], sources=sources, **kwargs) > ffiplatform.compile(str(rdir), ext) module\_cffi_backend\test\test_recompiler.py:86: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x000002792d02fde0> compiler_verbose = 0, debug = None def compile(tmpdir, ext, compiler_verbose=0, debug=None): """Compile a C extension module using distutils.""" saved_environ = os.environ.copy() try: > outputfilename = _build(tmpdir, ext, compiler_verbose, debug) d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x000002792d02fde0> compiler_verbose = 0, debug = 0 def _build(tmpdir, ext, compiler_verbose=0, debug=None): # XXX compact but horrible :-( from cffi._shimmed_dist_utils import Distribution, CompileError, LinkError, set_threshold, set_verbosity dist = Distribution({'ext_modules': [ext]}) dist.parse_config_files() options = dist.get_option_dict('build_ext') if debug is None: debug = sys.flags.debug options['debug'] = ('ffiplatform', debug) options['force'] = ('ffiplatform', True) options['build_lib'] = ('ffiplatform', tmpdir) options['build_temp'] = ('ffiplatform', tmpdir) # try: old_level = set_threshold(0) or 0 try: set_verbosity(compiler_verbose) dist.run_command('build_ext') cmd_obj = dist.get_command_obj('build_ext') [soname] = cmd_obj.get_outputs() finally: set_threshold(old_level) except (CompileError, LinkError) as e: > raise VerificationError('%s: %s' % (e.__class__.__name__, e)) E VerificationError: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2 d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:54: VerificationError ---------------------------- Captured stdout call ----------------------------- generating d:\systemtemp\pytest\usession-main-595\recompiler\_CFFI_test_win32_calling_convention_2.c ---------------------------- Captured stderr call ----------------------------- cl : Command line error D8021 : invalid numeric argument '/Wno-error=incompatible-pointer-types' ______________ AppTestRecompiler.test_win32_calling_convention_3 ______________ self = <CallInfo when='call' exception: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2> func = <function <lambda> at 0x000002792d5b75b0>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ..\_pytest\runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ..\_pytest\runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_win32_calling_convention_3'>, '...lticall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_win32_calling_convention_3'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ..\_pytest\vendored_packages\pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00000279153616a8> hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_win32_calling_convention_3'>, '...lticall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_win32_calling_convention_3'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ..\_pytest\vendored_packages\pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_win32_calling_convention_3'>, '...lticall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_win32_calling_convention_3'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ..\_pytest\vendored_packages\pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_win32_calling_convention_3'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791eac6750> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...nvention_3'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00000279276a2be0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00000279276a2be0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...nvention_3'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_win32_calling_convention_3'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791eac6700> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...nvention_3'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00000279276a2ba0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00000279276a2ba0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...nvention_3'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_win32_calling_convention_3'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ..\_pytest\vendored_packages\pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_win32_calling_convention_3'> def pytest_runtest_call(item): try: > item.runtest() ..\_pytest\runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_win32_calling_convention_3'> def runtest(self): target = self.obj if self.config.option.runappdirect: return target() space = target.im_self.space filename = self._getdynfilename(target) func = app2interp_temp(target.im_func, filename=filename) w_instance = self.parent.w_instance > self.execute_appex(space, func, space, w_instance) tool\pytest\apptest.py:89: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_win32_calling_convention_3'>, space = StdObjSpace target = <function test_win32_calling_convention_3 at 0x000002792d5b7880> args = (StdObjSpace, <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>) def execute_appex(self, space, target, *args): self.space = space try: > target(*args) tool\pytest\apptest.py:30: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) w_func = <Function test_win32_calling_convention_3> args = <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8> def appcaller(space, *args_w): if not isinstance(space, ObjSpace): raise TypeError("first argument must be a space instance.") # the last argument can be an Arguments w_func = self.wget(space, name) if not args_w: return space.call_function(w_func) else: args = args_w[-1] assert args is not None if not isinstance(args, Arguments): > return space.call_function(w_func, *args_w) interpreter\gateway.py:1227: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <Function test_win32_calling_convention_3> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) nargs = 1, Function = <class 'pypy.interpreter.function.Function'> Method = <class 'pypy.interpreter.function.Method'> def call_function(self, w_func, *args_w): nargs = len(args_w) # used for pruning funccall versions if not self.config.objspace.disable_call_speedhacks and nargs < 5: # start of hack for performance from pypy.interpreter.function import Function, Method if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: if nargs < 4: func = w_func.w_function if isinstance(func, Function): return func.funccall(w_inst, *args_w) elif args_w and ( self.abstract_isinstance_w(args_w[0], w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): > return w_func.funccall(*args_w) interpreter\baseobjspace.py:1210: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <Function test_win32_calling_convention_3> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) gateway = <module 'pypy.interpreter.gateway' from 'd:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\interpreter\\gateway.pyc'> PyCode = <class 'pypy.interpreter.pycode.PyCode'> code = <code object test_win32_calling_convention_3, file '[d:\pypy_stuff\buildbot64\...-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:1373]', line 1> def funccall(self, *args_w): # speed hack from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit nargs = len(args_w) fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, args_w[0]) elif nargs == 2: assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, args_w[0], args_w[1]) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) return code.fastcall_3(self.space, self, args_w[0], args_w[1], args_w[2]) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) return code.fastcall_4(self.space, self, args_w[0], args_w[1], args_w[2], args_w[3]) elif (nargs | PyCode.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) if nargs < 5: new_frame = self.space.createframe(code, self.w_func_globals, self) for i in funccallunrolling: if i < nargs: new_frame.locals_cells_stack_w[i] = args_w[i] > return new_frame.run() interpreter\function.py:118: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_win32_ca...ld\pypy\module\_cffi_backend\test\test_recompiler.py:1373]', line 1> at line 11 def run(self): """Start this frame's execution.""" if self.getcode().co_flags & pycode.CO_GENERATOR: from pypy.interpreter.generator import GeneratorIterator return GeneratorIterator(self) else: > return self.execute_frame() interpreter\pyframe.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_win32_ca...ld\pypy\module\_cffi_backend\test\test_recompiler.py:1373]', line 1> at line 11 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, executioncontext) except OperationError: raise except Exception as e: # general fall-back > raise self._convert_unexpected_exception(e) interpreter\pyframe.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_win32_ca...ld\pypy\module\_cffi_backend\test\test_recompiler.py:1373]', line 1> at line 11 e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def _convert_unexpected_exception(self, e): from pypy.interpreter import error > operr = error.get_converted_unexpected_exception(self.space, e) interpreter\pyframe.py:943: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_win32_ca...ld\pypy\module\_cffi_backend\test\test_recompiler.py:1373]', line 1> at line 11 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, > executioncontext) interpreter\pyframe.py:286: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_win32_ca...ld\pypy\module\_cffi_backend\test\test_recompiler.py:1373]', line 1> at line 11 pycode = <code object test_win32_calling_convention_3, file '[d:\pypy_stuff\buildbot64\...-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:1373]', line 1> next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def dispatch(self, pycode, next_instr, ec): # For the sequel, force 'next_instr' to be unsigned for performance next_instr = r_uint(next_instr) co_code = pycode.co_code try: while True: > next_instr = self.handle_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:64: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_win32_ca...ld\pypy\module\_cffi_backend\test\test_recompiler.py:1373]', line 1> at line 11 co_code = 'd\x01\x00d\x00\x00l\x00\x00}\x01\x00|\x00\x00\xc9\x01\x00d\x02\x00d\x03\x00d\x04\x00\xca\x03\x00\\\x02\x00}\x02\x00}\...x06\x00\xcc\x1e\x00|\x06\x00j\t\x00|\x06\x00j\n\x00f\x02\x00d\x0c\x00k\x02\x00s\xcc\x01t\x0b\x00\x82\x01\x00d\x00\x00S' next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def handle_bytecode(self, co_code, next_instr, ec): try: > next_instr = self.dispatch_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:71: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_win32_ca...ld\pypy\module\_cffi_backend\test\test_recompiler.py:1373]', line 1> at line 11 co_code = 'd\x01\x00d\x00\x00l\x00\x00}\x01\x00|\x00\x00\xc9\x01\x00d\x02\x00d\x03\x00d\x04\x00\xca\x03\x00\\\x02\x00}\x02\x00}\...x06\x00\xcc\x1e\x00|\x06\x00j\t\x00|\x06\x00j\n\x00f\x02\x00d\x0c\x00k\x02\x00s\xcc\x01t\x0b\x00\x82\x01\x00d\x00\x00S' next_instr = 30L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> @jit.unroll_safe def dispatch_bytecode(self, co_code, next_instr, ec): while True: self.last_instr = intmask(next_instr) if jit.we_are_jitted(): if self.debugdata: ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) else: # Only reload next_instr from last_instr when something that # can modify it actually ran (trace function or action # dispatcher). In the common case (no trace, positive ticker) # next_instr is unchanged and the round-trip is skipped. _d = self.debugdata if ec.space.reverse_debugging or ( _d is not None and _d.w_f_trace is not None) or ( not we_are_translated() and 'bytecode_only_trace' in ec.__dict__): ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) actionflag = ec.space.actionflag if actionflag.decrement_ticker(TICK_COUNTER_STEP) < 0: actionflag.action_dispatcher(ec, self) next_instr = r_uint(self.last_instr) opcode = ord(co_code[next_instr]) next_instr += 1 if opcode >= HAVE_ARGUMENT: lo = ord(co_code[next_instr]) hi = ord(co_code[next_instr+1]) next_instr += 2 oparg = (hi * 256) | lo else: oparg = 0 # note: the structure of the code here is such that it makes # (after translation) a big "if/elif" chain, which is then # turned into a switch(). while opcode == opcodedesc.EXTENDED_ARG.index: opcode = ord(co_code[next_instr]) if opcode < HAVE_ARGUMENT: raise BytecodeCorruption lo = ord(co_code[next_instr+1]) hi = ord(co_code[next_instr+2]) next_instr += 3 oparg = (oparg * 65536) | (hi * 256) | lo if opcode == opcodedesc.RETURN_VALUE.index: if not self.blockstack_non_empty(): self.frame_finished_execution = True # for generators raise Return w_returnvalue = self.popvalue() block = self.unrollstack(SReturnValue.kind) if block is None: self.pushvalue(w_returnvalue) raise Return else: unroller = SReturnValue(w_returnvalue) next_instr = block.handle(self, unroller) return next_instr # now inside a 'finally' block elif opcode == opcodedesc.END_FINALLY.index: unroller = self.end_finally() if isinstance(unroller, SuspendedUnroller): # go on unrolling the stack block = self.unrollstack(unroller.kind) if block is None: w_result = unroller.nomoreblocks() self.pushvalue(w_result) raise Return else: next_instr = block.handle(self, unroller) return next_instr elif opcode == opcodedesc.JUMP_ABSOLUTE.index: return self.jump_absolute(oparg, ec) elif opcode == opcodedesc.BREAK_LOOP.index: next_instr = self.BREAK_LOOP(oparg, next_instr) elif opcode == opcodedesc.CONTINUE_LOOP.index: return self.CONTINUE_LOOP(oparg, next_instr) elif opcode == opcodedesc.FOR_ITER.index: next_instr = self.FOR_ITER(oparg, next_instr) elif opcode == opcodedesc.JUMP_FORWARD.index: next_instr = self.JUMP_FORWARD(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_FALSE_OR_POP.index: next_instr = self.JUMP_IF_FALSE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_NOT_DEBUG.index: next_instr = self.JUMP_IF_NOT_DEBUG(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_TRUE_OR_POP.index: next_instr = self.JUMP_IF_TRUE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_FALSE.index: next_instr = self.POP_JUMP_IF_FALSE(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_TRUE.index: next_instr = self.POP_JUMP_IF_TRUE(oparg, next_instr) elif opcode == opcodedesc.BINARY_ADD.index: self.BINARY_ADD(oparg, next_instr) elif opcode == opcodedesc.BINARY_AND.index: self.BINARY_AND(oparg, next_instr) elif opcode == opcodedesc.BINARY_DIVIDE.index: self.BINARY_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_FLOOR_DIVIDE.index: self.BINARY_FLOOR_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_LSHIFT.index: self.BINARY_LSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_MODULO.index: self.BINARY_MODULO(oparg, next_instr) elif opcode == opcodedesc.BINARY_MULTIPLY.index: self.BINARY_MULTIPLY(oparg, next_instr) elif opcode == opcodedesc.BINARY_OR.index: self.BINARY_OR(oparg, next_instr) elif opcode == opcodedesc.BINARY_POWER.index: self.BINARY_POWER(oparg, next_instr) elif opcode == opcodedesc.BINARY_RSHIFT.index: self.BINARY_RSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBSCR.index: self.BINARY_SUBSCR(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBTRACT.index: self.BINARY_SUBTRACT(oparg, next_instr) elif opcode == opcodedesc.BINARY_TRUE_DIVIDE.index: self.BINARY_TRUE_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_XOR.index: self.BINARY_XOR(oparg, next_instr) elif opcode == opcodedesc.BUILD_CLASS.index: self.BUILD_CLASS(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST.index: self.BUILD_LIST(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST_FROM_ARG.index: self.BUILD_LIST_FROM_ARG(oparg, next_instr) elif opcode == opcodedesc.BUILD_MAP.index: self.BUILD_MAP(oparg, next_instr) elif opcode == opcodedesc.BUILD_SET.index: self.BUILD_SET(oparg, next_instr) elif opcode == opcodedesc.BUILD_SLICE.index: self.BUILD_SLICE(oparg, next_instr) elif opcode == opcodedesc.BUILD_TUPLE.index: self.BUILD_TUPLE(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION.index: self.CALL_FUNCTION(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_KW.index: self.CALL_FUNCTION_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR.index: self.CALL_FUNCTION_VAR(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR_KW.index: self.CALL_FUNCTION_VAR_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_METHOD.index: > self.CALL_METHOD(oparg, next_instr) interpreter\pyopcode.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ f = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_win32_ca...ld\pypy\module\_cffi_backend\test\test_recompiler.py:1373]', line 1> at line 11 oparg = 3, ignored = (30L,), n_args = 3, n_kwargs = 0, w_self = None @jit.unroll_safe def CALL_METHOD(f, oparg, *ignored): # opargs contains the arg, and kwarg count, excluding the implicit 'self' n_args = oparg & 0xff n_kwargs = (oparg >> 8) & 0xff w_self = f.peekvalue_maybe_none(n_args + (2 * n_kwargs)) n = n_args + (w_self is not None) if not n_kwargs: w_callable = f.peekvalue(n_args + (2 * n_kwargs) + 1) w_result = f.space.call_valuestack( > w_callable, n, f, methodcall=w_self is not None, dropvalues=n_args + 2) objspace\std\callmethod.py:96: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_win32_ca...ld\pypy\module\_cffi_backend\test\test_recompiler.py:1373]', line 1> at line 11 dropvalues = 5, methodcall = False def call_valuestack(self, w_func, nargs, frame, dropvalues, methodcall=False): # methodcall is only used for better error messages in argument.py from pypy.interpreter.function import Function, Method, is_builtin_code if frame.get_is_being_profiled() and is_builtin_code(w_func): # XXX: this code is copied&pasted :-( from the slow path below # call_valuestack(). args = frame.make_arguments(nargs) frame.dropvalues(dropvalues) return self.call_args_and_c_profile(frame, w_func, args) if not self.config.objspace.disable_call_speedhacks: # start of hack for performance if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: w_func = w_func.w_function # reuse callable stack place for w_inst frame.settopvalue(w_inst, nargs) nargs += 1 methodcall = True elif nargs > 0 and ( self.abstract_isinstance_w(frame.peekvalue(nargs-1), # :-( w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): return w_func.funccall_valuestack( > nargs, frame, methodcall=methodcall, dropvalues=dropvalues) interpreter\baseobjspace.py:1243: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_win32_ca...ld\pypy\module\_cffi_backend\test\test_recompiler.py:1373]', line 1> at line 11 dropvalues = 5, methodcall = False def funccall_valuestack(self, nargs, frame, dropvalues, methodcall=False): # speed hack # methodcall is only for better error messages from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit # if (jit.we_are_jitted() and code is self.space._code_of_sys_exc_info and nargs == 0): frame.dropvalues(dropvalues) from pypy.module.sys.vm import exc_info_direct return exc_info_direct(self.space, frame) # fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: f_0 = frame.peekvalue(0) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, f_0) elif nargs == 2: f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, f_1, f_0) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) frame.dropvalues(dropvalues) return code.fastcall_3(self.space, self, f_2, f_1, f_0) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) f_3 = frame.peekvalue(3) frame.dropvalues(dropvalues) return code.fastcall_4(self.space, self, f_3, f_2, f_1, f_0) elif (nargs | Code.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) return self._flat_pycall(code, nargs, frame, dropvalues) elif fast_natural_arity & Code.FLATPYCALL: natural_arity = fast_natural_arity & 0xff if natural_arity > nargs >= natural_arity - len(self.defs_w): assert isinstance(code, PyCode) return self._flat_pycall_defaults(code, nargs, frame, natural_arity - nargs, dropvalues) elif fast_natural_arity == Code.PASSTHROUGHARGS1 and nargs >= 1: assert isinstance(code, gateway.BuiltinCodePassThroughArguments1) w_obj = frame.peekvalue(nargs-1) args = frame.make_arguments(nargs-1) frame.dropvalues(dropvalues) return code.funcrun_obj(self, w_obj, args) args = frame.make_arguments(nargs, methodcall=methodcall) frame.dropvalues(dropvalues) > return self.call_args(args) interpreter\function.py:190: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('\n struct point { int x, y; };\n\n ...n }\n return result;\n }\n ')]) def call_args(self, args): # delegate activation to code > w_res = self.getcode().funcrun(self, args) interpreter\function.py:68: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('\n struct point { int x, y; };\n\n ...n }\n return result;\n }\n ')]) def funcrun(self, func, args): > return BuiltinCode.funcrun_obj(self, func, None, args) interpreter\gateway.py:781: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('\n struct point { int x, y; };\n\n ...n }\n return result;\n }\n ')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: w_result = activation._run(space, scope_w) except DescrMismatch: if w_obj is not None: args = args.prepend(w_obj) return self._type_unwrap_mismatch(space, args) except Exception as e: > self.handle_exception(space, e) interpreter\gateway.py:795: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> space = StdObjSpace e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def handle_exception(self, space, e): try: if not we_are_translated(): raise raise e except OperationError: raise except Exception as e: # general fall-back from pypy.interpreter import error > raise error.get_converted_unexpected_exception(space, e) interpreter\gateway.py:819: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('\n struct point { int x, y; };\n\n ...n }\n return result;\n }\n ')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: > w_result = activation._run(space, scope_w) interpreter\gateway.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinActivation_UwS_ObjSpace_text_text_text_W_Root_W_Root_W_Root_int_W_Root object at 0x000002791c13af38> space = StdObjSpace scope_w = [W_BytesObject('\n struct point { int x, y; };\n\n int (*...\n struct point call2(int...ine __cdecl\n...;\n }\n return result;\n }\n '), None, None, None, ...] def _run(self, space, scope_w): > return self.behavior(space, space.text_w(scope_w[0]), space.text_w(scope_w[1]), space.text_w(scope_w[2]), scope_w[3], scope_w[4], scope_w[5], space.gateway_int_w(scope_w[6]), scope_w[7]) <3152-codegen d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\rpython\tool\sourcetools.py:200>:3: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace cdef = '\n struct point { int x, y; };\n\n int (*const cb1)(struct point);\n int (__stdcall ... __stdcall call1(int(*cb)(struct point));\n struct point call2(int(__stdcall *cb)(struct point));\n ' module_name = '_CFFI_test_win32_calling_convention_3' source = '\n #ifndef _MSC_VER\n # define __cdecl\n # define __stdcall\n #endif\n ... += r;\n result.y -= r;\n }\n return result;\n }\n ' w_includes = None, w_extra_source = None, w_min_version = None, packed = 0 w_extra_compile_args = None @unwrap_spec(cdef='text', module_name='text', source='text', packed=int) def prepare(space, cdef, module_name, source, w_includes=None, w_extra_source=None, w_min_version=None, packed=False, w_extra_compile_args=None): try: import cffi from cffi import FFI # <== the system one, which from cffi import recompiler # needs to be at least cffi 1.0.4 from cffi import ffiplatform except ImportError: pytest.skip("system cffi module not found or older than 1.0.0") if w_min_version is None: min_version = (1, 4, 0) else: min_version = tuple(space.unwrap(w_min_version)) if cffi.__version_info__ < min_version: pytest.skip("system cffi module needs to be at least %s, got %s" % ( min_version, cffi.__version_info__)) space.appexec([], """(): import _cffi_backend # force it to be initialized """) includes = [] if w_includes: includes += space.unpackiterable(w_includes) assert module_name.startswith('test_') module_name = '_CFFI_' + module_name rdir = udir.ensure('recompiler', dir=1) rdir.join('Python.h').write( '#include <stdio.h>\n' '#define PYPY_VERSION XX\n' '#define PyMODINIT_FUNC /*exported*/ void\n' ) path = module_name.replace('.', os.sep) if '.' in module_name: subrdir = rdir.join(module_name[:module_name.index('.')]) os.mkdir(str(subrdir)) else: subrdir = rdir c_file = str(rdir.join('%s.c' % path)) ffi = FFI() for include_ffi_object in includes: ffi.include(include_ffi_object._test_recompiler_source_ffi) ffi.cdef(cdef, packed=packed) ffi.set_source(module_name, source) ffi.emit_c_code(c_file) base_module_name = module_name.split('.')[-1] sources = [] if w_extra_source is not None: sources.append(space.str_w(w_extra_source)) kwargs = {} # GCC 14 promotes -Wincompatible-pointer-types from a warning to an error # by default, which breaks cffi's intentionally-mismatched field-check # probes (e.g. test_misdeclared_field_1). Keep it a warning so the module # compiles and cffi's runtime checks can run. extra = ['-Wno-error=incompatible-pointer-types'] if w_extra_compile_args is not None: extra = extra + space.unwrap(w_extra_compile_args) kwargs['extra_compile_args'] = extra ext = ffiplatform.get_extension(c_file, module_name, include_dirs=[str(rdir)], export_symbols=['_cffi_pypyinit_' + base_module_name], sources=sources, **kwargs) > ffiplatform.compile(str(rdir), ext) module\_cffi_backend\test\test_recompiler.py:86: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x0000027927aa4f20> compiler_verbose = 0, debug = None def compile(tmpdir, ext, compiler_verbose=0, debug=None): """Compile a C extension module using distutils.""" saved_environ = os.environ.copy() try: > outputfilename = _build(tmpdir, ext, compiler_verbose, debug) d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x0000027927aa4f20> compiler_verbose = 0, debug = 0 def _build(tmpdir, ext, compiler_verbose=0, debug=None): # XXX compact but horrible :-( from cffi._shimmed_dist_utils import Distribution, CompileError, LinkError, set_threshold, set_verbosity dist = Distribution({'ext_modules': [ext]}) dist.parse_config_files() options = dist.get_option_dict('build_ext') if debug is None: debug = sys.flags.debug options['debug'] = ('ffiplatform', debug) options['force'] = ('ffiplatform', True) options['build_lib'] = ('ffiplatform', tmpdir) options['build_temp'] = ('ffiplatform', tmpdir) # try: old_level = set_threshold(0) or 0 try: set_verbosity(compiler_verbose) dist.run_command('build_ext') cmd_obj = dist.get_command_obj('build_ext') [soname] = cmd_obj.get_outputs() finally: set_threshold(old_level) except (CompileError, LinkError) as e: > raise VerificationError('%s: %s' % (e.__class__.__name__, e)) E VerificationError: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2 d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:54: VerificationError ---------------------------- Captured stdout call ----------------------------- generating d:\systemtemp\pytest\usession-main-595\recompiler\_CFFI_test_win32_calling_convention_3.c ---------------------------- Captured stderr call ----------------------------- cl : Command line error D8021 : invalid numeric argument '/Wno-error=incompatible-pointer-types' ______________________ AppTestRecompiler.test_share_FILE ______________________ self = <CallInfo when='call' exception: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2> func = <function <lambda> at 0x0000027920883e98>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ..\_pytest\runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ..\_pytest\runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_share_FILE'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_share_FILE'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ..\_pytest\vendored_packages\pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00000279153616a8> hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_share_FILE'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_share_FILE'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ..\_pytest\vendored_packages\pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_share_FILE'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_share_FILE'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ..\_pytest\vendored_packages\pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_share_FILE'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002792b7dcd18> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...share_FILE'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027927889d60> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027927889d60> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...share_FILE'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_share_FILE'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002792b7dcc00> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...share_FILE'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027927889d20> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027927889d20> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...share_FILE'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_share_FILE'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ..\_pytest\vendored_packages\pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_share_FILE'> def pytest_runtest_call(item): try: > item.runtest() ..\_pytest\runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_share_FILE'> def runtest(self): target = self.obj if self.config.option.runappdirect: return target() space = target.im_self.space filename = self._getdynfilename(target) func = app2interp_temp(target.im_func, filename=filename) w_instance = self.parent.w_instance > self.execute_appex(space, func, space, w_instance) tool\pytest\apptest.py:89: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_share_FILE'>, space = StdObjSpace target = <function test_share_FILE at 0x0000027920883f88> args = (StdObjSpace, <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>) def execute_appex(self, space, target, *args): self.space = space try: > target(*args) tool\pytest\apptest.py:30: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) w_func = <Function test_share_FILE> args = <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8> def appcaller(space, *args_w): if not isinstance(space, ObjSpace): raise TypeError("first argument must be a space instance.") # the last argument can be an Arguments w_func = self.wget(space, name) if not args_w: return space.call_function(w_func) else: args = args_w[-1] assert args is not None if not isinstance(args, Arguments): > return space.call_function(w_func, *args_w) interpreter\gateway.py:1227: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <Function test_share_FILE> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) nargs = 1, Function = <class 'pypy.interpreter.function.Function'> Method = <class 'pypy.interpreter.function.Method'> def call_function(self, w_func, *args_w): nargs = len(args_w) # used for pruning funccall versions if not self.config.objspace.disable_call_speedhacks and nargs < 5: # start of hack for performance from pypy.interpreter.function import Function, Method if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: if nargs < 4: func = w_func.w_function if isinstance(func, Function): return func.funccall(w_inst, *args_w) elif args_w and ( self.abstract_isinstance_w(args_w[0], w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): > return w_func.funccall(*args_w) interpreter\baseobjspace.py:1210: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <Function test_share_FILE> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) gateway = <module 'pypy.interpreter.gateway' from 'd:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\interpreter\\gateway.pyc'> PyCode = <class 'pypy.interpreter.pycode.PyCode'> code = <code object test_share_FILE, file '[d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:1432]', line 1> def funccall(self, *args_w): # speed hack from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit nargs = len(args_w) fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, args_w[0]) elif nargs == 2: assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, args_w[0], args_w[1]) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) return code.fastcall_3(self.space, self, args_w[0], args_w[1], args_w[2]) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) return code.fastcall_4(self.space, self, args_w[0], args_w[1], args_w[2], args_w[3]) elif (nargs | PyCode.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) if nargs < 5: new_frame = self.space.createframe(code, self.w_func_globals, self) for i in funccallunrolling: if i < nargs: new_frame.locals_cells_stack_w[i] = args_w[i] > return new_frame.run() interpreter\function.py:118: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_share_FI...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1432]', line 1> at line 4 def run(self): """Start this frame's execution.""" if self.getcode().co_flags & pycode.CO_GENERATOR: from pypy.interpreter.generator import GeneratorIterator return GeneratorIterator(self) else: > return self.execute_frame() interpreter\pyframe.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_share_FI...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1432]', line 1> at line 4 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, executioncontext) except OperationError: raise except Exception as e: # general fall-back > raise self._convert_unexpected_exception(e) interpreter\pyframe.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_share_FI...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1432]', line 1> at line 4 e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def _convert_unexpected_exception(self, e): from pypy.interpreter import error > operr = error.get_converted_unexpected_exception(self.space, e) interpreter\pyframe.py:943: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_share_FI...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1432]', line 1> at line 4 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, > executioncontext) interpreter\pyframe.py:286: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_share_FI...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1432]', line 1> at line 4 pycode = <code object test_share_FILE, file '[d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:1432]', line 1> next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def dispatch(self, pycode, next_instr, ec): # For the sequel, force 'next_instr' to be unsigned for performance next_instr = r_uint(next_instr) co_code = pycode.co_code try: while True: > next_instr = self.handle_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:64: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_share_FI...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1432]', line 1> at line 4 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00|\x00\x00\xc9\x00\x00d\x04\x0...ca\x03\x00\\\x02\x00}\x03\x00}\x04\x00|\x02\x00\xc9\x01\x00|\x04\x00\xc9\x02\x00\xca\x00\x00\xca\x01\x00\x01d\x00\x00S' next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def handle_bytecode(self, co_code, next_instr, ec): try: > next_instr = self.dispatch_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:71: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_share_FI...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1432]', line 1> at line 4 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00|\x00\x00\xc9\x00\x00d\x04\x0...ca\x03\x00\\\x02\x00}\x03\x00}\x04\x00|\x02\x00\xc9\x01\x00|\x04\x00\xc9\x02\x00\xca\x00\x00\xca\x01\x00\x01d\x00\x00S' next_instr = 18L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> @jit.unroll_safe def dispatch_bytecode(self, co_code, next_instr, ec): while True: self.last_instr = intmask(next_instr) if jit.we_are_jitted(): if self.debugdata: ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) else: # Only reload next_instr from last_instr when something that # can modify it actually ran (trace function or action # dispatcher). In the common case (no trace, positive ticker) # next_instr is unchanged and the round-trip is skipped. _d = self.debugdata if ec.space.reverse_debugging or ( _d is not None and _d.w_f_trace is not None) or ( not we_are_translated() and 'bytecode_only_trace' in ec.__dict__): ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) actionflag = ec.space.actionflag if actionflag.decrement_ticker(TICK_COUNTER_STEP) < 0: actionflag.action_dispatcher(ec, self) next_instr = r_uint(self.last_instr) opcode = ord(co_code[next_instr]) next_instr += 1 if opcode >= HAVE_ARGUMENT: lo = ord(co_code[next_instr]) hi = ord(co_code[next_instr+1]) next_instr += 2 oparg = (hi * 256) | lo else: oparg = 0 # note: the structure of the code here is such that it makes # (after translation) a big "if/elif" chain, which is then # turned into a switch(). while opcode == opcodedesc.EXTENDED_ARG.index: opcode = ord(co_code[next_instr]) if opcode < HAVE_ARGUMENT: raise BytecodeCorruption lo = ord(co_code[next_instr+1]) hi = ord(co_code[next_instr+2]) next_instr += 3 oparg = (oparg * 65536) | (hi * 256) | lo if opcode == opcodedesc.RETURN_VALUE.index: if not self.blockstack_non_empty(): self.frame_finished_execution = True # for generators raise Return w_returnvalue = self.popvalue() block = self.unrollstack(SReturnValue.kind) if block is None: self.pushvalue(w_returnvalue) raise Return else: unroller = SReturnValue(w_returnvalue) next_instr = block.handle(self, unroller) return next_instr # now inside a 'finally' block elif opcode == opcodedesc.END_FINALLY.index: unroller = self.end_finally() if isinstance(unroller, SuspendedUnroller): # go on unrolling the stack block = self.unrollstack(unroller.kind) if block is None: w_result = unroller.nomoreblocks() self.pushvalue(w_result) raise Return else: next_instr = block.handle(self, unroller) return next_instr elif opcode == opcodedesc.JUMP_ABSOLUTE.index: return self.jump_absolute(oparg, ec) elif opcode == opcodedesc.BREAK_LOOP.index: next_instr = self.BREAK_LOOP(oparg, next_instr) elif opcode == opcodedesc.CONTINUE_LOOP.index: return self.CONTINUE_LOOP(oparg, next_instr) elif opcode == opcodedesc.FOR_ITER.index: next_instr = self.FOR_ITER(oparg, next_instr) elif opcode == opcodedesc.JUMP_FORWARD.index: next_instr = self.JUMP_FORWARD(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_FALSE_OR_POP.index: next_instr = self.JUMP_IF_FALSE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_NOT_DEBUG.index: next_instr = self.JUMP_IF_NOT_DEBUG(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_TRUE_OR_POP.index: next_instr = self.JUMP_IF_TRUE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_FALSE.index: next_instr = self.POP_JUMP_IF_FALSE(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_TRUE.index: next_instr = self.POP_JUMP_IF_TRUE(oparg, next_instr) elif opcode == opcodedesc.BINARY_ADD.index: self.BINARY_ADD(oparg, next_instr) elif opcode == opcodedesc.BINARY_AND.index: self.BINARY_AND(oparg, next_instr) elif opcode == opcodedesc.BINARY_DIVIDE.index: self.BINARY_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_FLOOR_DIVIDE.index: self.BINARY_FLOOR_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_LSHIFT.index: self.BINARY_LSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_MODULO.index: self.BINARY_MODULO(oparg, next_instr) elif opcode == opcodedesc.BINARY_MULTIPLY.index: self.BINARY_MULTIPLY(oparg, next_instr) elif opcode == opcodedesc.BINARY_OR.index: self.BINARY_OR(oparg, next_instr) elif opcode == opcodedesc.BINARY_POWER.index: self.BINARY_POWER(oparg, next_instr) elif opcode == opcodedesc.BINARY_RSHIFT.index: self.BINARY_RSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBSCR.index: self.BINARY_SUBSCR(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBTRACT.index: self.BINARY_SUBTRACT(oparg, next_instr) elif opcode == opcodedesc.BINARY_TRUE_DIVIDE.index: self.BINARY_TRUE_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_XOR.index: self.BINARY_XOR(oparg, next_instr) elif opcode == opcodedesc.BUILD_CLASS.index: self.BUILD_CLASS(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST.index: self.BUILD_LIST(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST_FROM_ARG.index: self.BUILD_LIST_FROM_ARG(oparg, next_instr) elif opcode == opcodedesc.BUILD_MAP.index: self.BUILD_MAP(oparg, next_instr) elif opcode == opcodedesc.BUILD_SET.index: self.BUILD_SET(oparg, next_instr) elif opcode == opcodedesc.BUILD_SLICE.index: self.BUILD_SLICE(oparg, next_instr) elif opcode == opcodedesc.BUILD_TUPLE.index: self.BUILD_TUPLE(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION.index: self.CALL_FUNCTION(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_KW.index: self.CALL_FUNCTION_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR.index: self.CALL_FUNCTION_VAR(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR_KW.index: self.CALL_FUNCTION_VAR_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_METHOD.index: > self.CALL_METHOD(oparg, next_instr) interpreter\pyopcode.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ f = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_share_FI...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1432]', line 1> at line 4 oparg = 3, ignored = (18L,), n_args = 3, n_kwargs = 0, w_self = None @jit.unroll_safe def CALL_METHOD(f, oparg, *ignored): # opargs contains the arg, and kwarg count, excluding the implicit 'self' n_args = oparg & 0xff n_kwargs = (oparg >> 8) & 0xff w_self = f.peekvalue_maybe_none(n_args + (2 * n_kwargs)) n = n_args + (w_self is not None) if not n_kwargs: w_callable = f.peekvalue(n_args + (2 * n_kwargs) + 1) w_result = f.space.call_valuestack( > w_callable, n, f, methodcall=w_self is not None, dropvalues=n_args + 2) objspace\std\callmethod.py:96: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_share_FI...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1432]', line 1> at line 4 dropvalues = 5, methodcall = False def call_valuestack(self, w_func, nargs, frame, dropvalues, methodcall=False): # methodcall is only used for better error messages in argument.py from pypy.interpreter.function import Function, Method, is_builtin_code if frame.get_is_being_profiled() and is_builtin_code(w_func): # XXX: this code is copied&pasted :-( from the slow path below # call_valuestack(). args = frame.make_arguments(nargs) frame.dropvalues(dropvalues) return self.call_args_and_c_profile(frame, w_func, args) if not self.config.objspace.disable_call_speedhacks: # start of hack for performance if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: w_func = w_func.w_function # reuse callable stack place for w_inst frame.settopvalue(w_inst, nargs) nargs += 1 methodcall = True elif nargs > 0 and ( self.abstract_isinstance_w(frame.peekvalue(nargs-1), # :-( w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): return w_func.funccall_valuestack( > nargs, frame, methodcall=methodcall, dropvalues=dropvalues) interpreter\baseobjspace.py:1243: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_share_FI...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1432]', line 1> at line 4 dropvalues = 5, methodcall = False def funccall_valuestack(self, nargs, frame, dropvalues, methodcall=False): # speed hack # methodcall is only for better error messages from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit # if (jit.we_are_jitted() and code is self.space._code_of_sys_exc_info and nargs == 0): frame.dropvalues(dropvalues) from pypy.module.sys.vm import exc_info_direct return exc_info_direct(self.space, frame) # fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: f_0 = frame.peekvalue(0) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, f_0) elif nargs == 2: f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, f_1, f_0) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) frame.dropvalues(dropvalues) return code.fastcall_3(self.space, self, f_2, f_1, f_0) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) f_3 = frame.peekvalue(3) frame.dropvalues(dropvalues) return code.fastcall_4(self.space, self, f_3, f_2, f_1, f_0) elif (nargs | Code.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) return self._flat_pycall(code, nargs, frame, dropvalues) elif fast_natural_arity & Code.FLATPYCALL: natural_arity = fast_natural_arity & 0xff if natural_arity > nargs >= natural_arity - len(self.defs_w): assert isinstance(code, PyCode) return self._flat_pycall_defaults(code, nargs, frame, natural_arity - nargs, dropvalues) elif fast_natural_arity == Code.PASSTHROUGHARGS1 and nargs >= 1: assert isinstance(code, gateway.BuiltinCodePassThroughArguments1) w_obj = frame.peekvalue(nargs-1) args = frame.make_arguments(nargs-1) frame.dropvalues(dropvalues) return code.funcrun_obj(self, w_obj, args) args = frame.make_arguments(nargs, methodcall=methodcall) frame.dropvalues(dropvalues) > return self.call_args(args) interpreter\function.py:190: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('void do_stuff(FILE *);'), W_BytesObject('test_share_FILE_a'), W_BytesObject('void do_stuff(FILE *f) { (void)f; }')]) def call_args(self, args): # delegate activation to code > w_res = self.getcode().funcrun(self, args) interpreter\function.py:68: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('void do_stuff(FILE *);'), W_BytesObject('test_share_FILE_a'), W_BytesObject('void do_stuff(FILE *f) { (void)f; }')]) def funcrun(self, func, args): > return BuiltinCode.funcrun_obj(self, func, None, args) interpreter\gateway.py:781: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('void do_stuff(FILE *);'), W_BytesObject('test_share_FILE_a'), W_BytesObject('void do_stuff(FILE *f) { (void)f; }')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: w_result = activation._run(space, scope_w) except DescrMismatch: if w_obj is not None: args = args.prepend(w_obj) return self._type_unwrap_mismatch(space, args) except Exception as e: > self.handle_exception(space, e) interpreter\gateway.py:795: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> space = StdObjSpace e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def handle_exception(self, space, e): try: if not we_are_translated(): raise raise e except OperationError: raise except Exception as e: # general fall-back from pypy.interpreter import error > raise error.get_converted_unexpected_exception(space, e) interpreter\gateway.py:819: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('void do_stuff(FILE *);'), W_BytesObject('test_share_FILE_a'), W_BytesObject('void do_stuff(FILE *f) { (void)f; }')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: > w_result = activation._run(space, scope_w) interpreter\gateway.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinActivation_UwS_ObjSpace_text_text_text_W_Root_W_Root_W_Root_int_W_Root object at 0x000002791c13af38> space = StdObjSpace scope_w = [W_BytesObject('void do_stuff(FILE *);'), W_BytesObject('test_share_FILE_a'), W_BytesObject('void do_stuff(FILE *f) { (void)f; }'), None, None, None, ...] def _run(self, space, scope_w): > return self.behavior(space, space.text_w(scope_w[0]), space.text_w(scope_w[1]), space.text_w(scope_w[2]), scope_w[3], scope_w[4], scope_w[5], space.gateway_int_w(scope_w[6]), scope_w[7]) <3152-codegen d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\rpython\tool\sourcetools.py:200>:3: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace, cdef = 'void do_stuff(FILE *);' module_name = '_CFFI_test_share_FILE_a' source = 'void do_stuff(FILE *f) { (void)f; }', w_includes = None w_extra_source = None, w_min_version = None, packed = 0 w_extra_compile_args = None @unwrap_spec(cdef='text', module_name='text', source='text', packed=int) def prepare(space, cdef, module_name, source, w_includes=None, w_extra_source=None, w_min_version=None, packed=False, w_extra_compile_args=None): try: import cffi from cffi import FFI # <== the system one, which from cffi import recompiler # needs to be at least cffi 1.0.4 from cffi import ffiplatform except ImportError: pytest.skip("system cffi module not found or older than 1.0.0") if w_min_version is None: min_version = (1, 4, 0) else: min_version = tuple(space.unwrap(w_min_version)) if cffi.__version_info__ < min_version: pytest.skip("system cffi module needs to be at least %s, got %s" % ( min_version, cffi.__version_info__)) space.appexec([], """(): import _cffi_backend # force it to be initialized """) includes = [] if w_includes: includes += space.unpackiterable(w_includes) assert module_name.startswith('test_') module_name = '_CFFI_' + module_name rdir = udir.ensure('recompiler', dir=1) rdir.join('Python.h').write( '#include <stdio.h>\n' '#define PYPY_VERSION XX\n' '#define PyMODINIT_FUNC /*exported*/ void\n' ) path = module_name.replace('.', os.sep) if '.' in module_name: subrdir = rdir.join(module_name[:module_name.index('.')]) os.mkdir(str(subrdir)) else: subrdir = rdir c_file = str(rdir.join('%s.c' % path)) ffi = FFI() for include_ffi_object in includes: ffi.include(include_ffi_object._test_recompiler_source_ffi) ffi.cdef(cdef, packed=packed) ffi.set_source(module_name, source) ffi.emit_c_code(c_file) base_module_name = module_name.split('.')[-1] sources = [] if w_extra_source is not None: sources.append(space.str_w(w_extra_source)) kwargs = {} # GCC 14 promotes -Wincompatible-pointer-types from a warning to an error # by default, which breaks cffi's intentionally-mismatched field-check # probes (e.g. test_misdeclared_field_1). Keep it a warning so the module # compiles and cffi's runtime checks can run. extra = ['-Wno-error=incompatible-pointer-types'] if w_extra_compile_args is not None: extra = extra + space.unwrap(w_extra_compile_args) kwargs['extra_compile_args'] = extra ext = ffiplatform.get_extension(c_file, module_name, include_dirs=[str(rdir)], export_symbols=['_cffi_pypyinit_' + base_module_name], sources=sources, **kwargs) > ffiplatform.compile(str(rdir), ext) module\_cffi_backend\test\test_recompiler.py:86: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x00000279278366e0> compiler_verbose = 0, debug = None def compile(tmpdir, ext, compiler_verbose=0, debug=None): """Compile a C extension module using distutils.""" saved_environ = os.environ.copy() try: > outputfilename = _build(tmpdir, ext, compiler_verbose, debug) d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x00000279278366e0> compiler_verbose = 0, debug = 0 def _build(tmpdir, ext, compiler_verbose=0, debug=None): # XXX compact but horrible :-( from cffi._shimmed_dist_utils import Distribution, CompileError, LinkError, set_threshold, set_verbosity dist = Distribution({'ext_modules': [ext]}) dist.parse_config_files() options = dist.get_option_dict('build_ext') if debug is None: debug = sys.flags.debug options['debug'] = ('ffiplatform', debug) options['force'] = ('ffiplatform', True) options['build_lib'] = ('ffiplatform', tmpdir) options['build_temp'] = ('ffiplatform', tmpdir) # try: old_level = set_threshold(0) or 0 try: set_verbosity(compiler_verbose) dist.run_command('build_ext') cmd_obj = dist.get_command_obj('build_ext') [soname] = cmd_obj.get_outputs() finally: set_threshold(old_level) except (CompileError, LinkError) as e: > raise VerificationError('%s: %s' % (e.__class__.__name__, e)) E VerificationError: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2 d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:54: VerificationError ---------------------------- Captured stdout call ----------------------------- generating d:\systemtemp\pytest\usession-main-595\recompiler\_CFFI_test_share_FILE_a.c ---------------------------- Captured stderr call ----------------------------- cl : Command line error D8021 : invalid numeric argument '/Wno-error=incompatible-pointer-types' ___________________ AppTestRecompiler.test_extern_python_1 ____________________ self = <CallInfo when='call' exception: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2> func = <function <lambda> at 0x0000027921716200>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ..\_pytest\runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ..\_pytest\runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_extern_python_1'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_extern_python_1'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ..\_pytest\vendored_packages\pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00000279153616a8> hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_extern_python_1'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_extern_python_1'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ..\_pytest\vendored_packages\pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_extern_python_1'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_extern_python_1'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ..\_pytest\vendored_packages\pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_extern_python_1'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x0000027918d425e8> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...n_python_1'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792b913ce0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792b913ce0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...n_python_1'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_extern_python_1'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x0000027918d42598> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...n_python_1'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792b913ca0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792b913ca0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...n_python_1'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_extern_python_1'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ..\_pytest\vendored_packages\pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_extern_python_1'> def pytest_runtest_call(item): try: > item.runtest() ..\_pytest\runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_extern_python_1'> def runtest(self): target = self.obj if self.config.option.runappdirect: return target() space = target.im_self.space filename = self._getdynfilename(target) func = app2interp_temp(target.im_func, filename=filename) w_instance = self.parent.w_instance > self.execute_appex(space, func, space, w_instance) tool\pytest\apptest.py:89: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_extern_python_1'>, space = StdObjSpace target = <function test_extern_python_1 at 0x0000027921716278> args = (StdObjSpace, <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>) def execute_appex(self, space, target, *args): self.space = space try: > target(*args) tool\pytest\apptest.py:30: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) w_func = <Function test_extern_python_1> args = <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8> def appcaller(space, *args_w): if not isinstance(space, ObjSpace): raise TypeError("first argument must be a space instance.") # the last argument can be an Arguments w_func = self.wget(space, name) if not args_w: return space.call_function(w_func) else: args = args_w[-1] assert args is not None if not isinstance(args, Arguments): > return space.call_function(w_func, *args_w) interpreter\gateway.py:1227: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <Function test_extern_python_1> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) nargs = 1, Function = <class 'pypy.interpreter.function.Function'> Method = <class 'pypy.interpreter.function.Method'> def call_function(self, w_func, *args_w): nargs = len(args_w) # used for pruning funccall versions if not self.config.objspace.disable_call_speedhacks and nargs < 5: # start of hack for performance from pypy.interpreter.function import Function, Method if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: if nargs < 4: func = w_func.w_function if isinstance(func, Function): return func.funccall(w_inst, *args_w) elif args_w and ( self.abstract_isinstance_w(args_w[0], w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): > return w_func.funccall(*args_w) interpreter\baseobjspace.py:1210: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <Function test_extern_python_1> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) gateway = <module 'pypy.interpreter.gateway' from 'd:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\interpreter\\gateway.pyc'> PyCode = <class 'pypy.interpreter.pycode.PyCode'> code = <code object test_extern_python_1, file '[d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:1487]', line 1> def funccall(self, *args_w): # speed hack from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit nargs = len(args_w) fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, args_w[0]) elif nargs == 2: assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, args_w[0], args_w[1]) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) return code.fastcall_3(self.space, self, args_w[0], args_w[1], args_w[2]) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) return code.fastcall_4(self.space, self, args_w[0], args_w[1], args_w[2], args_w[3]) elif (nargs | PyCode.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) if nargs < 5: new_frame = self.space.createframe(code, self.w_func_globals, self) for i in funccallunrolling: if i < nargs: new_frame.locals_cells_stack_w[i] = args_w[i] > return new_frame.run() interpreter\function.py:118: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_extern_p...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1487]', line 1> at line 9 def run(self): """Start this frame's execution.""" if self.getcode().co_flags & pycode.CO_GENERATOR: from pypy.interpreter.generator import GeneratorIterator return GeneratorIterator(self) else: > return self.execute_frame() interpreter\pyframe.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_extern_p...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1487]', line 1> at line 9 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, executioncontext) except OperationError: raise except Exception as e: # general fall-back > raise self._convert_unexpected_exception(e) interpreter\pyframe.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_extern_p...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1487]', line 1> at line 9 e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def _convert_unexpected_exception(self, e): from pypy.interpreter import error > operr = error.get_converted_unexpected_exception(self.space, e) interpreter\pyframe.py:943: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_extern_p...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1487]', line 1> at line 9 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, > executioncontext) interpreter\pyframe.py:286: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_extern_p...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1487]', line 1> at line 9 pycode = <code object test_extern_python_1, file '[d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:1487]', line 1> next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def dispatch(self, pycode, next_instr, ec): # For the sequel, force 'next_instr' to be unsigned for performance next_instr = r_uint(next_instr) co_code = pycode.co_code try: while True: > next_instr = self.handle_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:64: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_extern_p...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1487]', line 1> at line 9 co_code = "|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00\xcc'\x00|\x01\x00\xc9\x01\x0...c0\x02t\x03\x00\x82\x01\x00\xcc\x15\x00\x88\x00\x00d\x1e\x00g\x01\x00k\x02\x00s\xd8\x02t\x03\x00\x82\x01\x00d\x00\x00S" next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def handle_bytecode(self, co_code, next_instr, ec): try: > next_instr = self.dispatch_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:71: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_extern_p...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1487]', line 1> at line 9 co_code = "|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00\xcc'\x00|\x01\x00\xc9\x01\x0...c0\x02t\x03\x00\x82\x01\x00\xcc\x15\x00\x88\x00\x00d\x1e\x00g\x01\x00k\x02\x00s\xd8\x02t\x03\x00\x82\x01\x00d\x00\x00S" next_instr = 18L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> @jit.unroll_safe def dispatch_bytecode(self, co_code, next_instr, ec): while True: self.last_instr = intmask(next_instr) if jit.we_are_jitted(): if self.debugdata: ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) else: # Only reload next_instr from last_instr when something that # can modify it actually ran (trace function or action # dispatcher). In the common case (no trace, positive ticker) # next_instr is unchanged and the round-trip is skipped. _d = self.debugdata if ec.space.reverse_debugging or ( _d is not None and _d.w_f_trace is not None) or ( not we_are_translated() and 'bytecode_only_trace' in ec.__dict__): ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) actionflag = ec.space.actionflag if actionflag.decrement_ticker(TICK_COUNTER_STEP) < 0: actionflag.action_dispatcher(ec, self) next_instr = r_uint(self.last_instr) opcode = ord(co_code[next_instr]) next_instr += 1 if opcode >= HAVE_ARGUMENT: lo = ord(co_code[next_instr]) hi = ord(co_code[next_instr+1]) next_instr += 2 oparg = (hi * 256) | lo else: oparg = 0 # note: the structure of the code here is such that it makes # (after translation) a big "if/elif" chain, which is then # turned into a switch(). while opcode == opcodedesc.EXTENDED_ARG.index: opcode = ord(co_code[next_instr]) if opcode < HAVE_ARGUMENT: raise BytecodeCorruption lo = ord(co_code[next_instr+1]) hi = ord(co_code[next_instr+2]) next_instr += 3 oparg = (oparg * 65536) | (hi * 256) | lo if opcode == opcodedesc.RETURN_VALUE.index: if not self.blockstack_non_empty(): self.frame_finished_execution = True # for generators raise Return w_returnvalue = self.popvalue() block = self.unrollstack(SReturnValue.kind) if block is None: self.pushvalue(w_returnvalue) raise Return else: unroller = SReturnValue(w_returnvalue) next_instr = block.handle(self, unroller) return next_instr # now inside a 'finally' block elif opcode == opcodedesc.END_FINALLY.index: unroller = self.end_finally() if isinstance(unroller, SuspendedUnroller): # go on unrolling the stack block = self.unrollstack(unroller.kind) if block is None: w_result = unroller.nomoreblocks() self.pushvalue(w_result) raise Return else: next_instr = block.handle(self, unroller) return next_instr elif opcode == opcodedesc.JUMP_ABSOLUTE.index: return self.jump_absolute(oparg, ec) elif opcode == opcodedesc.BREAK_LOOP.index: next_instr = self.BREAK_LOOP(oparg, next_instr) elif opcode == opcodedesc.CONTINUE_LOOP.index: return self.CONTINUE_LOOP(oparg, next_instr) elif opcode == opcodedesc.FOR_ITER.index: next_instr = self.FOR_ITER(oparg, next_instr) elif opcode == opcodedesc.JUMP_FORWARD.index: next_instr = self.JUMP_FORWARD(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_FALSE_OR_POP.index: next_instr = self.JUMP_IF_FALSE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_NOT_DEBUG.index: next_instr = self.JUMP_IF_NOT_DEBUG(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_TRUE_OR_POP.index: next_instr = self.JUMP_IF_TRUE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_FALSE.index: next_instr = self.POP_JUMP_IF_FALSE(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_TRUE.index: next_instr = self.POP_JUMP_IF_TRUE(oparg, next_instr) elif opcode == opcodedesc.BINARY_ADD.index: self.BINARY_ADD(oparg, next_instr) elif opcode == opcodedesc.BINARY_AND.index: self.BINARY_AND(oparg, next_instr) elif opcode == opcodedesc.BINARY_DIVIDE.index: self.BINARY_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_FLOOR_DIVIDE.index: self.BINARY_FLOOR_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_LSHIFT.index: self.BINARY_LSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_MODULO.index: self.BINARY_MODULO(oparg, next_instr) elif opcode == opcodedesc.BINARY_MULTIPLY.index: self.BINARY_MULTIPLY(oparg, next_instr) elif opcode == opcodedesc.BINARY_OR.index: self.BINARY_OR(oparg, next_instr) elif opcode == opcodedesc.BINARY_POWER.index: self.BINARY_POWER(oparg, next_instr) elif opcode == opcodedesc.BINARY_RSHIFT.index: self.BINARY_RSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBSCR.index: self.BINARY_SUBSCR(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBTRACT.index: self.BINARY_SUBTRACT(oparg, next_instr) elif opcode == opcodedesc.BINARY_TRUE_DIVIDE.index: self.BINARY_TRUE_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_XOR.index: self.BINARY_XOR(oparg, next_instr) elif opcode == opcodedesc.BUILD_CLASS.index: self.BUILD_CLASS(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST.index: self.BUILD_LIST(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST_FROM_ARG.index: self.BUILD_LIST_FROM_ARG(oparg, next_instr) elif opcode == opcodedesc.BUILD_MAP.index: self.BUILD_MAP(oparg, next_instr) elif opcode == opcodedesc.BUILD_SET.index: self.BUILD_SET(oparg, next_instr) elif opcode == opcodedesc.BUILD_SLICE.index: self.BUILD_SLICE(oparg, next_instr) elif opcode == opcodedesc.BUILD_TUPLE.index: self.BUILD_TUPLE(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION.index: self.CALL_FUNCTION(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_KW.index: self.CALL_FUNCTION_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR.index: self.CALL_FUNCTION_VAR(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR_KW.index: self.CALL_FUNCTION_VAR_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_METHOD.index: > self.CALL_METHOD(oparg, next_instr) interpreter\pyopcode.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ f = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_extern_p...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1487]', line 1> at line 9 oparg = 3, ignored = (18L,), n_args = 3, n_kwargs = 0, w_self = None @jit.unroll_safe def CALL_METHOD(f, oparg, *ignored): # opargs contains the arg, and kwarg count, excluding the implicit 'self' n_args = oparg & 0xff n_kwargs = (oparg >> 8) & 0xff w_self = f.peekvalue_maybe_none(n_args + (2 * n_kwargs)) n = n_args + (w_self is not None) if not n_kwargs: w_callable = f.peekvalue(n_args + (2 * n_kwargs) + 1) w_result = f.space.call_valuestack( > w_callable, n, f, methodcall=w_self is not None, dropvalues=n_args + 2) objspace\std\callmethod.py:96: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_extern_p...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1487]', line 1> at line 9 dropvalues = 5, methodcall = False def call_valuestack(self, w_func, nargs, frame, dropvalues, methodcall=False): # methodcall is only used for better error messages in argument.py from pypy.interpreter.function import Function, Method, is_builtin_code if frame.get_is_being_profiled() and is_builtin_code(w_func): # XXX: this code is copied&pasted :-( from the slow path below # call_valuestack(). args = frame.make_arguments(nargs) frame.dropvalues(dropvalues) return self.call_args_and_c_profile(frame, w_func, args) if not self.config.objspace.disable_call_speedhacks: # start of hack for performance if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: w_func = w_func.w_function # reuse callable stack place for w_inst frame.settopvalue(w_inst, nargs) nargs += 1 methodcall = True elif nargs > 0 and ( self.abstract_isinstance_w(frame.peekvalue(nargs-1), # :-( w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): return w_func.funccall_valuestack( > nargs, frame, methodcall=methodcall, dropvalues=dropvalues) interpreter\baseobjspace.py:1243: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_extern_p...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1487]', line 1> at line 9 dropvalues = 5, methodcall = False def funccall_valuestack(self, nargs, frame, dropvalues, methodcall=False): # speed hack # methodcall is only for better error messages from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit # if (jit.we_are_jitted() and code is self.space._code_of_sys_exc_info and nargs == 0): frame.dropvalues(dropvalues) from pypy.module.sys.vm import exc_info_direct return exc_info_direct(self.space, frame) # fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: f_0 = frame.peekvalue(0) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, f_0) elif nargs == 2: f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, f_1, f_0) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) frame.dropvalues(dropvalues) return code.fastcall_3(self.space, self, f_2, f_1, f_0) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) f_3 = frame.peekvalue(3) frame.dropvalues(dropvalues) return code.fastcall_4(self.space, self, f_3, f_2, f_1, f_0) elif (nargs | Code.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) return self._flat_pycall(code, nargs, frame, dropvalues) elif fast_natural_arity & Code.FLATPYCALL: natural_arity = fast_natural_arity & 0xff if natural_arity > nargs >= natural_arity - len(self.defs_w): assert isinstance(code, PyCode) return self._flat_pycall_defaults(code, nargs, frame, natural_arity - nargs, dropvalues) elif fast_natural_arity == Code.PASSTHROUGHARGS1 and nargs >= 1: assert isinstance(code, gateway.BuiltinCodePassThroughArguments1) w_obj = frame.peekvalue(nargs-1) args = frame.make_arguments(nargs-1) frame.dropvalues(dropvalues) return code.funcrun_obj(self, w_obj, args) args = frame.make_arguments(nargs, methodcall=methodcall) frame.dropvalues(dropvalues) > return self.call_args(args) interpreter\function.py:190: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('\n extern "Python" {\n int... }\n '), W_BytesObject('test_extern_python_1'), W_BytesObject('')]) def call_args(self, args): # delegate activation to code > w_res = self.getcode().funcrun(self, args) interpreter\function.py:68: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('\n extern "Python" {\n int... }\n '), W_BytesObject('test_extern_python_1'), W_BytesObject('')]) def funcrun(self, func, args): > return BuiltinCode.funcrun_obj(self, func, None, args) interpreter\gateway.py:781: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('\n extern "Python" {\n int... }\n '), W_BytesObject('test_extern_python_1'), W_BytesObject('')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: w_result = activation._run(space, scope_w) except DescrMismatch: if w_obj is not None: args = args.prepend(w_obj) return self._type_unwrap_mismatch(space, args) except Exception as e: > self.handle_exception(space, e) interpreter\gateway.py:795: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> space = StdObjSpace e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def handle_exception(self, space, e): try: if not we_are_translated(): raise raise e except OperationError: raise except Exception as e: # general fall-back from pypy.interpreter import error > raise error.get_converted_unexpected_exception(space, e) interpreter\gateway.py:819: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('\n extern "Python" {\n int... }\n '), W_BytesObject('test_extern_python_1'), W_BytesObject('')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: > w_result = activation._run(space, scope_w) interpreter\gateway.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinActivation_UwS_ObjSpace_text_text_text_W_Root_W_Root_W_Root_int_W_Root object at 0x000002791c13af38> space = StdObjSpace scope_w = [W_BytesObject('\n extern "Python" {\n int bar(int, i... int bok(void);\n ...boz(void);\n }\n '), W_BytesObject('test_extern_python_1'), W_BytesObject(''), None, None, None, ...] def _run(self, space, scope_w): > return self.behavior(space, space.text_w(scope_w[0]), space.text_w(scope_w[1]), space.text_w(scope_w[2]), scope_w[3], scope_w[4], scope_w[5], space.gateway_int_w(scope_w[6]), scope_w[7]) <3152-codegen d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\rpython\tool\sourcetools.py:200>:3: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace cdef = '\n extern "Python" {\n int bar(int, int);\n void baz(int, int);\n int bok(void);\n void boz(void);\n }\n ' module_name = '_CFFI_test_extern_python_1', source = '', w_includes = None w_extra_source = None, w_min_version = None, packed = 0 w_extra_compile_args = None @unwrap_spec(cdef='text', module_name='text', source='text', packed=int) def prepare(space, cdef, module_name, source, w_includes=None, w_extra_source=None, w_min_version=None, packed=False, w_extra_compile_args=None): try: import cffi from cffi import FFI # <== the system one, which from cffi import recompiler # needs to be at least cffi 1.0.4 from cffi import ffiplatform except ImportError: pytest.skip("system cffi module not found or older than 1.0.0") if w_min_version is None: min_version = (1, 4, 0) else: min_version = tuple(space.unwrap(w_min_version)) if cffi.__version_info__ < min_version: pytest.skip("system cffi module needs to be at least %s, got %s" % ( min_version, cffi.__version_info__)) space.appexec([], """(): import _cffi_backend # force it to be initialized """) includes = [] if w_includes: includes += space.unpackiterable(w_includes) assert module_name.startswith('test_') module_name = '_CFFI_' + module_name rdir = udir.ensure('recompiler', dir=1) rdir.join('Python.h').write( '#include <stdio.h>\n' '#define PYPY_VERSION XX\n' '#define PyMODINIT_FUNC /*exported*/ void\n' ) path = module_name.replace('.', os.sep) if '.' in module_name: subrdir = rdir.join(module_name[:module_name.index('.')]) os.mkdir(str(subrdir)) else: subrdir = rdir c_file = str(rdir.join('%s.c' % path)) ffi = FFI() for include_ffi_object in includes: ffi.include(include_ffi_object._test_recompiler_source_ffi) ffi.cdef(cdef, packed=packed) ffi.set_source(module_name, source) ffi.emit_c_code(c_file) base_module_name = module_name.split('.')[-1] sources = [] if w_extra_source is not None: sources.append(space.str_w(w_extra_source)) kwargs = {} # GCC 14 promotes -Wincompatible-pointer-types from a warning to an error # by default, which breaks cffi's intentionally-mismatched field-check # probes (e.g. test_misdeclared_field_1). Keep it a warning so the module # compiles and cffi's runtime checks can run. extra = ['-Wno-error=incompatible-pointer-types'] if w_extra_compile_args is not None: extra = extra + space.unwrap(w_extra_compile_args) kwargs['extra_compile_args'] = extra ext = ffiplatform.get_extension(c_file, module_name, include_dirs=[str(rdir)], export_symbols=['_cffi_pypyinit_' + base_module_name], sources=sources, **kwargs) > ffiplatform.compile(str(rdir), ext) module\_cffi_backend\test\test_recompiler.py:86: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x0000027928eb31e0> compiler_verbose = 0, debug = None def compile(tmpdir, ext, compiler_verbose=0, debug=None): """Compile a C extension module using distutils.""" saved_environ = os.environ.copy() try: > outputfilename = _build(tmpdir, ext, compiler_verbose, debug) d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x0000027928eb31e0> compiler_verbose = 0, debug = 0 def _build(tmpdir, ext, compiler_verbose=0, debug=None): # XXX compact but horrible :-( from cffi._shimmed_dist_utils import Distribution, CompileError, LinkError, set_threshold, set_verbosity dist = Distribution({'ext_modules': [ext]}) dist.parse_config_files() options = dist.get_option_dict('build_ext') if debug is None: debug = sys.flags.debug options['debug'] = ('ffiplatform', debug) options['force'] = ('ffiplatform', True) options['build_lib'] = ('ffiplatform', tmpdir) options['build_temp'] = ('ffiplatform', tmpdir) # try: old_level = set_threshold(0) or 0 try: set_verbosity(compiler_verbose) dist.run_command('build_ext') cmd_obj = dist.get_command_obj('build_ext') [soname] = cmd_obj.get_outputs() finally: set_threshold(old_level) except (CompileError, LinkError) as e: > raise VerificationError('%s: %s' % (e.__class__.__name__, e)) E VerificationError: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2 d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:54: VerificationError ---------------------------- Captured stdout call ----------------------------- generating d:\systemtemp\pytest\usession-main-595\recompiler\_CFFI_test_extern_python_1.c ---------------------------- Captured stderr call ----------------------------- cl : Command line error D8021 : invalid numeric argument '/Wno-error=incompatible-pointer-types' _______________ AppTestRecompiler.test_extern_python_bogus_name _______________ self = <CallInfo when='call' exception: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2> func = <function <lambda> at 0x000002792cd7fe20>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ..\_pytest\runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ..\_pytest\runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_extern_python_bogus_name'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_extern_python_bogus_name'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ..\_pytest\vendored_packages\pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00000279153616a8> hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_extern_python_bogus_name'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_extern_python_bogus_name'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ..\_pytest\vendored_packages\pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_extern_python_bogus_name'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_extern_python_bogus_name'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ..\_pytest\vendored_packages\pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_extern_python_bogus_name'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791fbbf290> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...bogus_name'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792162f6e0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792162f6e0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...bogus_name'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_extern_python_bogus_name'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791fbbf240> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...bogus_name'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792162e920> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792162e920> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...bogus_name'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_extern_python_bogus_name'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ..\_pytest\vendored_packages\pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_extern_python_bogus_name'> def pytest_runtest_call(item): try: > item.runtest() ..\_pytest\runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_extern_python_bogus_name'> def runtest(self): target = self.obj if self.config.option.runappdirect: return target() space = target.im_self.space filename = self._getdynfilename(target) func = app2interp_temp(target.im_func, filename=filename) w_instance = self.parent.w_instance > self.execute_appex(space, func, space, w_instance) tool\pytest\apptest.py:89: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_extern_python_bogus_name'>, space = StdObjSpace target = <function test_extern_python_bogus_name at 0x000002792cd7ff88> args = (StdObjSpace, <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>) def execute_appex(self, space, target, *args): self.space = space try: > target(*args) tool\pytest\apptest.py:30: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) w_func = <Function test_extern_python_bogus_name> args = <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8> def appcaller(space, *args_w): if not isinstance(space, ObjSpace): raise TypeError("first argument must be a space instance.") # the last argument can be an Arguments w_func = self.wget(space, name) if not args_w: return space.call_function(w_func) else: args = args_w[-1] assert args is not None if not isinstance(args, Arguments): > return space.call_function(w_func, *args_w) interpreter\gateway.py:1227: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <Function test_extern_python_bogus_name> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) nargs = 1, Function = <class 'pypy.interpreter.function.Function'> Method = <class 'pypy.interpreter.function.Method'> def call_function(self, w_func, *args_w): nargs = len(args_w) # used for pruning funccall versions if not self.config.objspace.disable_call_speedhacks and nargs < 5: # start of hack for performance from pypy.interpreter.function import Function, Method if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: if nargs < 4: func = w_func.w_function if isinstance(func, Function): return func.funccall(w_inst, *args_w) elif args_w and ( self.abstract_isinstance_w(args_w[0], w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): > return w_func.funccall(*args_w) interpreter\baseobjspace.py:1210: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <Function test_extern_python_bogus_name> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) gateway = <module 'pypy.interpreter.gateway' from 'd:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\interpreter\\gateway.pyc'> PyCode = <class 'pypy.interpreter.pycode.PyCode'> code = <code object test_extern_python_bogus_name, file '[d:\pypy_stuff\buildbot64\sl...-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:1546]', line 1> def funccall(self, *args_w): # speed hack from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit nargs = len(args_w) fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, args_w[0]) elif nargs == 2: assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, args_w[0], args_w[1]) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) return code.fastcall_3(self.space, self, args_w[0], args_w[1], args_w[2]) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) return code.fastcall_4(self.space, self, args_w[0], args_w[1], args_w[2], args_w[3]) elif (nargs | PyCode.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) if nargs < 5: new_frame = self.space.createframe(code, self.w_func_globals, self) for i in funccallunrolling: if i < nargs: new_frame.locals_cells_stack_w[i] = args_w[i] > return new_frame.run() interpreter\function.py:118: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_extern_p...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1546]', line 1> at line 4 def run(self): """Start this frame's execution.""" if self.getcode().co_flags & pycode.CO_GENERATOR: from pypy.interpreter.generator import GeneratorIterator return GeneratorIterator(self) else: > return self.execute_frame() interpreter\pyframe.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_extern_p...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1546]', line 1> at line 4 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, executioncontext) except OperationError: raise except Exception as e: # general fall-back > raise self._convert_unexpected_exception(e) interpreter\pyframe.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_extern_p...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1546]', line 1> at line 4 e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def _convert_unexpected_exception(self, e): from pypy.interpreter import error > operr = error.get_converted_unexpected_exception(self.space, e) interpreter\pyframe.py:943: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_extern_p...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1546]', line 1> at line 4 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, > executioncontext) interpreter\pyframe.py:286: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_extern_p...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1546]', line 1> at line 4 pycode = <code object test_extern_python_bogus_name, file '[d:\pypy_stuff\buildbot64\sl...-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:1546]', line 1> next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def dispatch(self, pycode, next_instr, ec): # For the sequel, force 'next_instr' to be unsigned for performance next_instr = r_uint(next_instr) co_code = pycode.co_code try: while True: > next_instr = self.handle_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:64: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_extern_p...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1546]', line 1> at line 4 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x01\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00d\x03\x00\x84\x00\x00}\x03\x0...x06\x00|\x06\x00|\x06\x00_\n\x00t\x01\x00t\x08\x00|\x01\x00\xc9\x03\x00\xca\x00\x00|\x06\x00\x83\x03\x00\x01d\x00\x00S' next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def handle_bytecode(self, co_code, next_instr, ec): try: > next_instr = self.dispatch_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:71: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_extern_p...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1546]', line 1> at line 4 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x01\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00d\x03\x00\x84\x00\x00}\x03\x0...x06\x00|\x06\x00|\x06\x00_\n\x00t\x01\x00t\x08\x00|\x01\x00\xc9\x03\x00\xca\x00\x00|\x06\x00\x83\x03\x00\x01d\x00\x00S' next_instr = 18L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> @jit.unroll_safe def dispatch_bytecode(self, co_code, next_instr, ec): while True: self.last_instr = intmask(next_instr) if jit.we_are_jitted(): if self.debugdata: ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) else: # Only reload next_instr from last_instr when something that # can modify it actually ran (trace function or action # dispatcher). In the common case (no trace, positive ticker) # next_instr is unchanged and the round-trip is skipped. _d = self.debugdata if ec.space.reverse_debugging or ( _d is not None and _d.w_f_trace is not None) or ( not we_are_translated() and 'bytecode_only_trace' in ec.__dict__): ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) actionflag = ec.space.actionflag if actionflag.decrement_ticker(TICK_COUNTER_STEP) < 0: actionflag.action_dispatcher(ec, self) next_instr = r_uint(self.last_instr) opcode = ord(co_code[next_instr]) next_instr += 1 if opcode >= HAVE_ARGUMENT: lo = ord(co_code[next_instr]) hi = ord(co_code[next_instr+1]) next_instr += 2 oparg = (hi * 256) | lo else: oparg = 0 # note: the structure of the code here is such that it makes # (after translation) a big "if/elif" chain, which is then # turned into a switch(). while opcode == opcodedesc.EXTENDED_ARG.index: opcode = ord(co_code[next_instr]) if opcode < HAVE_ARGUMENT: raise BytecodeCorruption lo = ord(co_code[next_instr+1]) hi = ord(co_code[next_instr+2]) next_instr += 3 oparg = (oparg * 65536) | (hi * 256) | lo if opcode == opcodedesc.RETURN_VALUE.index: if not self.blockstack_non_empty(): self.frame_finished_execution = True # for generators raise Return w_returnvalue = self.popvalue() block = self.unrollstack(SReturnValue.kind) if block is None: self.pushvalue(w_returnvalue) raise Return else: unroller = SReturnValue(w_returnvalue) next_instr = block.handle(self, unroller) return next_instr # now inside a 'finally' block elif opcode == opcodedesc.END_FINALLY.index: unroller = self.end_finally() if isinstance(unroller, SuspendedUnroller): # go on unrolling the stack block = self.unrollstack(unroller.kind) if block is None: w_result = unroller.nomoreblocks() self.pushvalue(w_result) raise Return else: next_instr = block.handle(self, unroller) return next_instr elif opcode == opcodedesc.JUMP_ABSOLUTE.index: return self.jump_absolute(oparg, ec) elif opcode == opcodedesc.BREAK_LOOP.index: next_instr = self.BREAK_LOOP(oparg, next_instr) elif opcode == opcodedesc.CONTINUE_LOOP.index: return self.CONTINUE_LOOP(oparg, next_instr) elif opcode == opcodedesc.FOR_ITER.index: next_instr = self.FOR_ITER(oparg, next_instr) elif opcode == opcodedesc.JUMP_FORWARD.index: next_instr = self.JUMP_FORWARD(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_FALSE_OR_POP.index: next_instr = self.JUMP_IF_FALSE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_NOT_DEBUG.index: next_instr = self.JUMP_IF_NOT_DEBUG(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_TRUE_OR_POP.index: next_instr = self.JUMP_IF_TRUE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_FALSE.index: next_instr = self.POP_JUMP_IF_FALSE(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_TRUE.index: next_instr = self.POP_JUMP_IF_TRUE(oparg, next_instr) elif opcode == opcodedesc.BINARY_ADD.index: self.BINARY_ADD(oparg, next_instr) elif opcode == opcodedesc.BINARY_AND.index: self.BINARY_AND(oparg, next_instr) elif opcode == opcodedesc.BINARY_DIVIDE.index: self.BINARY_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_FLOOR_DIVIDE.index: self.BINARY_FLOOR_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_LSHIFT.index: self.BINARY_LSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_MODULO.index: self.BINARY_MODULO(oparg, next_instr) elif opcode == opcodedesc.BINARY_MULTIPLY.index: self.BINARY_MULTIPLY(oparg, next_instr) elif opcode == opcodedesc.BINARY_OR.index: self.BINARY_OR(oparg, next_instr) elif opcode == opcodedesc.BINARY_POWER.index: self.BINARY_POWER(oparg, next_instr) elif opcode == opcodedesc.BINARY_RSHIFT.index: self.BINARY_RSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBSCR.index: self.BINARY_SUBSCR(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBTRACT.index: self.BINARY_SUBTRACT(oparg, next_instr) elif opcode == opcodedesc.BINARY_TRUE_DIVIDE.index: self.BINARY_TRUE_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_XOR.index: self.BINARY_XOR(oparg, next_instr) elif opcode == opcodedesc.BUILD_CLASS.index: self.BUILD_CLASS(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST.index: self.BUILD_LIST(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST_FROM_ARG.index: self.BUILD_LIST_FROM_ARG(oparg, next_instr) elif opcode == opcodedesc.BUILD_MAP.index: self.BUILD_MAP(oparg, next_instr) elif opcode == opcodedesc.BUILD_SET.index: self.BUILD_SET(oparg, next_instr) elif opcode == opcodedesc.BUILD_SLICE.index: self.BUILD_SLICE(oparg, next_instr) elif opcode == opcodedesc.BUILD_TUPLE.index: self.BUILD_TUPLE(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION.index: self.CALL_FUNCTION(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_KW.index: self.CALL_FUNCTION_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR.index: self.CALL_FUNCTION_VAR(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR_KW.index: self.CALL_FUNCTION_VAR_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_METHOD.index: > self.CALL_METHOD(oparg, next_instr) interpreter\pyopcode.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ f = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_extern_p...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1546]', line 1> at line 4 oparg = 3, ignored = (18L,), n_args = 3, n_kwargs = 0, w_self = None @jit.unroll_safe def CALL_METHOD(f, oparg, *ignored): # opargs contains the arg, and kwarg count, excluding the implicit 'self' n_args = oparg & 0xff n_kwargs = (oparg >> 8) & 0xff w_self = f.peekvalue_maybe_none(n_args + (2 * n_kwargs)) n = n_args + (w_self is not None) if not n_kwargs: w_callable = f.peekvalue(n_args + (2 * n_kwargs) + 1) w_result = f.space.call_valuestack( > w_callable, n, f, methodcall=w_self is not None, dropvalues=n_args + 2) objspace\std\callmethod.py:96: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_extern_p...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1546]', line 1> at line 4 dropvalues = 5, methodcall = False def call_valuestack(self, w_func, nargs, frame, dropvalues, methodcall=False): # methodcall is only used for better error messages in argument.py from pypy.interpreter.function import Function, Method, is_builtin_code if frame.get_is_being_profiled() and is_builtin_code(w_func): # XXX: this code is copied&pasted :-( from the slow path below # call_valuestack(). args = frame.make_arguments(nargs) frame.dropvalues(dropvalues) return self.call_args_and_c_profile(frame, w_func, args) if not self.config.objspace.disable_call_speedhacks: # start of hack for performance if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: w_func = w_func.w_function # reuse callable stack place for w_inst frame.settopvalue(w_inst, nargs) nargs += 1 methodcall = True elif nargs > 0 and ( self.abstract_isinstance_w(frame.peekvalue(nargs-1), # :-( w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): return w_func.funccall_valuestack( > nargs, frame, methodcall=methodcall, dropvalues=dropvalues) interpreter\baseobjspace.py:1243: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_extern_p...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1546]', line 1> at line 4 dropvalues = 5, methodcall = False def funccall_valuestack(self, nargs, frame, dropvalues, methodcall=False): # speed hack # methodcall is only for better error messages from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit # if (jit.we_are_jitted() and code is self.space._code_of_sys_exc_info and nargs == 0): frame.dropvalues(dropvalues) from pypy.module.sys.vm import exc_info_direct return exc_info_direct(self.space, frame) # fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: f_0 = frame.peekvalue(0) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, f_0) elif nargs == 2: f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, f_1, f_0) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) frame.dropvalues(dropvalues) return code.fastcall_3(self.space, self, f_2, f_1, f_0) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) f_3 = frame.peekvalue(3) frame.dropvalues(dropvalues) return code.fastcall_4(self.space, self, f_3, f_2, f_1, f_0) elif (nargs | Code.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) return self._flat_pycall(code, nargs, frame, dropvalues) elif fast_natural_arity & Code.FLATPYCALL: natural_arity = fast_natural_arity & 0xff if natural_arity > nargs >= natural_arity - len(self.defs_w): assert isinstance(code, PyCode) return self._flat_pycall_defaults(code, nargs, frame, natural_arity - nargs, dropvalues) elif fast_natural_arity == Code.PASSTHROUGHARGS1 and nargs >= 1: assert isinstance(code, gateway.BuiltinCodePassThroughArguments1) w_obj = frame.peekvalue(nargs-1) args = frame.make_arguments(nargs-1) frame.dropvalues(dropvalues) return code.funcrun_obj(self, w_obj, args) args = frame.make_arguments(nargs, methodcall=methodcall) frame.dropvalues(dropvalues) > return self.call_args(args) interpreter\function.py:190: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('int abc;'), W_BytesObject('test_extern_python_bogus_name'), W_BytesObject('int abc;')]) def call_args(self, args): # delegate activation to code > w_res = self.getcode().funcrun(self, args) interpreter\function.py:68: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('int abc;'), W_BytesObject('test_extern_python_bogus_name'), W_BytesObject('int abc;')]) def funcrun(self, func, args): > return BuiltinCode.funcrun_obj(self, func, None, args) interpreter\gateway.py:781: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('int abc;'), W_BytesObject('test_extern_python_bogus_name'), W_BytesObject('int abc;')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: w_result = activation._run(space, scope_w) except DescrMismatch: if w_obj is not None: args = args.prepend(w_obj) return self._type_unwrap_mismatch(space, args) except Exception as e: > self.handle_exception(space, e) interpreter\gateway.py:795: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> space = StdObjSpace e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def handle_exception(self, space, e): try: if not we_are_translated(): raise raise e except OperationError: raise except Exception as e: # general fall-back from pypy.interpreter import error > raise error.get_converted_unexpected_exception(space, e) interpreter\gateway.py:819: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('int abc;'), W_BytesObject('test_extern_python_bogus_name'), W_BytesObject('int abc;')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: > w_result = activation._run(space, scope_w) interpreter\gateway.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinActivation_UwS_ObjSpace_text_text_text_W_Root_W_Root_W_Root_int_W_Root object at 0x000002791c13af38> space = StdObjSpace scope_w = [W_BytesObject('int abc;'), W_BytesObject('test_extern_python_bogus_name'), W_BytesObject('int abc;'), None, None, None, ...] def _run(self, space, scope_w): > return self.behavior(space, space.text_w(scope_w[0]), space.text_w(scope_w[1]), space.text_w(scope_w[2]), scope_w[3], scope_w[4], scope_w[5], space.gateway_int_w(scope_w[6]), scope_w[7]) <3152-codegen d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\rpython\tool\sourcetools.py:200>:3: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace, cdef = 'int abc;' module_name = '_CFFI_test_extern_python_bogus_name', source = 'int abc;' w_includes = None, w_extra_source = None, w_min_version = None, packed = 0 w_extra_compile_args = None @unwrap_spec(cdef='text', module_name='text', source='text', packed=int) def prepare(space, cdef, module_name, source, w_includes=None, w_extra_source=None, w_min_version=None, packed=False, w_extra_compile_args=None): try: import cffi from cffi import FFI # <== the system one, which from cffi import recompiler # needs to be at least cffi 1.0.4 from cffi import ffiplatform except ImportError: pytest.skip("system cffi module not found or older than 1.0.0") if w_min_version is None: min_version = (1, 4, 0) else: min_version = tuple(space.unwrap(w_min_version)) if cffi.__version_info__ < min_version: pytest.skip("system cffi module needs to be at least %s, got %s" % ( min_version, cffi.__version_info__)) space.appexec([], """(): import _cffi_backend # force it to be initialized """) includes = [] if w_includes: includes += space.unpackiterable(w_includes) assert module_name.startswith('test_') module_name = '_CFFI_' + module_name rdir = udir.ensure('recompiler', dir=1) rdir.join('Python.h').write( '#include <stdio.h>\n' '#define PYPY_VERSION XX\n' '#define PyMODINIT_FUNC /*exported*/ void\n' ) path = module_name.replace('.', os.sep) if '.' in module_name: subrdir = rdir.join(module_name[:module_name.index('.')]) os.mkdir(str(subrdir)) else: subrdir = rdir c_file = str(rdir.join('%s.c' % path)) ffi = FFI() for include_ffi_object in includes: ffi.include(include_ffi_object._test_recompiler_source_ffi) ffi.cdef(cdef, packed=packed) ffi.set_source(module_name, source) ffi.emit_c_code(c_file) base_module_name = module_name.split('.')[-1] sources = [] if w_extra_source is not None: sources.append(space.str_w(w_extra_source)) kwargs = {} # GCC 14 promotes -Wincompatible-pointer-types from a warning to an error # by default, which breaks cffi's intentionally-mismatched field-check # probes (e.g. test_misdeclared_field_1). Keep it a warning so the module # compiles and cffi's runtime checks can run. extra = ['-Wno-error=incompatible-pointer-types'] if w_extra_compile_args is not None: extra = extra + space.unwrap(w_extra_compile_args) kwargs['extra_compile_args'] = extra ext = ffiplatform.get_extension(c_file, module_name, include_dirs=[str(rdir)], export_symbols=['_cffi_pypyinit_' + base_module_name], sources=sources, **kwargs) > ffiplatform.compile(str(rdir), ext) module\_cffi_backend\test\test_recompiler.py:86: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x0000027929c3e6a0> compiler_verbose = 0, debug = None def compile(tmpdir, ext, compiler_verbose=0, debug=None): """Compile a C extension module using distutils.""" saved_environ = os.environ.copy() try: > outputfilename = _build(tmpdir, ext, compiler_verbose, debug) d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x0000027929c3e6a0> compiler_verbose = 0, debug = 0 def _build(tmpdir, ext, compiler_verbose=0, debug=None): # XXX compact but horrible :-( from cffi._shimmed_dist_utils import Distribution, CompileError, LinkError, set_threshold, set_verbosity dist = Distribution({'ext_modules': [ext]}) dist.parse_config_files() options = dist.get_option_dict('build_ext') if debug is None: debug = sys.flags.debug options['debug'] = ('ffiplatform', debug) options['force'] = ('ffiplatform', True) options['build_lib'] = ('ffiplatform', tmpdir) options['build_temp'] = ('ffiplatform', tmpdir) # try: old_level = set_threshold(0) or 0 try: set_verbosity(compiler_verbose) dist.run_command('build_ext') cmd_obj = dist.get_command_obj('build_ext') [soname] = cmd_obj.get_outputs() finally: set_threshold(old_level) except (CompileError, LinkError) as e: > raise VerificationError('%s: %s' % (e.__class__.__name__, e)) E VerificationError: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2 d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:54: VerificationError ---------------------------- Captured stdout call ----------------------------- generating d:\systemtemp\pytest\usession-main-595\recompiler\_CFFI_test_extern_python_bogus_name.c ---------------------------- Captured stderr call ----------------------------- d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\cparser.py:165: UserWarning: Global variable 'abc' in cdef(): for consistency with C it should have a storage class specifier (usually 'extern') "(usually 'extern')" % (decl.name,)) cl : Command line error D8021 : invalid numeric argument '/Wno-error=incompatible-pointer-types' ___________ AppTestRecompiler.test_extern_python_bogus_result_type ____________ self = <CallInfo when='call' exception: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2> func = <function <lambda> at 0x000002792d5b6d40>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ..\_pytest\runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ..\_pytest\runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_extern_python_bogus_result_type...ll__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_extern_python_bogus_result_type'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ..\_pytest\vendored_packages\pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00000279153616a8> hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_extern_python_bogus_result_type...ll__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_extern_python_bogus_result_type'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ..\_pytest\vendored_packages\pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_extern_python_bogus_result_type...ll__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_extern_python_bogus_result_type'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ..\_pytest\vendored_packages\pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_extern_python_bogus_result_type'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791ee11dd0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...esult_type'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792b2813a0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792b2813a0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...esult_type'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_extern_python_bogus_result_type'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791ee11d80> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...esult_type'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792b281360> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792b281360> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...esult_type'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_extern_python_bogus_result_type'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ..\_pytest\vendored_packages\pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_extern_python_bogus_result_type'> def pytest_runtest_call(item): try: > item.runtest() ..\_pytest\runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_extern_python_bogus_result_type'> def runtest(self): target = self.obj if self.config.option.runappdirect: return target() space = target.im_self.space filename = self._getdynfilename(target) func = app2interp_temp(target.im_func, filename=filename) w_instance = self.parent.w_instance > self.execute_appex(space, func, space, w_instance) tool\pytest\apptest.py:89: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_extern_python_bogus_result_type'> space = StdObjSpace target = <function test_extern_python_bogus_result_type at 0x000002792d5b6db8> args = (StdObjSpace, <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>) def execute_appex(self, space, target, *args): self.space = space try: > target(*args) tool\pytest\apptest.py:30: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) w_func = <Function test_extern_python_bogus_result_type> args = <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8> def appcaller(space, *args_w): if not isinstance(space, ObjSpace): raise TypeError("first argument must be a space instance.") # the last argument can be an Arguments w_func = self.wget(space, name) if not args_w: return space.call_function(w_func) else: args = args_w[-1] assert args is not None if not isinstance(args, Arguments): > return space.call_function(w_func, *args_w) interpreter\gateway.py:1227: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <Function test_extern_python_bogus_result_type> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) nargs = 1, Function = <class 'pypy.interpreter.function.Function'> Method = <class 'pypy.interpreter.function.Method'> def call_function(self, w_func, *args_w): nargs = len(args_w) # used for pruning funccall versions if not self.config.objspace.disable_call_speedhacks and nargs < 5: # start of hack for performance from pypy.interpreter.function import Function, Method if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: if nargs < 4: func = w_func.w_function if isinstance(func, Function): return func.funccall(w_inst, *args_w) elif args_w and ( self.abstract_isinstance_w(args_w[0], w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): > return w_func.funccall(*args_w) interpreter\baseobjspace.py:1210: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <Function test_extern_python_bogus_result_type> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) gateway = <module 'pypy.interpreter.gateway' from 'd:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\interpreter\\gateway.pyc'> PyCode = <class 'pypy.interpreter.pycode.PyCode'> code = <code object test_extern_python_bogus_result_type, file '[d:\pypy_stuff\buildb...-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:1570]', line 1> def funccall(self, *args_w): # speed hack from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit nargs = len(args_w) fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, args_w[0]) elif nargs == 2: assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, args_w[0], args_w[1]) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) return code.fastcall_3(self.space, self, args_w[0], args_w[1], args_w[2]) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) return code.fastcall_4(self.space, self, args_w[0], args_w[1], args_w[2], args_w[3]) elif (nargs | PyCode.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) if nargs < 5: new_frame = self.space.createframe(code, self.w_func_globals, self) for i in funccallunrolling: if i < nargs: new_frame.locals_cells_stack_w[i] = args_w[i] > return new_frame.run() interpreter\function.py:118: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_extern_p...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1570]', line 1> at line 4 def run(self): """Start this frame's execution.""" if self.getcode().co_flags & pycode.CO_GENERATOR: from pypy.interpreter.generator import GeneratorIterator return GeneratorIterator(self) else: > return self.execute_frame() interpreter\pyframe.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_extern_p...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1570]', line 1> at line 4 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, executioncontext) except OperationError: raise except Exception as e: # general fall-back > raise self._convert_unexpected_exception(e) interpreter\pyframe.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_extern_p...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1570]', line 1> at line 4 e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def _convert_unexpected_exception(self, e): from pypy.interpreter import error > operr = error.get_converted_unexpected_exception(self.space, e) interpreter\pyframe.py:943: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_extern_p...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1570]', line 1> at line 4 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, > executioncontext) interpreter\pyframe.py:286: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_extern_p...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1570]', line 1> at line 4 pycode = <code object test_extern_python_bogus_result_type, file '[d:\pypy_stuff\buildb...-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:1570]', line 1> next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def dispatch(self, pycode, next_instr, ec): # For the sequel, force 'next_instr' to be unsigned for performance next_instr = r_uint(next_instr) co_code = pycode.co_code try: while True: > next_instr = self.handle_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:64: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_extern_p...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1570]', line 1> at line 4 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00|\x01\x00\xc9\x01\x00\xca\x00...0\xc9\x05\x00\xca\x00\x00d\x06\x00|\x03\x00f\x01\x00\x16d\x07\x00\x17k\x02\x00s\x8f\x00t\x04\x00\x82\x01\x00d\x00\x00S' next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def handle_bytecode(self, co_code, next_instr, ec): try: > next_instr = self.dispatch_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:71: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_extern_p...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1570]', line 1> at line 4 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00|\x01\x00\xc9\x01\x00\xca\x00...0\xc9\x05\x00\xca\x00\x00d\x06\x00|\x03\x00f\x01\x00\x16d\x07\x00\x17k\x02\x00s\x8f\x00t\x04\x00\x82\x01\x00d\x00\x00S' next_instr = 18L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> @jit.unroll_safe def dispatch_bytecode(self, co_code, next_instr, ec): while True: self.last_instr = intmask(next_instr) if jit.we_are_jitted(): if self.debugdata: ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) else: # Only reload next_instr from last_instr when something that # can modify it actually ran (trace function or action # dispatcher). In the common case (no trace, positive ticker) # next_instr is unchanged and the round-trip is skipped. _d = self.debugdata if ec.space.reverse_debugging or ( _d is not None and _d.w_f_trace is not None) or ( not we_are_translated() and 'bytecode_only_trace' in ec.__dict__): ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) actionflag = ec.space.actionflag if actionflag.decrement_ticker(TICK_COUNTER_STEP) < 0: actionflag.action_dispatcher(ec, self) next_instr = r_uint(self.last_instr) opcode = ord(co_code[next_instr]) next_instr += 1 if opcode >= HAVE_ARGUMENT: lo = ord(co_code[next_instr]) hi = ord(co_code[next_instr+1]) next_instr += 2 oparg = (hi * 256) | lo else: oparg = 0 # note: the structure of the code here is such that it makes # (after translation) a big "if/elif" chain, which is then # turned into a switch(). while opcode == opcodedesc.EXTENDED_ARG.index: opcode = ord(co_code[next_instr]) if opcode < HAVE_ARGUMENT: raise BytecodeCorruption lo = ord(co_code[next_instr+1]) hi = ord(co_code[next_instr+2]) next_instr += 3 oparg = (oparg * 65536) | (hi * 256) | lo if opcode == opcodedesc.RETURN_VALUE.index: if not self.blockstack_non_empty(): self.frame_finished_execution = True # for generators raise Return w_returnvalue = self.popvalue() block = self.unrollstack(SReturnValue.kind) if block is None: self.pushvalue(w_returnvalue) raise Return else: unroller = SReturnValue(w_returnvalue) next_instr = block.handle(self, unroller) return next_instr # now inside a 'finally' block elif opcode == opcodedesc.END_FINALLY.index: unroller = self.end_finally() if isinstance(unroller, SuspendedUnroller): # go on unrolling the stack block = self.unrollstack(unroller.kind) if block is None: w_result = unroller.nomoreblocks() self.pushvalue(w_result) raise Return else: next_instr = block.handle(self, unroller) return next_instr elif opcode == opcodedesc.JUMP_ABSOLUTE.index: return self.jump_absolute(oparg, ec) elif opcode == opcodedesc.BREAK_LOOP.index: next_instr = self.BREAK_LOOP(oparg, next_instr) elif opcode == opcodedesc.CONTINUE_LOOP.index: return self.CONTINUE_LOOP(oparg, next_instr) elif opcode == opcodedesc.FOR_ITER.index: next_instr = self.FOR_ITER(oparg, next_instr) elif opcode == opcodedesc.JUMP_FORWARD.index: next_instr = self.JUMP_FORWARD(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_FALSE_OR_POP.index: next_instr = self.JUMP_IF_FALSE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_NOT_DEBUG.index: next_instr = self.JUMP_IF_NOT_DEBUG(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_TRUE_OR_POP.index: next_instr = self.JUMP_IF_TRUE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_FALSE.index: next_instr = self.POP_JUMP_IF_FALSE(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_TRUE.index: next_instr = self.POP_JUMP_IF_TRUE(oparg, next_instr) elif opcode == opcodedesc.BINARY_ADD.index: self.BINARY_ADD(oparg, next_instr) elif opcode == opcodedesc.BINARY_AND.index: self.BINARY_AND(oparg, next_instr) elif opcode == opcodedesc.BINARY_DIVIDE.index: self.BINARY_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_FLOOR_DIVIDE.index: self.BINARY_FLOOR_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_LSHIFT.index: self.BINARY_LSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_MODULO.index: self.BINARY_MODULO(oparg, next_instr) elif opcode == opcodedesc.BINARY_MULTIPLY.index: self.BINARY_MULTIPLY(oparg, next_instr) elif opcode == opcodedesc.BINARY_OR.index: self.BINARY_OR(oparg, next_instr) elif opcode == opcodedesc.BINARY_POWER.index: self.BINARY_POWER(oparg, next_instr) elif opcode == opcodedesc.BINARY_RSHIFT.index: self.BINARY_RSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBSCR.index: self.BINARY_SUBSCR(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBTRACT.index: self.BINARY_SUBTRACT(oparg, next_instr) elif opcode == opcodedesc.BINARY_TRUE_DIVIDE.index: self.BINARY_TRUE_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_XOR.index: self.BINARY_XOR(oparg, next_instr) elif opcode == opcodedesc.BUILD_CLASS.index: self.BUILD_CLASS(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST.index: self.BUILD_LIST(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST_FROM_ARG.index: self.BUILD_LIST_FROM_ARG(oparg, next_instr) elif opcode == opcodedesc.BUILD_MAP.index: self.BUILD_MAP(oparg, next_instr) elif opcode == opcodedesc.BUILD_SET.index: self.BUILD_SET(oparg, next_instr) elif opcode == opcodedesc.BUILD_SLICE.index: self.BUILD_SLICE(oparg, next_instr) elif opcode == opcodedesc.BUILD_TUPLE.index: self.BUILD_TUPLE(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION.index: self.CALL_FUNCTION(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_KW.index: self.CALL_FUNCTION_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR.index: self.CALL_FUNCTION_VAR(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR_KW.index: self.CALL_FUNCTION_VAR_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_METHOD.index: > self.CALL_METHOD(oparg, next_instr) interpreter\pyopcode.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ f = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_extern_p...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1570]', line 1> at line 4 oparg = 3, ignored = (18L,), n_args = 3, n_kwargs = 0, w_self = None @jit.unroll_safe def CALL_METHOD(f, oparg, *ignored): # opargs contains the arg, and kwarg count, excluding the implicit 'self' n_args = oparg & 0xff n_kwargs = (oparg >> 8) & 0xff w_self = f.peekvalue_maybe_none(n_args + (2 * n_kwargs)) n = n_args + (w_self is not None) if not n_kwargs: w_callable = f.peekvalue(n_args + (2 * n_kwargs) + 1) w_result = f.space.call_valuestack( > w_callable, n, f, methodcall=w_self is not None, dropvalues=n_args + 2) objspace\std\callmethod.py:96: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_extern_p...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1570]', line 1> at line 4 dropvalues = 5, methodcall = False def call_valuestack(self, w_func, nargs, frame, dropvalues, methodcall=False): # methodcall is only used for better error messages in argument.py from pypy.interpreter.function import Function, Method, is_builtin_code if frame.get_is_being_profiled() and is_builtin_code(w_func): # XXX: this code is copied&pasted :-( from the slow path below # call_valuestack(). args = frame.make_arguments(nargs) frame.dropvalues(dropvalues) return self.call_args_and_c_profile(frame, w_func, args) if not self.config.objspace.disable_call_speedhacks: # start of hack for performance if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: w_func = w_func.w_function # reuse callable stack place for w_inst frame.settopvalue(w_inst, nargs) nargs += 1 methodcall = True elif nargs > 0 and ( self.abstract_isinstance_w(frame.peekvalue(nargs-1), # :-( w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): return w_func.funccall_valuestack( > nargs, frame, methodcall=methodcall, dropvalues=dropvalues) interpreter\baseobjspace.py:1243: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_extern_p...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1570]', line 1> at line 4 dropvalues = 5, methodcall = False def funccall_valuestack(self, nargs, frame, dropvalues, methodcall=False): # speed hack # methodcall is only for better error messages from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit # if (jit.we_are_jitted() and code is self.space._code_of_sys_exc_info and nargs == 0): frame.dropvalues(dropvalues) from pypy.module.sys.vm import exc_info_direct return exc_info_direct(self.space, frame) # fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: f_0 = frame.peekvalue(0) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, f_0) elif nargs == 2: f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, f_1, f_0) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) frame.dropvalues(dropvalues) return code.fastcall_3(self.space, self, f_2, f_1, f_0) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) f_3 = frame.peekvalue(3) frame.dropvalues(dropvalues) return code.fastcall_4(self.space, self, f_3, f_2, f_1, f_0) elif (nargs | Code.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) return self._flat_pycall(code, nargs, frame, dropvalues) elif fast_natural_arity & Code.FLATPYCALL: natural_arity = fast_natural_arity & 0xff if natural_arity > nargs >= natural_arity - len(self.defs_w): assert isinstance(code, PyCode) return self._flat_pycall_defaults(code, nargs, frame, natural_arity - nargs, dropvalues) elif fast_natural_arity == Code.PASSTHROUGHARGS1 and nargs >= 1: assert isinstance(code, gateway.BuiltinCodePassThroughArguments1) w_obj = frame.peekvalue(nargs-1) args = frame.make_arguments(nargs-1) frame.dropvalues(dropvalues) return code.funcrun_obj(self, w_obj, args) args = frame.make_arguments(nargs, methodcall=methodcall) frame.dropvalues(dropvalues) > return self.call_args(args) interpreter\function.py:190: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('extern "Python" void bar(int);'), W_BytesObject('test_extern_python_bogus_result_type'), W_BytesObject('')]) def call_args(self, args): # delegate activation to code > w_res = self.getcode().funcrun(self, args) interpreter\function.py:68: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('extern "Python" void bar(int);'), W_BytesObject('test_extern_python_bogus_result_type'), W_BytesObject('')]) def funcrun(self, func, args): > return BuiltinCode.funcrun_obj(self, func, None, args) interpreter\gateway.py:781: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('extern "Python" void bar(int);'), W_BytesObject('test_extern_python_bogus_result_type'), W_BytesObject('')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: w_result = activation._run(space, scope_w) except DescrMismatch: if w_obj is not None: args = args.prepend(w_obj) return self._type_unwrap_mismatch(space, args) except Exception as e: > self.handle_exception(space, e) interpreter\gateway.py:795: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> space = StdObjSpace e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def handle_exception(self, space, e): try: if not we_are_translated(): raise raise e except OperationError: raise except Exception as e: # general fall-back from pypy.interpreter import error > raise error.get_converted_unexpected_exception(space, e) interpreter\gateway.py:819: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('extern "Python" void bar(int);'), W_BytesObject('test_extern_python_bogus_result_type'), W_BytesObject('')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: > w_result = activation._run(space, scope_w) interpreter\gateway.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinActivation_UwS_ObjSpace_text_text_text_W_Root_W_Root_W_Root_int_W_Root object at 0x000002791c13af38> space = StdObjSpace scope_w = [W_BytesObject('extern "Python" void bar(int);'), W_BytesObject('test_extern_python_bogus_result_type'), W_BytesObject(''), None, None, None, ...] def _run(self, space, scope_w): > return self.behavior(space, space.text_w(scope_w[0]), space.text_w(scope_w[1]), space.text_w(scope_w[2]), scope_w[3], scope_w[4], scope_w[5], space.gateway_int_w(scope_w[6]), scope_w[7]) <3152-codegen d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\rpython\tool\sourcetools.py:200>:3: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace, cdef = 'extern "Python" void bar(int);' module_name = '_CFFI_test_extern_python_bogus_result_type', source = '' w_includes = None, w_extra_source = None, w_min_version = None, packed = 0 w_extra_compile_args = None @unwrap_spec(cdef='text', module_name='text', source='text', packed=int) def prepare(space, cdef, module_name, source, w_includes=None, w_extra_source=None, w_min_version=None, packed=False, w_extra_compile_args=None): try: import cffi from cffi import FFI # <== the system one, which from cffi import recompiler # needs to be at least cffi 1.0.4 from cffi import ffiplatform except ImportError: pytest.skip("system cffi module not found or older than 1.0.0") if w_min_version is None: min_version = (1, 4, 0) else: min_version = tuple(space.unwrap(w_min_version)) if cffi.__version_info__ < min_version: pytest.skip("system cffi module needs to be at least %s, got %s" % ( min_version, cffi.__version_info__)) space.appexec([], """(): import _cffi_backend # force it to be initialized """) includes = [] if w_includes: includes += space.unpackiterable(w_includes) assert module_name.startswith('test_') module_name = '_CFFI_' + module_name rdir = udir.ensure('recompiler', dir=1) rdir.join('Python.h').write( '#include <stdio.h>\n' '#define PYPY_VERSION XX\n' '#define PyMODINIT_FUNC /*exported*/ void\n' ) path = module_name.replace('.', os.sep) if '.' in module_name: subrdir = rdir.join(module_name[:module_name.index('.')]) os.mkdir(str(subrdir)) else: subrdir = rdir c_file = str(rdir.join('%s.c' % path)) ffi = FFI() for include_ffi_object in includes: ffi.include(include_ffi_object._test_recompiler_source_ffi) ffi.cdef(cdef, packed=packed) ffi.set_source(module_name, source) ffi.emit_c_code(c_file) base_module_name = module_name.split('.')[-1] sources = [] if w_extra_source is not None: sources.append(space.str_w(w_extra_source)) kwargs = {} # GCC 14 promotes -Wincompatible-pointer-types from a warning to an error # by default, which breaks cffi's intentionally-mismatched field-check # probes (e.g. test_misdeclared_field_1). Keep it a warning so the module # compiles and cffi's runtime checks can run. extra = ['-Wno-error=incompatible-pointer-types'] if w_extra_compile_args is not None: extra = extra + space.unwrap(w_extra_compile_args) kwargs['extra_compile_args'] = extra ext = ffiplatform.get_extension(c_file, module_name, include_dirs=[str(rdir)], export_symbols=['_cffi_pypyinit_' + base_module_name], sources=sources, **kwargs) > ffiplatform.compile(str(rdir), ext) module\_cffi_backend\test\test_recompiler.py:86: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x000002792b293ce0> compiler_verbose = 0, debug = None def compile(tmpdir, ext, compiler_verbose=0, debug=None): """Compile a C extension module using distutils.""" saved_environ = os.environ.copy() try: > outputfilename = _build(tmpdir, ext, compiler_verbose, debug) d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x000002792b293ce0> compiler_verbose = 0, debug = 0 def _build(tmpdir, ext, compiler_verbose=0, debug=None): # XXX compact but horrible :-( from cffi._shimmed_dist_utils import Distribution, CompileError, LinkError, set_threshold, set_verbosity dist = Distribution({'ext_modules': [ext]}) dist.parse_config_files() options = dist.get_option_dict('build_ext') if debug is None: debug = sys.flags.debug options['debug'] = ('ffiplatform', debug) options['force'] = ('ffiplatform', True) options['build_lib'] = ('ffiplatform', tmpdir) options['build_temp'] = ('ffiplatform', tmpdir) # try: old_level = set_threshold(0) or 0 try: set_verbosity(compiler_verbose) dist.run_command('build_ext') cmd_obj = dist.get_command_obj('build_ext') [soname] = cmd_obj.get_outputs() finally: set_threshold(old_level) except (CompileError, LinkError) as e: > raise VerificationError('%s: %s' % (e.__class__.__name__, e)) E VerificationError: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2 d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:54: VerificationError ---------------------------- Captured stdout call ----------------------------- generating d:\systemtemp\pytest\usession-main-595\recompiler\_CFFI_test_extern_python_bogus_result_type.c ---------------------------- Captured stderr call ----------------------------- cl : Command line error D8021 : invalid numeric argument '/Wno-error=incompatible-pointer-types' ________________ AppTestRecompiler.test_extern_python_redefine ________________ self = <CallInfo when='call' exception: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2> func = <function <lambda> at 0x000002792d19dad8>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ..\_pytest\runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ..\_pytest\runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_extern_python_redefine'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_extern_python_redefine'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ..\_pytest\vendored_packages\pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00000279153616a8> hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_extern_python_redefine'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_extern_python_redefine'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ..\_pytest\vendored_packages\pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_extern_python_redefine'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_extern_python_redefine'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ..\_pytest\vendored_packages\pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_extern_python_redefine'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x0000027929493808> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...n_redefine'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027929daf8e0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027929daf8e0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...n_redefine'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_extern_python_redefine'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00000279294937b8> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...n_redefine'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027929daf8a0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027929daf8a0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...n_redefine'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_extern_python_redefine'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ..\_pytest\vendored_packages\pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_extern_python_redefine'> def pytest_runtest_call(item): try: > item.runtest() ..\_pytest\runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_extern_python_redefine'> def runtest(self): target = self.obj if self.config.option.runappdirect: return target() space = target.im_self.space filename = self._getdynfilename(target) func = app2interp_temp(target.im_func, filename=filename) w_instance = self.parent.w_instance > self.execute_appex(space, func, space, w_instance) tool\pytest\apptest.py:89: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_extern_python_redefine'>, space = StdObjSpace target = <function test_extern_python_redefine at 0x000002792d19dc40> args = (StdObjSpace, <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>) def execute_appex(self, space, target, *args): self.space = space try: > target(*args) tool\pytest\apptest.py:30: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) w_func = <Function test_extern_python_redefine> args = <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8> def appcaller(space, *args_w): if not isinstance(space, ObjSpace): raise TypeError("first argument must be a space instance.") # the last argument can be an Arguments w_func = self.wget(space, name) if not args_w: return space.call_function(w_func) else: args = args_w[-1] assert args is not None if not isinstance(args, Arguments): > return space.call_function(w_func, *args_w) interpreter\gateway.py:1227: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <Function test_extern_python_redefine> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) nargs = 1, Function = <class 'pypy.interpreter.function.Function'> Method = <class 'pypy.interpreter.function.Method'> def call_function(self, w_func, *args_w): nargs = len(args_w) # used for pruning funccall versions if not self.config.objspace.disable_call_speedhacks and nargs < 5: # start of hack for performance from pypy.interpreter.function import Function, Method if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: if nargs < 4: func = w_func.w_function if isinstance(func, Function): return func.funccall(w_inst, *args_w) elif args_w and ( self.abstract_isinstance_w(args_w[0], w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): > return w_func.funccall(*args_w) interpreter\baseobjspace.py:1210: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <Function test_extern_python_redefine> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) gateway = <module 'pypy.interpreter.gateway' from 'd:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\interpreter\\gateway.pyc'> PyCode = <class 'pypy.interpreter.pycode.PyCode'> code = <code object test_extern_python_redefine, file '[d:\pypy_stuff\buildbot64\slav...-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:1585]', line 1> def funccall(self, *args_w): # speed hack from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit nargs = len(args_w) fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, args_w[0]) elif nargs == 2: assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, args_w[0], args_w[1]) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) return code.fastcall_3(self.space, self, args_w[0], args_w[1], args_w[2]) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) return code.fastcall_4(self.space, self, args_w[0], args_w[1], args_w[2], args_w[3]) elif (nargs | PyCode.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) if nargs < 5: new_frame = self.space.createframe(code, self.w_func_globals, self) for i in funccallunrolling: if i < nargs: new_frame.locals_cells_stack_w[i] = args_w[i] > return new_frame.run() interpreter\function.py:118: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_extern_p...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1585]', line 1> at line 4 def run(self): """Start this frame's execution.""" if self.getcode().co_flags & pycode.CO_GENERATOR: from pypy.interpreter.generator import GeneratorIterator return GeneratorIterator(self) else: > return self.execute_frame() interpreter\pyframe.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_extern_p...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1585]', line 1> at line 4 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, executioncontext) except OperationError: raise except Exception as e: # general fall-back > raise self._convert_unexpected_exception(e) interpreter\pyframe.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_extern_p...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1585]', line 1> at line 4 e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def _convert_unexpected_exception(self, e): from pypy.interpreter import error > operr = error.get_converted_unexpected_exception(self.space, e) interpreter\pyframe.py:943: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_extern_p...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1585]', line 1> at line 4 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, > executioncontext) interpreter\pyframe.py:286: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_extern_p...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1585]', line 1> at line 4 pycode = <code object test_extern_python_redefine, file '[d:\pypy_stuff\buildbot64\slav...-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:1585]', line 1> next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def dispatch(self, pycode, next_instr, ec): # For the sequel, force 'next_instr' to be unsigned for performance next_instr = r_uint(next_instr) co_code = pycode.co_code try: while True: > next_instr = self.handle_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:64: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_extern_p...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1585]', line 1> at line 4 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00|\x01\x00\xc9\x01\x00\xca\x00...03\x00\xcc\x1b\x00|\x02\x00\xc9\x02\x00d\x05\x00\xca\x01\x00d\x08\x00k\x02\x00s\x81\x00t\x03\x00\x82\x01\x00d\x00\x00S' next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def handle_bytecode(self, co_code, next_instr, ec): try: > next_instr = self.dispatch_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:71: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_extern_p...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1585]', line 1> at line 4 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00|\x01\x00\xc9\x01\x00\xca\x00...03\x00\xcc\x1b\x00|\x02\x00\xc9\x02\x00d\x05\x00\xca\x01\x00d\x08\x00k\x02\x00s\x81\x00t\x03\x00\x82\x01\x00d\x00\x00S' next_instr = 18L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> @jit.unroll_safe def dispatch_bytecode(self, co_code, next_instr, ec): while True: self.last_instr = intmask(next_instr) if jit.we_are_jitted(): if self.debugdata: ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) else: # Only reload next_instr from last_instr when something that # can modify it actually ran (trace function or action # dispatcher). In the common case (no trace, positive ticker) # next_instr is unchanged and the round-trip is skipped. _d = self.debugdata if ec.space.reverse_debugging or ( _d is not None and _d.w_f_trace is not None) or ( not we_are_translated() and 'bytecode_only_trace' in ec.__dict__): ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) actionflag = ec.space.actionflag if actionflag.decrement_ticker(TICK_COUNTER_STEP) < 0: actionflag.action_dispatcher(ec, self) next_instr = r_uint(self.last_instr) opcode = ord(co_code[next_instr]) next_instr += 1 if opcode >= HAVE_ARGUMENT: lo = ord(co_code[next_instr]) hi = ord(co_code[next_instr+1]) next_instr += 2 oparg = (hi * 256) | lo else: oparg = 0 # note: the structure of the code here is such that it makes # (after translation) a big "if/elif" chain, which is then # turned into a switch(). while opcode == opcodedesc.EXTENDED_ARG.index: opcode = ord(co_code[next_instr]) if opcode < HAVE_ARGUMENT: raise BytecodeCorruption lo = ord(co_code[next_instr+1]) hi = ord(co_code[next_instr+2]) next_instr += 3 oparg = (oparg * 65536) | (hi * 256) | lo if opcode == opcodedesc.RETURN_VALUE.index: if not self.blockstack_non_empty(): self.frame_finished_execution = True # for generators raise Return w_returnvalue = self.popvalue() block = self.unrollstack(SReturnValue.kind) if block is None: self.pushvalue(w_returnvalue) raise Return else: unroller = SReturnValue(w_returnvalue) next_instr = block.handle(self, unroller) return next_instr # now inside a 'finally' block elif opcode == opcodedesc.END_FINALLY.index: unroller = self.end_finally() if isinstance(unroller, SuspendedUnroller): # go on unrolling the stack block = self.unrollstack(unroller.kind) if block is None: w_result = unroller.nomoreblocks() self.pushvalue(w_result) raise Return else: next_instr = block.handle(self, unroller) return next_instr elif opcode == opcodedesc.JUMP_ABSOLUTE.index: return self.jump_absolute(oparg, ec) elif opcode == opcodedesc.BREAK_LOOP.index: next_instr = self.BREAK_LOOP(oparg, next_instr) elif opcode == opcodedesc.CONTINUE_LOOP.index: return self.CONTINUE_LOOP(oparg, next_instr) elif opcode == opcodedesc.FOR_ITER.index: next_instr = self.FOR_ITER(oparg, next_instr) elif opcode == opcodedesc.JUMP_FORWARD.index: next_instr = self.JUMP_FORWARD(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_FALSE_OR_POP.index: next_instr = self.JUMP_IF_FALSE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_NOT_DEBUG.index: next_instr = self.JUMP_IF_NOT_DEBUG(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_TRUE_OR_POP.index: next_instr = self.JUMP_IF_TRUE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_FALSE.index: next_instr = self.POP_JUMP_IF_FALSE(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_TRUE.index: next_instr = self.POP_JUMP_IF_TRUE(oparg, next_instr) elif opcode == opcodedesc.BINARY_ADD.index: self.BINARY_ADD(oparg, next_instr) elif opcode == opcodedesc.BINARY_AND.index: self.BINARY_AND(oparg, next_instr) elif opcode == opcodedesc.BINARY_DIVIDE.index: self.BINARY_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_FLOOR_DIVIDE.index: self.BINARY_FLOOR_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_LSHIFT.index: self.BINARY_LSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_MODULO.index: self.BINARY_MODULO(oparg, next_instr) elif opcode == opcodedesc.BINARY_MULTIPLY.index: self.BINARY_MULTIPLY(oparg, next_instr) elif opcode == opcodedesc.BINARY_OR.index: self.BINARY_OR(oparg, next_instr) elif opcode == opcodedesc.BINARY_POWER.index: self.BINARY_POWER(oparg, next_instr) elif opcode == opcodedesc.BINARY_RSHIFT.index: self.BINARY_RSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBSCR.index: self.BINARY_SUBSCR(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBTRACT.index: self.BINARY_SUBTRACT(oparg, next_instr) elif opcode == opcodedesc.BINARY_TRUE_DIVIDE.index: self.BINARY_TRUE_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_XOR.index: self.BINARY_XOR(oparg, next_instr) elif opcode == opcodedesc.BUILD_CLASS.index: self.BUILD_CLASS(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST.index: self.BUILD_LIST(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST_FROM_ARG.index: self.BUILD_LIST_FROM_ARG(oparg, next_instr) elif opcode == opcodedesc.BUILD_MAP.index: self.BUILD_MAP(oparg, next_instr) elif opcode == opcodedesc.BUILD_SET.index: self.BUILD_SET(oparg, next_instr) elif opcode == opcodedesc.BUILD_SLICE.index: self.BUILD_SLICE(oparg, next_instr) elif opcode == opcodedesc.BUILD_TUPLE.index: self.BUILD_TUPLE(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION.index: self.CALL_FUNCTION(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_KW.index: self.CALL_FUNCTION_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR.index: self.CALL_FUNCTION_VAR(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR_KW.index: self.CALL_FUNCTION_VAR_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_METHOD.index: > self.CALL_METHOD(oparg, next_instr) interpreter\pyopcode.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ f = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_extern_p...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1585]', line 1> at line 4 oparg = 3, ignored = (18L,), n_args = 3, n_kwargs = 0, w_self = None @jit.unroll_safe def CALL_METHOD(f, oparg, *ignored): # opargs contains the arg, and kwarg count, excluding the implicit 'self' n_args = oparg & 0xff n_kwargs = (oparg >> 8) & 0xff w_self = f.peekvalue_maybe_none(n_args + (2 * n_kwargs)) n = n_args + (w_self is not None) if not n_kwargs: w_callable = f.peekvalue(n_args + (2 * n_kwargs) + 1) w_result = f.space.call_valuestack( > w_callable, n, f, methodcall=w_self is not None, dropvalues=n_args + 2) objspace\std\callmethod.py:96: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_extern_p...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1585]', line 1> at line 4 dropvalues = 5, methodcall = False def call_valuestack(self, w_func, nargs, frame, dropvalues, methodcall=False): # methodcall is only used for better error messages in argument.py from pypy.interpreter.function import Function, Method, is_builtin_code if frame.get_is_being_profiled() and is_builtin_code(w_func): # XXX: this code is copied&pasted :-( from the slow path below # call_valuestack(). args = frame.make_arguments(nargs) frame.dropvalues(dropvalues) return self.call_args_and_c_profile(frame, w_func, args) if not self.config.objspace.disable_call_speedhacks: # start of hack for performance if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: w_func = w_func.w_function # reuse callable stack place for w_inst frame.settopvalue(w_inst, nargs) nargs += 1 methodcall = True elif nargs > 0 and ( self.abstract_isinstance_w(frame.peekvalue(nargs-1), # :-( w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): return w_func.funccall_valuestack( > nargs, frame, methodcall=methodcall, dropvalues=dropvalues) interpreter\baseobjspace.py:1243: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_extern_p...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1585]', line 1> at line 4 dropvalues = 5, methodcall = False def funccall_valuestack(self, nargs, frame, dropvalues, methodcall=False): # speed hack # methodcall is only for better error messages from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit # if (jit.we_are_jitted() and code is self.space._code_of_sys_exc_info and nargs == 0): frame.dropvalues(dropvalues) from pypy.module.sys.vm import exc_info_direct return exc_info_direct(self.space, frame) # fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: f_0 = frame.peekvalue(0) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, f_0) elif nargs == 2: f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, f_1, f_0) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) frame.dropvalues(dropvalues) return code.fastcall_3(self.space, self, f_2, f_1, f_0) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) f_3 = frame.peekvalue(3) frame.dropvalues(dropvalues) return code.fastcall_4(self.space, self, f_3, f_2, f_1, f_0) elif (nargs | Code.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) return self._flat_pycall(code, nargs, frame, dropvalues) elif fast_natural_arity & Code.FLATPYCALL: natural_arity = fast_natural_arity & 0xff if natural_arity > nargs >= natural_arity - len(self.defs_w): assert isinstance(code, PyCode) return self._flat_pycall_defaults(code, nargs, frame, natural_arity - nargs, dropvalues) elif fast_natural_arity == Code.PASSTHROUGHARGS1 and nargs >= 1: assert isinstance(code, gateway.BuiltinCodePassThroughArguments1) w_obj = frame.peekvalue(nargs-1) args = frame.make_arguments(nargs-1) frame.dropvalues(dropvalues) return code.funcrun_obj(self, w_obj, args) args = frame.make_arguments(nargs, methodcall=methodcall) frame.dropvalues(dropvalues) > return self.call_args(args) interpreter\function.py:190: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('extern "Python" int bar(int);'), W_BytesObject('test_extern_python_redefine'), W_BytesObject('')]) def call_args(self, args): # delegate activation to code > w_res = self.getcode().funcrun(self, args) interpreter\function.py:68: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('extern "Python" int bar(int);'), W_BytesObject('test_extern_python_redefine'), W_BytesObject('')]) def funcrun(self, func, args): > return BuiltinCode.funcrun_obj(self, func, None, args) interpreter\gateway.py:781: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('extern "Python" int bar(int);'), W_BytesObject('test_extern_python_redefine'), W_BytesObject('')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: w_result = activation._run(space, scope_w) except DescrMismatch: if w_obj is not None: args = args.prepend(w_obj) return self._type_unwrap_mismatch(space, args) except Exception as e: > self.handle_exception(space, e) interpreter\gateway.py:795: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> space = StdObjSpace e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def handle_exception(self, space, e): try: if not we_are_translated(): raise raise e except OperationError: raise except Exception as e: # general fall-back from pypy.interpreter import error > raise error.get_converted_unexpected_exception(space, e) interpreter\gateway.py:819: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('extern "Python" int bar(int);'), W_BytesObject('test_extern_python_redefine'), W_BytesObject('')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: > w_result = activation._run(space, scope_w) interpreter\gateway.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinActivation_UwS_ObjSpace_text_text_text_W_Root_W_Root_W_Root_int_W_Root object at 0x000002791c13af38> space = StdObjSpace scope_w = [W_BytesObject('extern "Python" int bar(int);'), W_BytesObject('test_extern_python_redefine'), W_BytesObject(''), None, None, None, ...] def _run(self, space, scope_w): > return self.behavior(space, space.text_w(scope_w[0]), space.text_w(scope_w[1]), space.text_w(scope_w[2]), scope_w[3], scope_w[4], scope_w[5], space.gateway_int_w(scope_w[6]), scope_w[7]) <3152-codegen d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\rpython\tool\sourcetools.py:200>:3: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace, cdef = 'extern "Python" int bar(int);' module_name = '_CFFI_test_extern_python_redefine', source = '' w_includes = None, w_extra_source = None, w_min_version = None, packed = 0 w_extra_compile_args = None @unwrap_spec(cdef='text', module_name='text', source='text', packed=int) def prepare(space, cdef, module_name, source, w_includes=None, w_extra_source=None, w_min_version=None, packed=False, w_extra_compile_args=None): try: import cffi from cffi import FFI # <== the system one, which from cffi import recompiler # needs to be at least cffi 1.0.4 from cffi import ffiplatform except ImportError: pytest.skip("system cffi module not found or older than 1.0.0") if w_min_version is None: min_version = (1, 4, 0) else: min_version = tuple(space.unwrap(w_min_version)) if cffi.__version_info__ < min_version: pytest.skip("system cffi module needs to be at least %s, got %s" % ( min_version, cffi.__version_info__)) space.appexec([], """(): import _cffi_backend # force it to be initialized """) includes = [] if w_includes: includes += space.unpackiterable(w_includes) assert module_name.startswith('test_') module_name = '_CFFI_' + module_name rdir = udir.ensure('recompiler', dir=1) rdir.join('Python.h').write( '#include <stdio.h>\n' '#define PYPY_VERSION XX\n' '#define PyMODINIT_FUNC /*exported*/ void\n' ) path = module_name.replace('.', os.sep) if '.' in module_name: subrdir = rdir.join(module_name[:module_name.index('.')]) os.mkdir(str(subrdir)) else: subrdir = rdir c_file = str(rdir.join('%s.c' % path)) ffi = FFI() for include_ffi_object in includes: ffi.include(include_ffi_object._test_recompiler_source_ffi) ffi.cdef(cdef, packed=packed) ffi.set_source(module_name, source) ffi.emit_c_code(c_file) base_module_name = module_name.split('.')[-1] sources = [] if w_extra_source is not None: sources.append(space.str_w(w_extra_source)) kwargs = {} # GCC 14 promotes -Wincompatible-pointer-types from a warning to an error # by default, which breaks cffi's intentionally-mismatched field-check # probes (e.g. test_misdeclared_field_1). Keep it a warning so the module # compiles and cffi's runtime checks can run. extra = ['-Wno-error=incompatible-pointer-types'] if w_extra_compile_args is not None: extra = extra + space.unwrap(w_extra_compile_args) kwargs['extra_compile_args'] = extra ext = ffiplatform.get_extension(c_file, module_name, include_dirs=[str(rdir)], export_symbols=['_cffi_pypyinit_' + base_module_name], sources=sources, **kwargs) > ffiplatform.compile(str(rdir), ext) module\_cffi_backend\test\test_recompiler.py:86: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x0000027925ee6920> compiler_verbose = 0, debug = None def compile(tmpdir, ext, compiler_verbose=0, debug=None): """Compile a C extension module using distutils.""" saved_environ = os.environ.copy() try: > outputfilename = _build(tmpdir, ext, compiler_verbose, debug) d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x0000027925ee6920> compiler_verbose = 0, debug = 0 def _build(tmpdir, ext, compiler_verbose=0, debug=None): # XXX compact but horrible :-( from cffi._shimmed_dist_utils import Distribution, CompileError, LinkError, set_threshold, set_verbosity dist = Distribution({'ext_modules': [ext]}) dist.parse_config_files() options = dist.get_option_dict('build_ext') if debug is None: debug = sys.flags.debug options['debug'] = ('ffiplatform', debug) options['force'] = ('ffiplatform', True) options['build_lib'] = ('ffiplatform', tmpdir) options['build_temp'] = ('ffiplatform', tmpdir) # try: old_level = set_threshold(0) or 0 try: set_verbosity(compiler_verbose) dist.run_command('build_ext') cmd_obj = dist.get_command_obj('build_ext') [soname] = cmd_obj.get_outputs() finally: set_threshold(old_level) except (CompileError, LinkError) as e: > raise VerificationError('%s: %s' % (e.__class__.__name__, e)) E VerificationError: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2 d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:54: VerificationError ---------------------------- Captured stdout call ----------------------------- generating d:\systemtemp\pytest\usession-main-595\recompiler\_CFFI_test_extern_python_redefine.c ---------------------------- Captured stderr call ----------------------------- cl : Command line error D8021 : invalid numeric argument '/Wno-error=incompatible-pointer-types' _________________ AppTestRecompiler.test_extern_python_struct _________________ self = <CallInfo when='call' exception: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2> func = <function <lambda> at 0x000002792b268cc8>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ..\_pytest\runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ..\_pytest\runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_extern_python_struct'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_extern_python_struct'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ..\_pytest\vendored_packages\pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00000279153616a8> hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_extern_python_struct'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_extern_python_struct'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ..\_pytest\vendored_packages\pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_extern_python_struct'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_extern_python_struct'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ..\_pytest\vendored_packages\pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_extern_python_struct'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x0000027920917df8> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...hon_struct'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00000279260b9760> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00000279260b9760> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...hon_struct'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_extern_python_struct'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x0000027920917da8> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...hon_struct'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00000279260b9720> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00000279260b9720> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...hon_struct'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_extern_python_struct'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ..\_pytest\vendored_packages\pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_extern_python_struct'> def pytest_runtest_call(item): try: > item.runtest() ..\_pytest\runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_extern_python_struct'> def runtest(self): target = self.obj if self.config.option.runappdirect: return target() space = target.im_self.space filename = self._getdynfilename(target) func = app2interp_temp(target.im_func, filename=filename) w_instance = self.parent.w_instance > self.execute_appex(space, func, space, w_instance) tool\pytest\apptest.py:89: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_extern_python_struct'>, space = StdObjSpace target = <function test_extern_python_struct at 0x000002792b268e30> args = (StdObjSpace, <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>) def execute_appex(self, space, target, *args): self.space = space try: > target(*args) tool\pytest\apptest.py:30: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) w_func = <Function test_extern_python_struct> args = <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8> def appcaller(space, *args_w): if not isinstance(space, ObjSpace): raise TypeError("first argument must be a space instance.") # the last argument can be an Arguments w_func = self.wget(space, name) if not args_w: return space.call_function(w_func) else: args = args_w[-1] assert args is not None if not isinstance(args, Arguments): > return space.call_function(w_func, *args_w) interpreter\gateway.py:1227: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <Function test_extern_python_struct> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) nargs = 1, Function = <class 'pypy.interpreter.function.Function'> Method = <class 'pypy.interpreter.function.Method'> def call_function(self, w_func, *args_w): nargs = len(args_w) # used for pruning funccall versions if not self.config.objspace.disable_call_speedhacks and nargs < 5: # start of hack for performance from pypy.interpreter.function import Function, Method if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: if nargs < 4: func = w_func.w_function if isinstance(func, Function): return func.funccall(w_inst, *args_w) elif args_w and ( self.abstract_isinstance_w(args_w[0], w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): > return w_func.funccall(*args_w) interpreter\baseobjspace.py:1210: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <Function test_extern_python_struct> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) gateway = <module 'pypy.interpreter.gateway' from 'd:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\interpreter\\gateway.pyc'> PyCode = <class 'pypy.interpreter.pycode.PyCode'> code = <code object test_extern_python_struct, file '[d:\pypy_stuff\buildbot64\slave\...-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:1599]', line 1> def funccall(self, *args_w): # speed hack from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit nargs = len(args_w) fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, args_w[0]) elif nargs == 2: assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, args_w[0], args_w[1]) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) return code.fastcall_3(self.space, self, args_w[0], args_w[1], args_w[2]) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) return code.fastcall_4(self.space, self, args_w[0], args_w[1], args_w[2], args_w[3]) elif (nargs | PyCode.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) if nargs < 5: new_frame = self.space.createframe(code, self.w_func_globals, self) for i in funccallunrolling: if i < nargs: new_frame.locals_cells_stack_w[i] = args_w[i] > return new_frame.run() interpreter\function.py:118: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_extern_p...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1599]', line 1> at line 8 def run(self): """Start this frame's execution.""" if self.getcode().co_flags & pycode.CO_GENERATOR: from pypy.interpreter.generator import GeneratorIterator return GeneratorIterator(self) else: > return self.execute_frame() interpreter\pyframe.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_extern_p...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1599]', line 1> at line 8 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, executioncontext) except OperationError: raise except Exception as e: # general fall-back > raise self._convert_unexpected_exception(e) interpreter\pyframe.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_extern_p...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1599]', line 1> at line 8 e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def _convert_unexpected_exception(self, e): from pypy.interpreter import error > operr = error.get_converted_unexpected_exception(self.space, e) interpreter\pyframe.py:943: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_extern_p...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1599]', line 1> at line 8 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, > executioncontext) interpreter\pyframe.py:286: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_extern_p...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1599]', line 1> at line 8 pycode = <code object test_extern_python_struct, file '[d:\pypy_stuff\buildbot64\slave\...-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:1599]', line 1> next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def dispatch(self, pycode, next_instr, ec): # For the sequel, force 'next_instr' to be unsigned for performance next_instr = r_uint(next_instr) co_code = pycode.co_code try: while True: > next_instr = self.handle_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:64: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_extern_p...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1599]', line 1> at line 8 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00|\x01\x00\xc9\x01\x00\xca\x00...j\x06\x00|\x04\x00j\x07\x00g\x03\x00d\x11\x00d\x12\x00d\x13\x00g\x03\x00k\x02\x00s#\x01t\x03\x00\x82\x01\x00d\x00\x00S' next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def handle_bytecode(self, co_code, next_instr, ec): try: > next_instr = self.dispatch_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:71: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_extern_p...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1599]', line 1> at line 8 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00|\x01\x00\xc9\x01\x00\xca\x00...j\x06\x00|\x04\x00j\x07\x00g\x03\x00d\x11\x00d\x12\x00d\x13\x00g\x03\x00k\x02\x00s#\x01t\x03\x00\x82\x01\x00d\x00\x00S' next_instr = 18L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> @jit.unroll_safe def dispatch_bytecode(self, co_code, next_instr, ec): while True: self.last_instr = intmask(next_instr) if jit.we_are_jitted(): if self.debugdata: ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) else: # Only reload next_instr from last_instr when something that # can modify it actually ran (trace function or action # dispatcher). In the common case (no trace, positive ticker) # next_instr is unchanged and the round-trip is skipped. _d = self.debugdata if ec.space.reverse_debugging or ( _d is not None and _d.w_f_trace is not None) or ( not we_are_translated() and 'bytecode_only_trace' in ec.__dict__): ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) actionflag = ec.space.actionflag if actionflag.decrement_ticker(TICK_COUNTER_STEP) < 0: actionflag.action_dispatcher(ec, self) next_instr = r_uint(self.last_instr) opcode = ord(co_code[next_instr]) next_instr += 1 if opcode >= HAVE_ARGUMENT: lo = ord(co_code[next_instr]) hi = ord(co_code[next_instr+1]) next_instr += 2 oparg = (hi * 256) | lo else: oparg = 0 # note: the structure of the code here is such that it makes # (after translation) a big "if/elif" chain, which is then # turned into a switch(). while opcode == opcodedesc.EXTENDED_ARG.index: opcode = ord(co_code[next_instr]) if opcode < HAVE_ARGUMENT: raise BytecodeCorruption lo = ord(co_code[next_instr+1]) hi = ord(co_code[next_instr+2]) next_instr += 3 oparg = (oparg * 65536) | (hi * 256) | lo if opcode == opcodedesc.RETURN_VALUE.index: if not self.blockstack_non_empty(): self.frame_finished_execution = True # for generators raise Return w_returnvalue = self.popvalue() block = self.unrollstack(SReturnValue.kind) if block is None: self.pushvalue(w_returnvalue) raise Return else: unroller = SReturnValue(w_returnvalue) next_instr = block.handle(self, unroller) return next_instr # now inside a 'finally' block elif opcode == opcodedesc.END_FINALLY.index: unroller = self.end_finally() if isinstance(unroller, SuspendedUnroller): # go on unrolling the stack block = self.unrollstack(unroller.kind) if block is None: w_result = unroller.nomoreblocks() self.pushvalue(w_result) raise Return else: next_instr = block.handle(self, unroller) return next_instr elif opcode == opcodedesc.JUMP_ABSOLUTE.index: return self.jump_absolute(oparg, ec) elif opcode == opcodedesc.BREAK_LOOP.index: next_instr = self.BREAK_LOOP(oparg, next_instr) elif opcode == opcodedesc.CONTINUE_LOOP.index: return self.CONTINUE_LOOP(oparg, next_instr) elif opcode == opcodedesc.FOR_ITER.index: next_instr = self.FOR_ITER(oparg, next_instr) elif opcode == opcodedesc.JUMP_FORWARD.index: next_instr = self.JUMP_FORWARD(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_FALSE_OR_POP.index: next_instr = self.JUMP_IF_FALSE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_NOT_DEBUG.index: next_instr = self.JUMP_IF_NOT_DEBUG(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_TRUE_OR_POP.index: next_instr = self.JUMP_IF_TRUE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_FALSE.index: next_instr = self.POP_JUMP_IF_FALSE(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_TRUE.index: next_instr = self.POP_JUMP_IF_TRUE(oparg, next_instr) elif opcode == opcodedesc.BINARY_ADD.index: self.BINARY_ADD(oparg, next_instr) elif opcode == opcodedesc.BINARY_AND.index: self.BINARY_AND(oparg, next_instr) elif opcode == opcodedesc.BINARY_DIVIDE.index: self.BINARY_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_FLOOR_DIVIDE.index: self.BINARY_FLOOR_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_LSHIFT.index: self.BINARY_LSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_MODULO.index: self.BINARY_MODULO(oparg, next_instr) elif opcode == opcodedesc.BINARY_MULTIPLY.index: self.BINARY_MULTIPLY(oparg, next_instr) elif opcode == opcodedesc.BINARY_OR.index: self.BINARY_OR(oparg, next_instr) elif opcode == opcodedesc.BINARY_POWER.index: self.BINARY_POWER(oparg, next_instr) elif opcode == opcodedesc.BINARY_RSHIFT.index: self.BINARY_RSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBSCR.index: self.BINARY_SUBSCR(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBTRACT.index: self.BINARY_SUBTRACT(oparg, next_instr) elif opcode == opcodedesc.BINARY_TRUE_DIVIDE.index: self.BINARY_TRUE_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_XOR.index: self.BINARY_XOR(oparg, next_instr) elif opcode == opcodedesc.BUILD_CLASS.index: self.BUILD_CLASS(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST.index: self.BUILD_LIST(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST_FROM_ARG.index: self.BUILD_LIST_FROM_ARG(oparg, next_instr) elif opcode == opcodedesc.BUILD_MAP.index: self.BUILD_MAP(oparg, next_instr) elif opcode == opcodedesc.BUILD_SET.index: self.BUILD_SET(oparg, next_instr) elif opcode == opcodedesc.BUILD_SLICE.index: self.BUILD_SLICE(oparg, next_instr) elif opcode == opcodedesc.BUILD_TUPLE.index: self.BUILD_TUPLE(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION.index: self.CALL_FUNCTION(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_KW.index: self.CALL_FUNCTION_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR.index: self.CALL_FUNCTION_VAR(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR_KW.index: self.CALL_FUNCTION_VAR_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_METHOD.index: > self.CALL_METHOD(oparg, next_instr) interpreter\pyopcode.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ f = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_extern_p...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1599]', line 1> at line 8 oparg = 3, ignored = (18L,), n_args = 3, n_kwargs = 0, w_self = None @jit.unroll_safe def CALL_METHOD(f, oparg, *ignored): # opargs contains the arg, and kwarg count, excluding the implicit 'self' n_args = oparg & 0xff n_kwargs = (oparg >> 8) & 0xff w_self = f.peekvalue_maybe_none(n_args + (2 * n_kwargs)) n = n_args + (w_self is not None) if not n_kwargs: w_callable = f.peekvalue(n_args + (2 * n_kwargs) + 1) w_result = f.space.call_valuestack( > w_callable, n, f, methodcall=w_self is not None, dropvalues=n_args + 2) objspace\std\callmethod.py:96: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_extern_p...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1599]', line 1> at line 8 dropvalues = 5, methodcall = False def call_valuestack(self, w_func, nargs, frame, dropvalues, methodcall=False): # methodcall is only used for better error messages in argument.py from pypy.interpreter.function import Function, Method, is_builtin_code if frame.get_is_being_profiled() and is_builtin_code(w_func): # XXX: this code is copied&pasted :-( from the slow path below # call_valuestack(). args = frame.make_arguments(nargs) frame.dropvalues(dropvalues) return self.call_args_and_c_profile(frame, w_func, args) if not self.config.objspace.disable_call_speedhacks: # start of hack for performance if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: w_func = w_func.w_function # reuse callable stack place for w_inst frame.settopvalue(w_inst, nargs) nargs += 1 methodcall = True elif nargs > 0 and ( self.abstract_isinstance_w(frame.peekvalue(nargs-1), # :-( w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): return w_func.funccall_valuestack( > nargs, frame, methodcall=methodcall, dropvalues=dropvalues) interpreter\baseobjspace.py:1243: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_extern_p...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1599]', line 1> at line 8 dropvalues = 5, methodcall = False def funccall_valuestack(self, nargs, frame, dropvalues, methodcall=False): # speed hack # methodcall is only for better error messages from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit # if (jit.we_are_jitted() and code is self.space._code_of_sys_exc_info and nargs == 0): frame.dropvalues(dropvalues) from pypy.module.sys.vm import exc_info_direct return exc_info_direct(self.space, frame) # fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: f_0 = frame.peekvalue(0) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, f_0) elif nargs == 2: f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, f_1, f_0) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) frame.dropvalues(dropvalues) return code.fastcall_3(self.space, self, f_2, f_1, f_0) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) f_3 = frame.peekvalue(3) frame.dropvalues(dropvalues) return code.fastcall_4(self.space, self, f_3, f_2, f_1, f_0) elif (nargs | Code.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) return self._flat_pycall(code, nargs, frame, dropvalues) elif fast_natural_arity & Code.FLATPYCALL: natural_arity = fast_natural_arity & 0xff if natural_arity > nargs >= natural_arity - len(self.defs_w): assert isinstance(code, PyCode) return self._flat_pycall_defaults(code, nargs, frame, natural_arity - nargs, dropvalues) elif fast_natural_arity == Code.PASSTHROUGHARGS1 and nargs >= 1: assert isinstance(code, gateway.BuiltinCodePassThroughArguments1) w_obj = frame.peekvalue(nargs-1) args = frame.make_arguments(nargs-1) frame.dropvalues(dropvalues) return code.funcrun_obj(self, w_obj, args) args = frame.make_arguments(nargs, methodcall=methodcall) frame.dropvalues(dropvalues) > return self.call_args(args) interpreter\function.py:190: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('\n struct foo_s { int a, b, c; };\n ...'test_extern_python_struct'), W_BytesObject('struct foo_s { int a, b, c; };')]) def call_args(self, args): # delegate activation to code > w_res = self.getcode().funcrun(self, args) interpreter\function.py:68: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('\n struct foo_s { int a, b, c; };\n ...'test_extern_python_struct'), W_BytesObject('struct foo_s { int a, b, c; };')]) def funcrun(self, func, args): > return BuiltinCode.funcrun_obj(self, func, None, args) interpreter\gateway.py:781: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('\n struct foo_s { int a, b, c; };\n ...'test_extern_python_struct'), W_BytesObject('struct foo_s { int a, b, c; };')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: w_result = activation._run(space, scope_w) except DescrMismatch: if w_obj is not None: args = args.prepend(w_obj) return self._type_unwrap_mismatch(space, args) except Exception as e: > self.handle_exception(space, e) interpreter\gateway.py:795: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> space = StdObjSpace e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def handle_exception(self, space, e): try: if not we_are_translated(): raise raise e except OperationError: raise except Exception as e: # general fall-back from pypy.interpreter import error > raise error.get_converted_unexpected_exception(space, e) interpreter\gateway.py:819: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('\n struct foo_s { int a, b, c; };\n ...'test_extern_python_struct'), W_BytesObject('struct foo_s { int a, b, c; };')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: > w_result = activation._run(space, scope_w) interpreter\gateway.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinActivation_UwS_ObjSpace_text_text_text_W_Root_W_Root_W_Root_int_W_Root object at 0x000002791c13af38> space = StdObjSpace scope_w = [W_BytesObject('\n struct foo_s { int a, b, c; };\n exter...int, int);\n ...'), W_BytesObject('test_extern_python_struct'), W_BytesObject('struct foo_s { int a, b, c; };'), None, None, None, ...] def _run(self, space, scope_w): > return self.behavior(space, space.text_w(scope_w[0]), space.text_w(scope_w[1]), space.text_w(scope_w[2]), scope_w[3], scope_w[4], scope_w[5], space.gateway_int_w(scope_w[6]), scope_w[7]) <3152-codegen d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\rpython\tool\sourcetools.py:200>:3: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace cdef = '\n struct foo_s { int a, b, c; };\n extern "Python" int bar(int, struct foo_s, int);\n extern "Python" { struct foo_s baz(int, int);\n struct foo_s bok(void); }\n ' module_name = '_CFFI_test_extern_python_struct' source = 'struct foo_s { int a, b, c; };', w_includes = None w_extra_source = None, w_min_version = None, packed = 0 w_extra_compile_args = None @unwrap_spec(cdef='text', module_name='text', source='text', packed=int) def prepare(space, cdef, module_name, source, w_includes=None, w_extra_source=None, w_min_version=None, packed=False, w_extra_compile_args=None): try: import cffi from cffi import FFI # <== the system one, which from cffi import recompiler # needs to be at least cffi 1.0.4 from cffi import ffiplatform except ImportError: pytest.skip("system cffi module not found or older than 1.0.0") if w_min_version is None: min_version = (1, 4, 0) else: min_version = tuple(space.unwrap(w_min_version)) if cffi.__version_info__ < min_version: pytest.skip("system cffi module needs to be at least %s, got %s" % ( min_version, cffi.__version_info__)) space.appexec([], """(): import _cffi_backend # force it to be initialized """) includes = [] if w_includes: includes += space.unpackiterable(w_includes) assert module_name.startswith('test_') module_name = '_CFFI_' + module_name rdir = udir.ensure('recompiler', dir=1) rdir.join('Python.h').write( '#include <stdio.h>\n' '#define PYPY_VERSION XX\n' '#define PyMODINIT_FUNC /*exported*/ void\n' ) path = module_name.replace('.', os.sep) if '.' in module_name: subrdir = rdir.join(module_name[:module_name.index('.')]) os.mkdir(str(subrdir)) else: subrdir = rdir c_file = str(rdir.join('%s.c' % path)) ffi = FFI() for include_ffi_object in includes: ffi.include(include_ffi_object._test_recompiler_source_ffi) ffi.cdef(cdef, packed=packed) ffi.set_source(module_name, source) ffi.emit_c_code(c_file) base_module_name = module_name.split('.')[-1] sources = [] if w_extra_source is not None: sources.append(space.str_w(w_extra_source)) kwargs = {} # GCC 14 promotes -Wincompatible-pointer-types from a warning to an error # by default, which breaks cffi's intentionally-mismatched field-check # probes (e.g. test_misdeclared_field_1). Keep it a warning so the module # compiles and cffi's runtime checks can run. extra = ['-Wno-error=incompatible-pointer-types'] if w_extra_compile_args is not None: extra = extra + space.unwrap(w_extra_compile_args) kwargs['extra_compile_args'] = extra ext = ffiplatform.get_extension(c_file, module_name, include_dirs=[str(rdir)], export_symbols=['_cffi_pypyinit_' + base_module_name], sources=sources, **kwargs) > ffiplatform.compile(str(rdir), ext) module\_cffi_backend\test\test_recompiler.py:86: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x00000279260e74a0> compiler_verbose = 0, debug = None def compile(tmpdir, ext, compiler_verbose=0, debug=None): """Compile a C extension module using distutils.""" saved_environ = os.environ.copy() try: > outputfilename = _build(tmpdir, ext, compiler_verbose, debug) d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x00000279260e74a0> compiler_verbose = 0, debug = 0 def _build(tmpdir, ext, compiler_verbose=0, debug=None): # XXX compact but horrible :-( from cffi._shimmed_dist_utils import Distribution, CompileError, LinkError, set_threshold, set_verbosity dist = Distribution({'ext_modules': [ext]}) dist.parse_config_files() options = dist.get_option_dict('build_ext') if debug is None: debug = sys.flags.debug options['debug'] = ('ffiplatform', debug) options['force'] = ('ffiplatform', True) options['build_lib'] = ('ffiplatform', tmpdir) options['build_temp'] = ('ffiplatform', tmpdir) # try: old_level = set_threshold(0) or 0 try: set_verbosity(compiler_verbose) dist.run_command('build_ext') cmd_obj = dist.get_command_obj('build_ext') [soname] = cmd_obj.get_outputs() finally: set_threshold(old_level) except (CompileError, LinkError) as e: > raise VerificationError('%s: %s' % (e.__class__.__name__, e)) E VerificationError: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2 d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:54: VerificationError ---------------------------- Captured stdout call ----------------------------- generating d:\systemtemp\pytest\usession-main-595\recompiler\_CFFI_test_extern_python_struct.c ---------------------------- Captured stderr call ----------------------------- cl : Command line error D8021 : invalid numeric argument '/Wno-error=incompatible-pointer-types' _______________ AppTestRecompiler.test_extern_python_signature ________________ self = <CallInfo when='call' exception: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2> func = <function <lambda> at 0x000002792cd7e188>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ..\_pytest\runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ..\_pytest\runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_extern_python_signature'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_extern_python_signature'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ..\_pytest\vendored_packages\pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00000279153616a8> hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_extern_python_signature'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_extern_python_signature'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ..\_pytest\vendored_packages\pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_extern_python_signature'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_extern_python_signature'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ..\_pytest\vendored_packages\pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_extern_python_signature'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791fc57150> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i..._signature'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792c388ea0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792c388ea0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i..._signature'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_extern_python_signature'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791fc570d8> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i..._signature'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792c388e60> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792c388e60> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i..._signature'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_extern_python_signature'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ..\_pytest\vendored_packages\pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_extern_python_signature'> def pytest_runtest_call(item): try: > item.runtest() ..\_pytest\runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_extern_python_signature'> def runtest(self): target = self.obj if self.config.option.runappdirect: return target() space = target.im_self.space filename = self._getdynfilename(target) func = app2interp_temp(target.im_func, filename=filename) w_instance = self.parent.w_instance > self.execute_appex(space, func, space, w_instance) tool\pytest\apptest.py:89: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_extern_python_signature'>, space = StdObjSpace target = <function test_extern_python_signature at 0x000002792cd7e200> args = (StdObjSpace, <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>) def execute_appex(self, space, target, *args): self.space = space try: > target(*args) tool\pytest\apptest.py:30: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) w_func = <Function test_extern_python_signature> args = <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8> def appcaller(space, *args_w): if not isinstance(space, ObjSpace): raise TypeError("first argument must be a space instance.") # the last argument can be an Arguments w_func = self.wget(space, name) if not args_w: return space.call_function(w_func) else: args = args_w[-1] assert args is not None if not isinstance(args, Arguments): > return space.call_function(w_func, *args_w) interpreter\gateway.py:1227: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <Function test_extern_python_signature> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) nargs = 1, Function = <class 'pypy.interpreter.function.Function'> Method = <class 'pypy.interpreter.function.Method'> def call_function(self, w_func, *args_w): nargs = len(args_w) # used for pruning funccall versions if not self.config.objspace.disable_call_speedhacks and nargs < 5: # start of hack for performance from pypy.interpreter.function import Function, Method if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: if nargs < 4: func = w_func.w_function if isinstance(func, Function): return func.funccall(w_inst, *args_w) elif args_w and ( self.abstract_isinstance_w(args_w[0], w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): > return w_func.funccall(*args_w) interpreter\baseobjspace.py:1210: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <Function test_extern_python_signature> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) gateway = <module 'pypy.interpreter.gateway' from 'd:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\interpreter\\gateway.pyc'> PyCode = <class 'pypy.interpreter.pycode.PyCode'> code = <code object test_extern_python_signature, file '[d:\pypy_stuff\buildbot64\sla...-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:1658]', line 1> def funccall(self, *args_w): # speed hack from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit nargs = len(args_w) fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, args_w[0]) elif nargs == 2: assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, args_w[0], args_w[1]) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) return code.fastcall_3(self.space, self, args_w[0], args_w[1], args_w[2]) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) return code.fastcall_4(self.space, self, args_w[0], args_w[1], args_w[2], args_w[3]) elif (nargs | PyCode.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) if nargs < 5: new_frame = self.space.createframe(code, self.w_func_globals, self) for i in funccallunrolling: if i < nargs: new_frame.locals_cells_stack_w[i] = args_w[i] > return new_frame.run() interpreter\function.py:118: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_extern_p...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1658]', line 1> at line 2 def run(self): """Start this frame's execution.""" if self.getcode().co_flags & pycode.CO_GENERATOR: from pypy.interpreter.generator import GeneratorIterator return GeneratorIterator(self) else: > return self.execute_frame() interpreter\pyframe.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_extern_p...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1658]', line 1> at line 2 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, executioncontext) except OperationError: raise except Exception as e: # general fall-back > raise self._convert_unexpected_exception(e) interpreter\pyframe.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_extern_p...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1658]', line 1> at line 2 e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def _convert_unexpected_exception(self, e): from pypy.interpreter import error > operr = error.get_converted_unexpected_exception(self.space, e) interpreter\pyframe.py:943: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_extern_p...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1658]', line 1> at line 2 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, > executioncontext) interpreter\pyframe.py:286: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_extern_p...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1658]', line 1> at line 2 pycode = <code object test_extern_python_signature, file '[d:\pypy_stuff\buildbot64\sla...-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:1658]', line 1> next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def dispatch(self, pycode, next_instr, ec): # For the sequel, force 'next_instr' to be unsigned for performance next_instr = r_uint(next_instr) co_code = pycode.co_code try: while True: > next_instr = self.handle_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:64: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_extern_p...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1658]', line 1> at line 2 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x01\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00t\x01\x00t\x02\x00|\x01\x00\x...x00\x00S\x03\x00\x01t\x01\x00t\x02\x00|\x01\x00j\x03\x00d\x04\x00d\x05\x00d\x06\x00d\x07\x00\x83\x06\x00\x01d\x00\x00S' next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def handle_bytecode(self, co_code, next_instr, ec): try: > next_instr = self.dispatch_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:71: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_extern_p...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1658]', line 1> at line 2 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x01\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00t\x01\x00t\x02\x00|\x01\x00\x...x00\x00S\x03\x00\x01t\x01\x00t\x02\x00|\x01\x00j\x03\x00d\x04\x00d\x05\x00d\x06\x00d\x07\x00\x83\x06\x00\x01d\x00\x00S' next_instr = 18L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> @jit.unroll_safe def dispatch_bytecode(self, co_code, next_instr, ec): while True: self.last_instr = intmask(next_instr) if jit.we_are_jitted(): if self.debugdata: ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) else: # Only reload next_instr from last_instr when something that # can modify it actually ran (trace function or action # dispatcher). In the common case (no trace, positive ticker) # next_instr is unchanged and the round-trip is skipped. _d = self.debugdata if ec.space.reverse_debugging or ( _d is not None and _d.w_f_trace is not None) or ( not we_are_translated() and 'bytecode_only_trace' in ec.__dict__): ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) actionflag = ec.space.actionflag if actionflag.decrement_ticker(TICK_COUNTER_STEP) < 0: actionflag.action_dispatcher(ec, self) next_instr = r_uint(self.last_instr) opcode = ord(co_code[next_instr]) next_instr += 1 if opcode >= HAVE_ARGUMENT: lo = ord(co_code[next_instr]) hi = ord(co_code[next_instr+1]) next_instr += 2 oparg = (hi * 256) | lo else: oparg = 0 # note: the structure of the code here is such that it makes # (after translation) a big "if/elif" chain, which is then # turned into a switch(). while opcode == opcodedesc.EXTENDED_ARG.index: opcode = ord(co_code[next_instr]) if opcode < HAVE_ARGUMENT: raise BytecodeCorruption lo = ord(co_code[next_instr+1]) hi = ord(co_code[next_instr+2]) next_instr += 3 oparg = (oparg * 65536) | (hi * 256) | lo if opcode == opcodedesc.RETURN_VALUE.index: if not self.blockstack_non_empty(): self.frame_finished_execution = True # for generators raise Return w_returnvalue = self.popvalue() block = self.unrollstack(SReturnValue.kind) if block is None: self.pushvalue(w_returnvalue) raise Return else: unroller = SReturnValue(w_returnvalue) next_instr = block.handle(self, unroller) return next_instr # now inside a 'finally' block elif opcode == opcodedesc.END_FINALLY.index: unroller = self.end_finally() if isinstance(unroller, SuspendedUnroller): # go on unrolling the stack block = self.unrollstack(unroller.kind) if block is None: w_result = unroller.nomoreblocks() self.pushvalue(w_result) raise Return else: next_instr = block.handle(self, unroller) return next_instr elif opcode == opcodedesc.JUMP_ABSOLUTE.index: return self.jump_absolute(oparg, ec) elif opcode == opcodedesc.BREAK_LOOP.index: next_instr = self.BREAK_LOOP(oparg, next_instr) elif opcode == opcodedesc.CONTINUE_LOOP.index: return self.CONTINUE_LOOP(oparg, next_instr) elif opcode == opcodedesc.FOR_ITER.index: next_instr = self.FOR_ITER(oparg, next_instr) elif opcode == opcodedesc.JUMP_FORWARD.index: next_instr = self.JUMP_FORWARD(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_FALSE_OR_POP.index: next_instr = self.JUMP_IF_FALSE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_NOT_DEBUG.index: next_instr = self.JUMP_IF_NOT_DEBUG(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_TRUE_OR_POP.index: next_instr = self.JUMP_IF_TRUE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_FALSE.index: next_instr = self.POP_JUMP_IF_FALSE(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_TRUE.index: next_instr = self.POP_JUMP_IF_TRUE(oparg, next_instr) elif opcode == opcodedesc.BINARY_ADD.index: self.BINARY_ADD(oparg, next_instr) elif opcode == opcodedesc.BINARY_AND.index: self.BINARY_AND(oparg, next_instr) elif opcode == opcodedesc.BINARY_DIVIDE.index: self.BINARY_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_FLOOR_DIVIDE.index: self.BINARY_FLOOR_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_LSHIFT.index: self.BINARY_LSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_MODULO.index: self.BINARY_MODULO(oparg, next_instr) elif opcode == opcodedesc.BINARY_MULTIPLY.index: self.BINARY_MULTIPLY(oparg, next_instr) elif opcode == opcodedesc.BINARY_OR.index: self.BINARY_OR(oparg, next_instr) elif opcode == opcodedesc.BINARY_POWER.index: self.BINARY_POWER(oparg, next_instr) elif opcode == opcodedesc.BINARY_RSHIFT.index: self.BINARY_RSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBSCR.index: self.BINARY_SUBSCR(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBTRACT.index: self.BINARY_SUBTRACT(oparg, next_instr) elif opcode == opcodedesc.BINARY_TRUE_DIVIDE.index: self.BINARY_TRUE_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_XOR.index: self.BINARY_XOR(oparg, next_instr) elif opcode == opcodedesc.BUILD_CLASS.index: self.BUILD_CLASS(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST.index: self.BUILD_LIST(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST_FROM_ARG.index: self.BUILD_LIST_FROM_ARG(oparg, next_instr) elif opcode == opcodedesc.BUILD_MAP.index: self.BUILD_MAP(oparg, next_instr) elif opcode == opcodedesc.BUILD_SET.index: self.BUILD_SET(oparg, next_instr) elif opcode == opcodedesc.BUILD_SLICE.index: self.BUILD_SLICE(oparg, next_instr) elif opcode == opcodedesc.BUILD_TUPLE.index: self.BUILD_TUPLE(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION.index: self.CALL_FUNCTION(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_KW.index: self.CALL_FUNCTION_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR.index: self.CALL_FUNCTION_VAR(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR_KW.index: self.CALL_FUNCTION_VAR_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_METHOD.index: > self.CALL_METHOD(oparg, next_instr) interpreter\pyopcode.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ f = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_extern_p...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1658]', line 1> at line 2 oparg = 3, ignored = (18L,), n_args = 3, n_kwargs = 0, w_self = None @jit.unroll_safe def CALL_METHOD(f, oparg, *ignored): # opargs contains the arg, and kwarg count, excluding the implicit 'self' n_args = oparg & 0xff n_kwargs = (oparg >> 8) & 0xff w_self = f.peekvalue_maybe_none(n_args + (2 * n_kwargs)) n = n_args + (w_self is not None) if not n_kwargs: w_callable = f.peekvalue(n_args + (2 * n_kwargs) + 1) w_result = f.space.call_valuestack( > w_callable, n, f, methodcall=w_self is not None, dropvalues=n_args + 2) objspace\std\callmethod.py:96: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_extern_p...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1658]', line 1> at line 2 dropvalues = 5, methodcall = False def call_valuestack(self, w_func, nargs, frame, dropvalues, methodcall=False): # methodcall is only used for better error messages in argument.py from pypy.interpreter.function import Function, Method, is_builtin_code if frame.get_is_being_profiled() and is_builtin_code(w_func): # XXX: this code is copied&pasted :-( from the slow path below # call_valuestack(). args = frame.make_arguments(nargs) frame.dropvalues(dropvalues) return self.call_args_and_c_profile(frame, w_func, args) if not self.config.objspace.disable_call_speedhacks: # start of hack for performance if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: w_func = w_func.w_function # reuse callable stack place for w_inst frame.settopvalue(w_inst, nargs) nargs += 1 methodcall = True elif nargs > 0 and ( self.abstract_isinstance_w(frame.peekvalue(nargs-1), # :-( w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): return w_func.funccall_valuestack( > nargs, frame, methodcall=methodcall, dropvalues=dropvalues) interpreter\baseobjspace.py:1243: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_extern_p...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1658]', line 1> at line 2 dropvalues = 5, methodcall = False def funccall_valuestack(self, nargs, frame, dropvalues, methodcall=False): # speed hack # methodcall is only for better error messages from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit # if (jit.we_are_jitted() and code is self.space._code_of_sys_exc_info and nargs == 0): frame.dropvalues(dropvalues) from pypy.module.sys.vm import exc_info_direct return exc_info_direct(self.space, frame) # fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: f_0 = frame.peekvalue(0) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, f_0) elif nargs == 2: f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, f_1, f_0) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) frame.dropvalues(dropvalues) return code.fastcall_3(self.space, self, f_2, f_1, f_0) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) f_3 = frame.peekvalue(3) frame.dropvalues(dropvalues) return code.fastcall_4(self.space, self, f_3, f_2, f_1, f_0) elif (nargs | Code.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) return self._flat_pycall(code, nargs, frame, dropvalues) elif fast_natural_arity & Code.FLATPYCALL: natural_arity = fast_natural_arity & 0xff if natural_arity > nargs >= natural_arity - len(self.defs_w): assert isinstance(code, PyCode) return self._flat_pycall_defaults(code, nargs, frame, natural_arity - nargs, dropvalues) elif fast_natural_arity == Code.PASSTHROUGHARGS1 and nargs >= 1: assert isinstance(code, gateway.BuiltinCodePassThroughArguments1) w_obj = frame.peekvalue(nargs-1) args = frame.make_arguments(nargs-1) frame.dropvalues(dropvalues) return code.funcrun_obj(self, w_obj, args) args = frame.make_arguments(nargs, methodcall=methodcall) frame.dropvalues(dropvalues) > return self.call_args(args) interpreter\function.py:190: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject(''), W_BytesObject('test_extern_python_signature'), W_BytesObject('')]) def call_args(self, args): # delegate activation to code > w_res = self.getcode().funcrun(self, args) interpreter\function.py:68: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject(''), W_BytesObject('test_extern_python_signature'), W_BytesObject('')]) def funcrun(self, func, args): > return BuiltinCode.funcrun_obj(self, func, None, args) interpreter\gateway.py:781: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject(''), W_BytesObject('test_extern_python_signature'), W_BytesObject('')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: w_result = activation._run(space, scope_w) except DescrMismatch: if w_obj is not None: args = args.prepend(w_obj) return self._type_unwrap_mismatch(space, args) except Exception as e: > self.handle_exception(space, e) interpreter\gateway.py:795: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> space = StdObjSpace e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def handle_exception(self, space, e): try: if not we_are_translated(): raise raise e except OperationError: raise except Exception as e: # general fall-back from pypy.interpreter import error > raise error.get_converted_unexpected_exception(space, e) interpreter\gateway.py:819: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject(''), W_BytesObject('test_extern_python_signature'), W_BytesObject('')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: > w_result = activation._run(space, scope_w) interpreter\gateway.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinActivation_UwS_ObjSpace_text_text_text_W_Root_W_Root_W_Root_int_W_Root object at 0x000002791c13af38> space = StdObjSpace scope_w = [W_BytesObject(''), W_BytesObject('test_extern_python_signature'), W_BytesObject(''), None, None, None, ...] def _run(self, space, scope_w): > return self.behavior(space, space.text_w(scope_w[0]), space.text_w(scope_w[1]), space.text_w(scope_w[2]), scope_w[3], scope_w[4], scope_w[5], space.gateway_int_w(scope_w[6]), scope_w[7]) <3152-codegen d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\rpython\tool\sourcetools.py:200>:3: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace, cdef = '' module_name = '_CFFI_test_extern_python_signature', source = '' w_includes = None, w_extra_source = None, w_min_version = None, packed = 0 w_extra_compile_args = None @unwrap_spec(cdef='text', module_name='text', source='text', packed=int) def prepare(space, cdef, module_name, source, w_includes=None, w_extra_source=None, w_min_version=None, packed=False, w_extra_compile_args=None): try: import cffi from cffi import FFI # <== the system one, which from cffi import recompiler # needs to be at least cffi 1.0.4 from cffi import ffiplatform except ImportError: pytest.skip("system cffi module not found or older than 1.0.0") if w_min_version is None: min_version = (1, 4, 0) else: min_version = tuple(space.unwrap(w_min_version)) if cffi.__version_info__ < min_version: pytest.skip("system cffi module needs to be at least %s, got %s" % ( min_version, cffi.__version_info__)) space.appexec([], """(): import _cffi_backend # force it to be initialized """) includes = [] if w_includes: includes += space.unpackiterable(w_includes) assert module_name.startswith('test_') module_name = '_CFFI_' + module_name rdir = udir.ensure('recompiler', dir=1) rdir.join('Python.h').write( '#include <stdio.h>\n' '#define PYPY_VERSION XX\n' '#define PyMODINIT_FUNC /*exported*/ void\n' ) path = module_name.replace('.', os.sep) if '.' in module_name: subrdir = rdir.join(module_name[:module_name.index('.')]) os.mkdir(str(subrdir)) else: subrdir = rdir c_file = str(rdir.join('%s.c' % path)) ffi = FFI() for include_ffi_object in includes: ffi.include(include_ffi_object._test_recompiler_source_ffi) ffi.cdef(cdef, packed=packed) ffi.set_source(module_name, source) ffi.emit_c_code(c_file) base_module_name = module_name.split('.')[-1] sources = [] if w_extra_source is not None: sources.append(space.str_w(w_extra_source)) kwargs = {} # GCC 14 promotes -Wincompatible-pointer-types from a warning to an error # by default, which breaks cffi's intentionally-mismatched field-check # probes (e.g. test_misdeclared_field_1). Keep it a warning so the module # compiles and cffi's runtime checks can run. extra = ['-Wno-error=incompatible-pointer-types'] if w_extra_compile_args is not None: extra = extra + space.unwrap(w_extra_compile_args) kwargs['extra_compile_args'] = extra ext = ffiplatform.get_extension(c_file, module_name, include_dirs=[str(rdir)], export_symbols=['_cffi_pypyinit_' + base_module_name], sources=sources, **kwargs) > ffiplatform.compile(str(rdir), ext) module\_cffi_backend\test\test_recompiler.py:86: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x000002792c3898a0> compiler_verbose = 0, debug = None def compile(tmpdir, ext, compiler_verbose=0, debug=None): """Compile a C extension module using distutils.""" saved_environ = os.environ.copy() try: > outputfilename = _build(tmpdir, ext, compiler_verbose, debug) d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x000002792c3898a0> compiler_verbose = 0, debug = 0 def _build(tmpdir, ext, compiler_verbose=0, debug=None): # XXX compact but horrible :-( from cffi._shimmed_dist_utils import Distribution, CompileError, LinkError, set_threshold, set_verbosity dist = Distribution({'ext_modules': [ext]}) dist.parse_config_files() options = dist.get_option_dict('build_ext') if debug is None: debug = sys.flags.debug options['debug'] = ('ffiplatform', debug) options['force'] = ('ffiplatform', True) options['build_lib'] = ('ffiplatform', tmpdir) options['build_temp'] = ('ffiplatform', tmpdir) # try: old_level = set_threshold(0) or 0 try: set_verbosity(compiler_verbose) dist.run_command('build_ext') cmd_obj = dist.get_command_obj('build_ext') [soname] = cmd_obj.get_outputs() finally: set_threshold(old_level) except (CompileError, LinkError) as e: > raise VerificationError('%s: %s' % (e.__class__.__name__, e)) E VerificationError: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2 d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:54: VerificationError ---------------------------- Captured stdout call ----------------------------- generating d:\systemtemp\pytest\usession-main-595\recompiler\_CFFI_test_extern_python_signature.c ---------------------------- Captured stderr call ----------------------------- cl : Command line error D8021 : invalid numeric argument '/Wno-error=incompatible-pointer-types' _________________ AppTestRecompiler.test_extern_python_errors _________________ self = <CallInfo when='call' exception: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2> func = <function <lambda> at 0x0000027925c40098>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ..\_pytest\runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ..\_pytest\runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_extern_python_errors'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_extern_python_errors'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ..\_pytest\vendored_packages\pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00000279153616a8> hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_extern_python_errors'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_extern_python_errors'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ..\_pytest\vendored_packages\pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_extern_python_errors'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_extern_python_errors'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ..\_pytest\vendored_packages\pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_extern_python_errors'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x0000027919f21588> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...hon_errors'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027928bd93a0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027928bd93a0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...hon_errors'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_extern_python_errors'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x0000027919f21538> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...hon_errors'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027928bd9360> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027928bd9360> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...hon_errors'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_extern_python_errors'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ..\_pytest\vendored_packages\pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_extern_python_errors'> def pytest_runtest_call(item): try: > item.runtest() ..\_pytest\runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_extern_python_errors'> def runtest(self): target = self.obj if self.config.option.runappdirect: return target() space = target.im_self.space filename = self._getdynfilename(target) func = app2interp_temp(target.im_func, filename=filename) w_instance = self.parent.w_instance > self.execute_appex(space, func, space, w_instance) tool\pytest\apptest.py:89: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_extern_python_errors'>, space = StdObjSpace target = <function test_extern_python_errors at 0x0000027925c40ae8> args = (StdObjSpace, <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>) def execute_appex(self, space, target, *args): self.space = space try: > target(*args) tool\pytest\apptest.py:30: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) w_func = <Function test_extern_python_errors> args = <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8> def appcaller(space, *args_w): if not isinstance(space, ObjSpace): raise TypeError("first argument must be a space instance.") # the last argument can be an Arguments w_func = self.wget(space, name) if not args_w: return space.call_function(w_func) else: args = args_w[-1] assert args is not None if not isinstance(args, Arguments): > return space.call_function(w_func, *args_w) interpreter\gateway.py:1227: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <Function test_extern_python_errors> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) nargs = 1, Function = <class 'pypy.interpreter.function.Function'> Method = <class 'pypy.interpreter.function.Method'> def call_function(self, w_func, *args_w): nargs = len(args_w) # used for pruning funccall versions if not self.config.objspace.disable_call_speedhacks and nargs < 5: # start of hack for performance from pypy.interpreter.function import Function, Method if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: if nargs < 4: func = w_func.w_function if isinstance(func, Function): return func.funccall(w_inst, *args_w) elif args_w and ( self.abstract_isinstance_w(args_w[0], w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): > return w_func.funccall(*args_w) interpreter\baseobjspace.py:1210: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <Function test_extern_python_errors> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) gateway = <module 'pypy.interpreter.gateway' from 'd:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\interpreter\\gateway.pyc'> PyCode = <class 'pypy.interpreter.pycode.PyCode'> code = <code object test_extern_python_errors, file '[d:\pypy_stuff\buildbot64\slave\...-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:1663]', line 1> def funccall(self, *args_w): # speed hack from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit nargs = len(args_w) fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, args_w[0]) elif nargs == 2: assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, args_w[0], args_w[1]) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) return code.fastcall_3(self.space, self, args_w[0], args_w[1], args_w[2]) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) return code.fastcall_4(self.space, self, args_w[0], args_w[1], args_w[2], args_w[3]) elif (nargs | PyCode.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) if nargs < 5: new_frame = self.space.createframe(code, self.w_func_globals, self) for i in funccallunrolling: if i < nargs: new_frame.locals_cells_stack_w[i] = args_w[i] > return new_frame.run() interpreter\function.py:118: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_extern_p...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1663]', line 1> at line 4 def run(self): """Start this frame's execution.""" if self.getcode().co_flags & pycode.CO_GENERATOR: from pypy.interpreter.generator import GeneratorIterator return GeneratorIterator(self) else: > return self.execute_frame() interpreter\pyframe.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_extern_p...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1663]', line 1> at line 4 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, executioncontext) except OperationError: raise except Exception as e: # general fall-back > raise self._convert_unexpected_exception(e) interpreter\pyframe.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_extern_p...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1663]', line 1> at line 4 e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def _convert_unexpected_exception(self, e): from pypy.interpreter import error > operr = error.get_converted_unexpected_exception(self.space, e) interpreter\pyframe.py:943: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_extern_p...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1663]', line 1> at line 4 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, > executioncontext) interpreter\pyframe.py:286: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_extern_p...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1663]', line 1> at line 4 pycode = <code object test_extern_python_errors, file '[d:\pypy_stuff\buildbot64\slave\...-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:1663]', line 1> next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def dispatch(self, pycode, next_instr, ec): # For the sequel, force 'next_instr' to be unsigned for performance next_instr = r_uint(next_instr) co_code = pycode.co_code try: while True: > next_instr = self.handle_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:64: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_extern_p...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1663]', line 1> at line 4 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00g\x00\x00\x89\x00\x00\x87\x00...05\x00|\x01\x00\xc9\x01\x00d\t\x00d\n\x00d\x05\x00d\x11\x00\xca\x00\x02d\x12\x00\x84\x00\x00\x83\x03\x00\x01d\x00\x00S' next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def handle_bytecode(self, co_code, next_instr, ec): try: > next_instr = self.dispatch_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:71: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_extern_p...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1663]', line 1> at line 4 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00g\x00\x00\x89\x00\x00\x87\x00...05\x00|\x01\x00\xc9\x01\x00d\t\x00d\n\x00d\x05\x00d\x11\x00\xca\x00\x02d\x12\x00\x84\x00\x00\x83\x03\x00\x01d\x00\x00S' next_instr = 18L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> @jit.unroll_safe def dispatch_bytecode(self, co_code, next_instr, ec): while True: self.last_instr = intmask(next_instr) if jit.we_are_jitted(): if self.debugdata: ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) else: # Only reload next_instr from last_instr when something that # can modify it actually ran (trace function or action # dispatcher). In the common case (no trace, positive ticker) # next_instr is unchanged and the round-trip is skipped. _d = self.debugdata if ec.space.reverse_debugging or ( _d is not None and _d.w_f_trace is not None) or ( not we_are_translated() and 'bytecode_only_trace' in ec.__dict__): ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) actionflag = ec.space.actionflag if actionflag.decrement_ticker(TICK_COUNTER_STEP) < 0: actionflag.action_dispatcher(ec, self) next_instr = r_uint(self.last_instr) opcode = ord(co_code[next_instr]) next_instr += 1 if opcode >= HAVE_ARGUMENT: lo = ord(co_code[next_instr]) hi = ord(co_code[next_instr+1]) next_instr += 2 oparg = (hi * 256) | lo else: oparg = 0 # note: the structure of the code here is such that it makes # (after translation) a big "if/elif" chain, which is then # turned into a switch(). while opcode == opcodedesc.EXTENDED_ARG.index: opcode = ord(co_code[next_instr]) if opcode < HAVE_ARGUMENT: raise BytecodeCorruption lo = ord(co_code[next_instr+1]) hi = ord(co_code[next_instr+2]) next_instr += 3 oparg = (oparg * 65536) | (hi * 256) | lo if opcode == opcodedesc.RETURN_VALUE.index: if not self.blockstack_non_empty(): self.frame_finished_execution = True # for generators raise Return w_returnvalue = self.popvalue() block = self.unrollstack(SReturnValue.kind) if block is None: self.pushvalue(w_returnvalue) raise Return else: unroller = SReturnValue(w_returnvalue) next_instr = block.handle(self, unroller) return next_instr # now inside a 'finally' block elif opcode == opcodedesc.END_FINALLY.index: unroller = self.end_finally() if isinstance(unroller, SuspendedUnroller): # go on unrolling the stack block = self.unrollstack(unroller.kind) if block is None: w_result = unroller.nomoreblocks() self.pushvalue(w_result) raise Return else: next_instr = block.handle(self, unroller) return next_instr elif opcode == opcodedesc.JUMP_ABSOLUTE.index: return self.jump_absolute(oparg, ec) elif opcode == opcodedesc.BREAK_LOOP.index: next_instr = self.BREAK_LOOP(oparg, next_instr) elif opcode == opcodedesc.CONTINUE_LOOP.index: return self.CONTINUE_LOOP(oparg, next_instr) elif opcode == opcodedesc.FOR_ITER.index: next_instr = self.FOR_ITER(oparg, next_instr) elif opcode == opcodedesc.JUMP_FORWARD.index: next_instr = self.JUMP_FORWARD(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_FALSE_OR_POP.index: next_instr = self.JUMP_IF_FALSE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_NOT_DEBUG.index: next_instr = self.JUMP_IF_NOT_DEBUG(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_TRUE_OR_POP.index: next_instr = self.JUMP_IF_TRUE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_FALSE.index: next_instr = self.POP_JUMP_IF_FALSE(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_TRUE.index: next_instr = self.POP_JUMP_IF_TRUE(oparg, next_instr) elif opcode == opcodedesc.BINARY_ADD.index: self.BINARY_ADD(oparg, next_instr) elif opcode == opcodedesc.BINARY_AND.index: self.BINARY_AND(oparg, next_instr) elif opcode == opcodedesc.BINARY_DIVIDE.index: self.BINARY_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_FLOOR_DIVIDE.index: self.BINARY_FLOOR_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_LSHIFT.index: self.BINARY_LSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_MODULO.index: self.BINARY_MODULO(oparg, next_instr) elif opcode == opcodedesc.BINARY_MULTIPLY.index: self.BINARY_MULTIPLY(oparg, next_instr) elif opcode == opcodedesc.BINARY_OR.index: self.BINARY_OR(oparg, next_instr) elif opcode == opcodedesc.BINARY_POWER.index: self.BINARY_POWER(oparg, next_instr) elif opcode == opcodedesc.BINARY_RSHIFT.index: self.BINARY_RSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBSCR.index: self.BINARY_SUBSCR(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBTRACT.index: self.BINARY_SUBTRACT(oparg, next_instr) elif opcode == opcodedesc.BINARY_TRUE_DIVIDE.index: self.BINARY_TRUE_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_XOR.index: self.BINARY_XOR(oparg, next_instr) elif opcode == opcodedesc.BUILD_CLASS.index: self.BUILD_CLASS(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST.index: self.BUILD_LIST(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST_FROM_ARG.index: self.BUILD_LIST_FROM_ARG(oparg, next_instr) elif opcode == opcodedesc.BUILD_MAP.index: self.BUILD_MAP(oparg, next_instr) elif opcode == opcodedesc.BUILD_SET.index: self.BUILD_SET(oparg, next_instr) elif opcode == opcodedesc.BUILD_SLICE.index: self.BUILD_SLICE(oparg, next_instr) elif opcode == opcodedesc.BUILD_TUPLE.index: self.BUILD_TUPLE(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION.index: self.CALL_FUNCTION(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_KW.index: self.CALL_FUNCTION_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR.index: self.CALL_FUNCTION_VAR(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR_KW.index: self.CALL_FUNCTION_VAR_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_METHOD.index: > self.CALL_METHOD(oparg, next_instr) interpreter\pyopcode.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ f = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_extern_p...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1663]', line 1> at line 4 oparg = 3, ignored = (18L,), n_args = 3, n_kwargs = 0, w_self = None @jit.unroll_safe def CALL_METHOD(f, oparg, *ignored): # opargs contains the arg, and kwarg count, excluding the implicit 'self' n_args = oparg & 0xff n_kwargs = (oparg >> 8) & 0xff w_self = f.peekvalue_maybe_none(n_args + (2 * n_kwargs)) n = n_args + (w_self is not None) if not n_kwargs: w_callable = f.peekvalue(n_args + (2 * n_kwargs) + 1) w_result = f.space.call_valuestack( > w_callable, n, f, methodcall=w_self is not None, dropvalues=n_args + 2) objspace\std\callmethod.py:96: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_extern_p...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1663]', line 1> at line 4 dropvalues = 5, methodcall = False def call_valuestack(self, w_func, nargs, frame, dropvalues, methodcall=False): # methodcall is only used for better error messages in argument.py from pypy.interpreter.function import Function, Method, is_builtin_code if frame.get_is_being_profiled() and is_builtin_code(w_func): # XXX: this code is copied&pasted :-( from the slow path below # call_valuestack(). args = frame.make_arguments(nargs) frame.dropvalues(dropvalues) return self.call_args_and_c_profile(frame, w_func, args) if not self.config.objspace.disable_call_speedhacks: # start of hack for performance if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: w_func = w_func.w_function # reuse callable stack place for w_inst frame.settopvalue(w_inst, nargs) nargs += 1 methodcall = True elif nargs > 0 and ( self.abstract_isinstance_w(frame.peekvalue(nargs-1), # :-( w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): return w_func.funccall_valuestack( > nargs, frame, methodcall=methodcall, dropvalues=dropvalues) interpreter\baseobjspace.py:1243: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_extern_p...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1663]', line 1> at line 4 dropvalues = 5, methodcall = False def funccall_valuestack(self, nargs, frame, dropvalues, methodcall=False): # speed hack # methodcall is only for better error messages from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit # if (jit.we_are_jitted() and code is self.space._code_of_sys_exc_info and nargs == 0): frame.dropvalues(dropvalues) from pypy.module.sys.vm import exc_info_direct return exc_info_direct(self.space, frame) # fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: f_0 = frame.peekvalue(0) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, f_0) elif nargs == 2: f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, f_1, f_0) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) frame.dropvalues(dropvalues) return code.fastcall_3(self.space, self, f_2, f_1, f_0) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) f_3 = frame.peekvalue(3) frame.dropvalues(dropvalues) return code.fastcall_4(self.space, self, f_3, f_2, f_1, f_0) elif (nargs | Code.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) return self._flat_pycall(code, nargs, frame, dropvalues) elif fast_natural_arity & Code.FLATPYCALL: natural_arity = fast_natural_arity & 0xff if natural_arity > nargs >= natural_arity - len(self.defs_w): assert isinstance(code, PyCode) return self._flat_pycall_defaults(code, nargs, frame, natural_arity - nargs, dropvalues) elif fast_natural_arity == Code.PASSTHROUGHARGS1 and nargs >= 1: assert isinstance(code, gateway.BuiltinCodePassThroughArguments1) w_obj = frame.peekvalue(nargs-1) args = frame.make_arguments(nargs-1) frame.dropvalues(dropvalues) return code.funcrun_obj(self, w_obj, args) args = frame.make_arguments(nargs, methodcall=methodcall) frame.dropvalues(dropvalues) > return self.call_args(args) interpreter\function.py:190: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('\n extern "Python" int bar(int);\n '), W_BytesObject('test_extern_python_errors'), W_BytesObject('')]) def call_args(self, args): # delegate activation to code > w_res = self.getcode().funcrun(self, args) interpreter\function.py:68: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('\n extern "Python" int bar(int);\n '), W_BytesObject('test_extern_python_errors'), W_BytesObject('')]) def funcrun(self, func, args): > return BuiltinCode.funcrun_obj(self, func, None, args) interpreter\gateway.py:781: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('\n extern "Python" int bar(int);\n '), W_BytesObject('test_extern_python_errors'), W_BytesObject('')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: w_result = activation._run(space, scope_w) except DescrMismatch: if w_obj is not None: args = args.prepend(w_obj) return self._type_unwrap_mismatch(space, args) except Exception as e: > self.handle_exception(space, e) interpreter\gateway.py:795: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> space = StdObjSpace e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def handle_exception(self, space, e): try: if not we_are_translated(): raise raise e except OperationError: raise except Exception as e: # general fall-back from pypy.interpreter import error > raise error.get_converted_unexpected_exception(space, e) interpreter\gateway.py:819: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('\n extern "Python" int bar(int);\n '), W_BytesObject('test_extern_python_errors'), W_BytesObject('')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: > w_result = activation._run(space, scope_w) interpreter\gateway.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinActivation_UwS_ObjSpace_text_text_text_W_Root_W_Root_W_Root_int_W_Root object at 0x000002791c13af38> space = StdObjSpace scope_w = [W_BytesObject('\n extern "Python" int bar(int);\n '), W_BytesObject('test_extern_python_errors'), W_BytesObject(''), None, None, None, ...] def _run(self, space, scope_w): > return self.behavior(space, space.text_w(scope_w[0]), space.text_w(scope_w[1]), space.text_w(scope_w[2]), scope_w[3], scope_w[4], scope_w[5], space.gateway_int_w(scope_w[6]), scope_w[7]) <3152-codegen d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\rpython\tool\sourcetools.py:200>:3: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace cdef = '\n extern "Python" int bar(int);\n ' module_name = '_CFFI_test_extern_python_errors', source = '', w_includes = None w_extra_source = None, w_min_version = None, packed = 0 w_extra_compile_args = None @unwrap_spec(cdef='text', module_name='text', source='text', packed=int) def prepare(space, cdef, module_name, source, w_includes=None, w_extra_source=None, w_min_version=None, packed=False, w_extra_compile_args=None): try: import cffi from cffi import FFI # <== the system one, which from cffi import recompiler # needs to be at least cffi 1.0.4 from cffi import ffiplatform except ImportError: pytest.skip("system cffi module not found or older than 1.0.0") if w_min_version is None: min_version = (1, 4, 0) else: min_version = tuple(space.unwrap(w_min_version)) if cffi.__version_info__ < min_version: pytest.skip("system cffi module needs to be at least %s, got %s" % ( min_version, cffi.__version_info__)) space.appexec([], """(): import _cffi_backend # force it to be initialized """) includes = [] if w_includes: includes += space.unpackiterable(w_includes) assert module_name.startswith('test_') module_name = '_CFFI_' + module_name rdir = udir.ensure('recompiler', dir=1) rdir.join('Python.h').write( '#include <stdio.h>\n' '#define PYPY_VERSION XX\n' '#define PyMODINIT_FUNC /*exported*/ void\n' ) path = module_name.replace('.', os.sep) if '.' in module_name: subrdir = rdir.join(module_name[:module_name.index('.')]) os.mkdir(str(subrdir)) else: subrdir = rdir c_file = str(rdir.join('%s.c' % path)) ffi = FFI() for include_ffi_object in includes: ffi.include(include_ffi_object._test_recompiler_source_ffi) ffi.cdef(cdef, packed=packed) ffi.set_source(module_name, source) ffi.emit_c_code(c_file) base_module_name = module_name.split('.')[-1] sources = [] if w_extra_source is not None: sources.append(space.str_w(w_extra_source)) kwargs = {} # GCC 14 promotes -Wincompatible-pointer-types from a warning to an error # by default, which breaks cffi's intentionally-mismatched field-check # probes (e.g. test_misdeclared_field_1). Keep it a warning so the module # compiles and cffi's runtime checks can run. extra = ['-Wno-error=incompatible-pointer-types'] if w_extra_compile_args is not None: extra = extra + space.unwrap(w_extra_compile_args) kwargs['extra_compile_args'] = extra ext = ffiplatform.get_extension(c_file, module_name, include_dirs=[str(rdir)], export_symbols=['_cffi_pypyinit_' + base_module_name], sources=sources, **kwargs) > ffiplatform.compile(str(rdir), ext) module\_cffi_backend\test\test_recompiler.py:86: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x000002792551b4a0> compiler_verbose = 0, debug = None def compile(tmpdir, ext, compiler_verbose=0, debug=None): """Compile a C extension module using distutils.""" saved_environ = os.environ.copy() try: > outputfilename = _build(tmpdir, ext, compiler_verbose, debug) d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x000002792551b4a0> compiler_verbose = 0, debug = 0 def _build(tmpdir, ext, compiler_verbose=0, debug=None): # XXX compact but horrible :-( from cffi._shimmed_dist_utils import Distribution, CompileError, LinkError, set_threshold, set_verbosity dist = Distribution({'ext_modules': [ext]}) dist.parse_config_files() options = dist.get_option_dict('build_ext') if debug is None: debug = sys.flags.debug options['debug'] = ('ffiplatform', debug) options['force'] = ('ffiplatform', True) options['build_lib'] = ('ffiplatform', tmpdir) options['build_temp'] = ('ffiplatform', tmpdir) # try: old_level = set_threshold(0) or 0 try: set_verbosity(compiler_verbose) dist.run_command('build_ext') cmd_obj = dist.get_command_obj('build_ext') [soname] = cmd_obj.get_outputs() finally: set_threshold(old_level) except (CompileError, LinkError) as e: > raise VerificationError('%s: %s' % (e.__class__.__name__, e)) E VerificationError: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2 d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:54: VerificationError ---------------------------- Captured stdout call ----------------------------- generating d:\systemtemp\pytest\usession-main-595\recompiler\_CFFI_test_extern_python_errors.c ---------------------------- Captured stderr call ----------------------------- cl : Command line error D8021 : invalid numeric argument '/Wno-error=incompatible-pointer-types' _________________ AppTestRecompiler.test_introspect_function __________________ self = <CallInfo when='call' exception: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2> func = <function <lambda> at 0x000002792d19c110>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ..\_pytest\runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ..\_pytest\runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_introspect_function'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_introspect_function'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ..\_pytest\vendored_packages\pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00000279153616a8> hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_introspect_function'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_introspect_function'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ..\_pytest\vendored_packages\pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_introspect_function'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_introspect_function'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ..\_pytest\vendored_packages\pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_introspect_function'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x0000027929341128> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...t_function'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792a4efd20> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792a4efd20> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...t_function'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_introspect_function'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x0000027929341088> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...t_function'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792a4efce0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792a4efce0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...t_function'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_introspect_function'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ..\_pytest\vendored_packages\pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_introspect_function'> def pytest_runtest_call(item): try: > item.runtest() ..\_pytest\runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_introspect_function'> def runtest(self): target = self.obj if self.config.option.runappdirect: return target() space = target.im_self.space filename = self._getdynfilename(target) func = app2interp_temp(target.im_func, filename=filename) w_instance = self.parent.w_instance > self.execute_appex(space, func, space, w_instance) tool\pytest\apptest.py:89: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_introspect_function'>, space = StdObjSpace target = <function test_introspect_function at 0x000002792d19c908> args = (StdObjSpace, <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>) def execute_appex(self, space, target, *args): self.space = space try: > target(*args) tool\pytest\apptest.py:30: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) w_func = <Function test_introspect_function> args = <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8> def appcaller(space, *args_w): if not isinstance(space, ObjSpace): raise TypeError("first argument must be a space instance.") # the last argument can be an Arguments w_func = self.wget(space, name) if not args_w: return space.call_function(w_func) else: args = args_w[-1] assert args is not None if not isinstance(args, Arguments): > return space.call_function(w_func, *args_w) interpreter\gateway.py:1227: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <Function test_introspect_function> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) nargs = 1, Function = <class 'pypy.interpreter.function.Function'> Method = <class 'pypy.interpreter.function.Method'> def call_function(self, w_func, *args_w): nargs = len(args_w) # used for pruning funccall versions if not self.config.objspace.disable_call_speedhacks and nargs < 5: # start of hack for performance from pypy.interpreter.function import Function, Method if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: if nargs < 4: func = w_func.w_function if isinstance(func, Function): return func.funccall(w_inst, *args_w) elif args_w and ( self.abstract_isinstance_w(args_w[0], w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): > return w_func.funccall(*args_w) interpreter\baseobjspace.py:1210: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <Function test_introspect_function> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) gateway = <module 'pypy.interpreter.gateway' from 'd:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\interpreter\\gateway.pyc'> PyCode = <class 'pypy.interpreter.pycode.PyCode'> code = <code object test_introspect_function, file '[d:\pypy_stuff\buildbot64\slave\o...-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:1725]', line 1> def funccall(self, *args_w): # speed hack from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit nargs = len(args_w) fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, args_w[0]) elif nargs == 2: assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, args_w[0], args_w[1]) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) return code.fastcall_3(self.space, self, args_w[0], args_w[1], args_w[2]) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) return code.fastcall_4(self.space, self, args_w[0], args_w[1], args_w[2], args_w[3]) elif (nargs | PyCode.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) if nargs < 5: new_frame = self.space.createframe(code, self.w_func_globals, self) for i in funccallunrolling: if i < nargs: new_frame.locals_cells_stack_w[i] = args_w[i] > return new_frame.run() interpreter\function.py:118: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_introspe...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1725]', line 1> at line 4 def run(self): """Start this frame's execution.""" if self.getcode().co_flags & pycode.CO_GENERATOR: from pypy.interpreter.generator import GeneratorIterator return GeneratorIterator(self) else: > return self.execute_frame() interpreter\pyframe.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_introspe...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1725]', line 1> at line 4 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, executioncontext) except OperationError: raise except Exception as e: # general fall-back > raise self._convert_unexpected_exception(e) interpreter\pyframe.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_introspe...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1725]', line 1> at line 4 e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def _convert_unexpected_exception(self, e): from pypy.interpreter import error > operr = error.get_converted_unexpected_exception(self.space, e) interpreter\pyframe.py:943: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_introspe...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1725]', line 1> at line 4 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, > executioncontext) interpreter\pyframe.py:286: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_introspe...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1725]', line 1> at line 4 pycode = <code object test_introspect_function, file '[d:\pypy_stuff\buildbot64\slave\o...-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:1725]', line 1> next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def dispatch(self, pycode, next_instr, ec): # For the sequel, force 'next_instr' to be unsigned for performance next_instr = r_uint(next_instr) co_code = pycode.co_code try: while True: > next_instr = self.handle_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:64: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_introspe...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1725]', line 1> at line 4 co_code = "|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00\xcc\x1b\x00t\x01\x00|\x02\x0...\x01\x00\xc9\t\x00|\x02\x00d\x04\x00\xca\x02\x00\xca\x01\x00|\x03\x00k\x08\x00s\xc7\x00t\x02\x00\x82\x01\x00d\x00\x00S" next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def handle_bytecode(self, co_code, next_instr, ec): try: > next_instr = self.dispatch_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:71: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_introspe...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1725]', line 1> at line 4 co_code = "|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00\xcc\x1b\x00t\x01\x00|\x02\x0...\x01\x00\xc9\t\x00|\x02\x00d\x04\x00\xca\x02\x00\xca\x01\x00|\x03\x00k\x08\x00s\xc7\x00t\x02\x00\x82\x01\x00d\x00\x00S" next_instr = 18L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> @jit.unroll_safe def dispatch_bytecode(self, co_code, next_instr, ec): while True: self.last_instr = intmask(next_instr) if jit.we_are_jitted(): if self.debugdata: ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) else: # Only reload next_instr from last_instr when something that # can modify it actually ran (trace function or action # dispatcher). In the common case (no trace, positive ticker) # next_instr is unchanged and the round-trip is skipped. _d = self.debugdata if ec.space.reverse_debugging or ( _d is not None and _d.w_f_trace is not None) or ( not we_are_translated() and 'bytecode_only_trace' in ec.__dict__): ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) actionflag = ec.space.actionflag if actionflag.decrement_ticker(TICK_COUNTER_STEP) < 0: actionflag.action_dispatcher(ec, self) next_instr = r_uint(self.last_instr) opcode = ord(co_code[next_instr]) next_instr += 1 if opcode >= HAVE_ARGUMENT: lo = ord(co_code[next_instr]) hi = ord(co_code[next_instr+1]) next_instr += 2 oparg = (hi * 256) | lo else: oparg = 0 # note: the structure of the code here is such that it makes # (after translation) a big "if/elif" chain, which is then # turned into a switch(). while opcode == opcodedesc.EXTENDED_ARG.index: opcode = ord(co_code[next_instr]) if opcode < HAVE_ARGUMENT: raise BytecodeCorruption lo = ord(co_code[next_instr+1]) hi = ord(co_code[next_instr+2]) next_instr += 3 oparg = (oparg * 65536) | (hi * 256) | lo if opcode == opcodedesc.RETURN_VALUE.index: if not self.blockstack_non_empty(): self.frame_finished_execution = True # for generators raise Return w_returnvalue = self.popvalue() block = self.unrollstack(SReturnValue.kind) if block is None: self.pushvalue(w_returnvalue) raise Return else: unroller = SReturnValue(w_returnvalue) next_instr = block.handle(self, unroller) return next_instr # now inside a 'finally' block elif opcode == opcodedesc.END_FINALLY.index: unroller = self.end_finally() if isinstance(unroller, SuspendedUnroller): # go on unrolling the stack block = self.unrollstack(unroller.kind) if block is None: w_result = unroller.nomoreblocks() self.pushvalue(w_result) raise Return else: next_instr = block.handle(self, unroller) return next_instr elif opcode == opcodedesc.JUMP_ABSOLUTE.index: return self.jump_absolute(oparg, ec) elif opcode == opcodedesc.BREAK_LOOP.index: next_instr = self.BREAK_LOOP(oparg, next_instr) elif opcode == opcodedesc.CONTINUE_LOOP.index: return self.CONTINUE_LOOP(oparg, next_instr) elif opcode == opcodedesc.FOR_ITER.index: next_instr = self.FOR_ITER(oparg, next_instr) elif opcode == opcodedesc.JUMP_FORWARD.index: next_instr = self.JUMP_FORWARD(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_FALSE_OR_POP.index: next_instr = self.JUMP_IF_FALSE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_NOT_DEBUG.index: next_instr = self.JUMP_IF_NOT_DEBUG(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_TRUE_OR_POP.index: next_instr = self.JUMP_IF_TRUE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_FALSE.index: next_instr = self.POP_JUMP_IF_FALSE(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_TRUE.index: next_instr = self.POP_JUMP_IF_TRUE(oparg, next_instr) elif opcode == opcodedesc.BINARY_ADD.index: self.BINARY_ADD(oparg, next_instr) elif opcode == opcodedesc.BINARY_AND.index: self.BINARY_AND(oparg, next_instr) elif opcode == opcodedesc.BINARY_DIVIDE.index: self.BINARY_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_FLOOR_DIVIDE.index: self.BINARY_FLOOR_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_LSHIFT.index: self.BINARY_LSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_MODULO.index: self.BINARY_MODULO(oparg, next_instr) elif opcode == opcodedesc.BINARY_MULTIPLY.index: self.BINARY_MULTIPLY(oparg, next_instr) elif opcode == opcodedesc.BINARY_OR.index: self.BINARY_OR(oparg, next_instr) elif opcode == opcodedesc.BINARY_POWER.index: self.BINARY_POWER(oparg, next_instr) elif opcode == opcodedesc.BINARY_RSHIFT.index: self.BINARY_RSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBSCR.index: self.BINARY_SUBSCR(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBTRACT.index: self.BINARY_SUBTRACT(oparg, next_instr) elif opcode == opcodedesc.BINARY_TRUE_DIVIDE.index: self.BINARY_TRUE_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_XOR.index: self.BINARY_XOR(oparg, next_instr) elif opcode == opcodedesc.BUILD_CLASS.index: self.BUILD_CLASS(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST.index: self.BUILD_LIST(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST_FROM_ARG.index: self.BUILD_LIST_FROM_ARG(oparg, next_instr) elif opcode == opcodedesc.BUILD_MAP.index: self.BUILD_MAP(oparg, next_instr) elif opcode == opcodedesc.BUILD_SET.index: self.BUILD_SET(oparg, next_instr) elif opcode == opcodedesc.BUILD_SLICE.index: self.BUILD_SLICE(oparg, next_instr) elif opcode == opcodedesc.BUILD_TUPLE.index: self.BUILD_TUPLE(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION.index: self.CALL_FUNCTION(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_KW.index: self.CALL_FUNCTION_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR.index: self.CALL_FUNCTION_VAR(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR_KW.index: self.CALL_FUNCTION_VAR_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_METHOD.index: > self.CALL_METHOD(oparg, next_instr) interpreter\pyopcode.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ f = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_introspe...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1725]', line 1> at line 4 oparg = 3, ignored = (18L,), n_args = 3, n_kwargs = 0, w_self = None @jit.unroll_safe def CALL_METHOD(f, oparg, *ignored): # opargs contains the arg, and kwarg count, excluding the implicit 'self' n_args = oparg & 0xff n_kwargs = (oparg >> 8) & 0xff w_self = f.peekvalue_maybe_none(n_args + (2 * n_kwargs)) n = n_args + (w_self is not None) if not n_kwargs: w_callable = f.peekvalue(n_args + (2 * n_kwargs) + 1) w_result = f.space.call_valuestack( > w_callable, n, f, methodcall=w_self is not None, dropvalues=n_args + 2) objspace\std\callmethod.py:96: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_introspe...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1725]', line 1> at line 4 dropvalues = 5, methodcall = False def call_valuestack(self, w_func, nargs, frame, dropvalues, methodcall=False): # methodcall is only used for better error messages in argument.py from pypy.interpreter.function import Function, Method, is_builtin_code if frame.get_is_being_profiled() and is_builtin_code(w_func): # XXX: this code is copied&pasted :-( from the slow path below # call_valuestack(). args = frame.make_arguments(nargs) frame.dropvalues(dropvalues) return self.call_args_and_c_profile(frame, w_func, args) if not self.config.objspace.disable_call_speedhacks: # start of hack for performance if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: w_func = w_func.w_function # reuse callable stack place for w_inst frame.settopvalue(w_inst, nargs) nargs += 1 methodcall = True elif nargs > 0 and ( self.abstract_isinstance_w(frame.peekvalue(nargs-1), # :-( w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): return w_func.funccall_valuestack( > nargs, frame, methodcall=methodcall, dropvalues=dropvalues) interpreter\baseobjspace.py:1243: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_introspe...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1725]', line 1> at line 4 dropvalues = 5, methodcall = False def funccall_valuestack(self, nargs, frame, dropvalues, methodcall=False): # speed hack # methodcall is only for better error messages from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit # if (jit.we_are_jitted() and code is self.space._code_of_sys_exc_info and nargs == 0): frame.dropvalues(dropvalues) from pypy.module.sys.vm import exc_info_direct return exc_info_direct(self.space, frame) # fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: f_0 = frame.peekvalue(0) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, f_0) elif nargs == 2: f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, f_1, f_0) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) frame.dropvalues(dropvalues) return code.fastcall_3(self.space, self, f_2, f_1, f_0) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) f_3 = frame.peekvalue(3) frame.dropvalues(dropvalues) return code.fastcall_4(self.space, self, f_3, f_2, f_1, f_0) elif (nargs | Code.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) return self._flat_pycall(code, nargs, frame, dropvalues) elif fast_natural_arity & Code.FLATPYCALL: natural_arity = fast_natural_arity & 0xff if natural_arity > nargs >= natural_arity - len(self.defs_w): assert isinstance(code, PyCode) return self._flat_pycall_defaults(code, nargs, frame, natural_arity - nargs, dropvalues) elif fast_natural_arity == Code.PASSTHROUGHARGS1 and nargs >= 1: assert isinstance(code, gateway.BuiltinCodePassThroughArguments1) w_obj = frame.peekvalue(nargs-1) args = frame.make_arguments(nargs-1) frame.dropvalues(dropvalues) return code.funcrun_obj(self, w_obj, args) args = frame.make_arguments(nargs, methodcall=methodcall) frame.dropvalues(dropvalues) > return self.call_args(args) interpreter\function.py:190: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('\n float f1(double);\n '), W_Bytes...'), W_BytesObject('\n float f1(double x) { return x; }\n ')]) def call_args(self, args): # delegate activation to code > w_res = self.getcode().funcrun(self, args) interpreter\function.py:68: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('\n float f1(double);\n '), W_Bytes...'), W_BytesObject('\n float f1(double x) { return x; }\n ')]) def funcrun(self, func, args): > return BuiltinCode.funcrun_obj(self, func, None, args) interpreter\gateway.py:781: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('\n float f1(double);\n '), W_Bytes...'), W_BytesObject('\n float f1(double x) { return x; }\n ')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: w_result = activation._run(space, scope_w) except DescrMismatch: if w_obj is not None: args = args.prepend(w_obj) return self._type_unwrap_mismatch(space, args) except Exception as e: > self.handle_exception(space, e) interpreter\gateway.py:795: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> space = StdObjSpace e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def handle_exception(self, space, e): try: if not we_are_translated(): raise raise e except OperationError: raise except Exception as e: # general fall-back from pypy.interpreter import error > raise error.get_converted_unexpected_exception(space, e) interpreter\gateway.py:819: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('\n float f1(double);\n '), W_Bytes...'), W_BytesObject('\n float f1(double x) { return x; }\n ')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: > w_result = activation._run(space, scope_w) interpreter\gateway.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinActivation_UwS_ObjSpace_text_text_text_W_Root_W_Root_W_Root_int_W_Root object at 0x000002791c13af38> space = StdObjSpace scope_w = [W_BytesObject('\n float f1(double);\n '), W_BytesObject('test_introspect_function'), W_BytesObject('\n float f1(double x) { return x; }\n '), None, None, None, ...] def _run(self, space, scope_w): > return self.behavior(space, space.text_w(scope_w[0]), space.text_w(scope_w[1]), space.text_w(scope_w[2]), scope_w[3], scope_w[4], scope_w[5], space.gateway_int_w(scope_w[6]), scope_w[7]) <3152-codegen d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\rpython\tool\sourcetools.py:200>:3: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace, cdef = '\n float f1(double);\n ' module_name = '_CFFI_test_introspect_function' source = '\n float f1(double x) { return x; }\n ' w_includes = None, w_extra_source = None, w_min_version = None, packed = 0 w_extra_compile_args = None @unwrap_spec(cdef='text', module_name='text', source='text', packed=int) def prepare(space, cdef, module_name, source, w_includes=None, w_extra_source=None, w_min_version=None, packed=False, w_extra_compile_args=None): try: import cffi from cffi import FFI # <== the system one, which from cffi import recompiler # needs to be at least cffi 1.0.4 from cffi import ffiplatform except ImportError: pytest.skip("system cffi module not found or older than 1.0.0") if w_min_version is None: min_version = (1, 4, 0) else: min_version = tuple(space.unwrap(w_min_version)) if cffi.__version_info__ < min_version: pytest.skip("system cffi module needs to be at least %s, got %s" % ( min_version, cffi.__version_info__)) space.appexec([], """(): import _cffi_backend # force it to be initialized """) includes = [] if w_includes: includes += space.unpackiterable(w_includes) assert module_name.startswith('test_') module_name = '_CFFI_' + module_name rdir = udir.ensure('recompiler', dir=1) rdir.join('Python.h').write( '#include <stdio.h>\n' '#define PYPY_VERSION XX\n' '#define PyMODINIT_FUNC /*exported*/ void\n' ) path = module_name.replace('.', os.sep) if '.' in module_name: subrdir = rdir.join(module_name[:module_name.index('.')]) os.mkdir(str(subrdir)) else: subrdir = rdir c_file = str(rdir.join('%s.c' % path)) ffi = FFI() for include_ffi_object in includes: ffi.include(include_ffi_object._test_recompiler_source_ffi) ffi.cdef(cdef, packed=packed) ffi.set_source(module_name, source) ffi.emit_c_code(c_file) base_module_name = module_name.split('.')[-1] sources = [] if w_extra_source is not None: sources.append(space.str_w(w_extra_source)) kwargs = {} # GCC 14 promotes -Wincompatible-pointer-types from a warning to an error # by default, which breaks cffi's intentionally-mismatched field-check # probes (e.g. test_misdeclared_field_1). Keep it a warning so the module # compiles and cffi's runtime checks can run. extra = ['-Wno-error=incompatible-pointer-types'] if w_extra_compile_args is not None: extra = extra + space.unwrap(w_extra_compile_args) kwargs['extra_compile_args'] = extra ext = ffiplatform.get_extension(c_file, module_name, include_dirs=[str(rdir)], export_symbols=['_cffi_pypyinit_' + base_module_name], sources=sources, **kwargs) > ffiplatform.compile(str(rdir), ext) module\_cffi_backend\test\test_recompiler.py:86: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x000002792a4fe8e0> compiler_verbose = 0, debug = None def compile(tmpdir, ext, compiler_verbose=0, debug=None): """Compile a C extension module using distutils.""" saved_environ = os.environ.copy() try: > outputfilename = _build(tmpdir, ext, compiler_verbose, debug) d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x000002792a4fe8e0> compiler_verbose = 0, debug = 0 def _build(tmpdir, ext, compiler_verbose=0, debug=None): # XXX compact but horrible :-( from cffi._shimmed_dist_utils import Distribution, CompileError, LinkError, set_threshold, set_verbosity dist = Distribution({'ext_modules': [ext]}) dist.parse_config_files() options = dist.get_option_dict('build_ext') if debug is None: debug = sys.flags.debug options['debug'] = ('ffiplatform', debug) options['force'] = ('ffiplatform', True) options['build_lib'] = ('ffiplatform', tmpdir) options['build_temp'] = ('ffiplatform', tmpdir) # try: old_level = set_threshold(0) or 0 try: set_verbosity(compiler_verbose) dist.run_command('build_ext') cmd_obj = dist.get_command_obj('build_ext') [soname] = cmd_obj.get_outputs() finally: set_threshold(old_level) except (CompileError, LinkError) as e: > raise VerificationError('%s: %s' % (e.__class__.__name__, e)) E VerificationError: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2 d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:54: VerificationError ---------------------------- Captured stdout call ----------------------------- generating d:\systemtemp\pytest\usession-main-595\recompiler\_CFFI_test_introspect_function.c ---------------------------- Captured stderr call ----------------------------- cl : Command line error D8021 : invalid numeric argument '/Wno-error=incompatible-pointer-types' ________________ AppTestRecompiler.test_introspect_global_var _________________ self = <CallInfo when='call' exception: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2> func = <function <lambda> at 0x000002792b268548>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ..\_pytest\runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ..\_pytest\runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_introspect_global_var'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_introspect_global_var'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ..\_pytest\vendored_packages\pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00000279153616a8> hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_introspect_global_var'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_introspect_global_var'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ..\_pytest\vendored_packages\pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_introspect_global_var'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_introspect_global_var'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ..\_pytest\vendored_packages\pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_introspect_global_var'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791abb6d18> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...global_var'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792afc03e0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792afc03e0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...global_var'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_introspect_global_var'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791abb6c78> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...global_var'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792afc03a0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792afc03a0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...global_var'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_introspect_global_var'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ..\_pytest\vendored_packages\pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_introspect_global_var'> def pytest_runtest_call(item): try: > item.runtest() ..\_pytest\runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_introspect_global_var'> def runtest(self): target = self.obj if self.config.option.runappdirect: return target() space = target.im_self.space filename = self._getdynfilename(target) func = app2interp_temp(target.im_func, filename=filename) w_instance = self.parent.w_instance > self.execute_appex(space, func, space, w_instance) tool\pytest\apptest.py:89: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_introspect_global_var'>, space = StdObjSpace target = <function test_introspect_global_var at 0x000002792b268638> args = (StdObjSpace, <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>) def execute_appex(self, space, target, *args): self.space = space try: > target(*args) tool\pytest\apptest.py:30: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) w_func = <Function test_introspect_global_var> args = <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8> def appcaller(space, *args_w): if not isinstance(space, ObjSpace): raise TypeError("first argument must be a space instance.") # the last argument can be an Arguments w_func = self.wget(space, name) if not args_w: return space.call_function(w_func) else: args = args_w[-1] assert args is not None if not isinstance(args, Arguments): > return space.call_function(w_func, *args_w) interpreter\gateway.py:1227: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <Function test_introspect_global_var> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) nargs = 1, Function = <class 'pypy.interpreter.function.Function'> Method = <class 'pypy.interpreter.function.Method'> def call_function(self, w_func, *args_w): nargs = len(args_w) # used for pruning funccall versions if not self.config.objspace.disable_call_speedhacks and nargs < 5: # start of hack for performance from pypy.interpreter.function import Function, Method if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: if nargs < 4: func = w_func.w_function if isinstance(func, Function): return func.funccall(w_inst, *args_w) elif args_w and ( self.abstract_isinstance_w(args_w[0], w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): > return w_func.funccall(*args_w) interpreter\baseobjspace.py:1210: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <Function test_introspect_global_var> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) gateway = <module 'pypy.interpreter.gateway' from 'd:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\interpreter\\gateway.pyc'> PyCode = <class 'pypy.interpreter.pycode.PyCode'> code = <code object test_introspect_global_var, file '[d:\pypy_stuff\buildbot64\slave...-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:1738]', line 1> def funccall(self, *args_w): # speed hack from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit nargs = len(args_w) fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, args_w[0]) elif nargs == 2: assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, args_w[0], args_w[1]) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) return code.fastcall_3(self.space, self, args_w[0], args_w[1], args_w[2]) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) return code.fastcall_4(self.space, self, args_w[0], args_w[1], args_w[2], args_w[3]) elif (nargs | PyCode.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) if nargs < 5: new_frame = self.space.createframe(code, self.w_func_globals, self) for i in funccallunrolling: if i < nargs: new_frame.locals_cells_stack_w[i] = args_w[i] > return new_frame.run() interpreter\function.py:118: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_introspe...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1738]', line 1> at line 4 def run(self): """Start this frame's execution.""" if self.getcode().co_flags & pycode.CO_GENERATOR: from pypy.interpreter.generator import GeneratorIterator return GeneratorIterator(self) else: > return self.execute_frame() interpreter\pyframe.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_introspe...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1738]', line 1> at line 4 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, executioncontext) except OperationError: raise except Exception as e: # general fall-back > raise self._convert_unexpected_exception(e) interpreter\pyframe.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_introspe...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1738]', line 1> at line 4 e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def _convert_unexpected_exception(self, e): from pypy.interpreter import error > operr = error.get_converted_unexpected_exception(self.space, e) interpreter\pyframe.py:943: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_introspe...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1738]', line 1> at line 4 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, > executioncontext) interpreter\pyframe.py:286: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_introspe...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1738]', line 1> at line 4 pycode = <code object test_introspect_global_var, file '[d:\pypy_stuff\buildbot64\slave...-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:1738]', line 1> next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def dispatch(self, pycode, next_instr, ec): # For the sequel, force 'next_instr' to be unsigned for performance next_instr = r_uint(next_instr) co_code = pycode.co_code try: while True: > next_instr = self.handle_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:64: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_introspe...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1738]', line 1> at line 4 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x01\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00\xcc\x1b\x00t\x01\x00|\x02\x0...t\x02\x00\x82\x01\x00\xcc\x18\x00|\x03\x00j\x06\x00j\x07\x00d\x05\x00k\x02\x00s\x87\x00t\x02\x00\x82\x01\x00d\x00\x00S' next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def handle_bytecode(self, co_code, next_instr, ec): try: > next_instr = self.dispatch_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:71: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_introspe...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1738]', line 1> at line 4 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x01\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00\xcc\x1b\x00t\x01\x00|\x02\x0...t\x02\x00\x82\x01\x00\xcc\x18\x00|\x03\x00j\x06\x00j\x07\x00d\x05\x00k\x02\x00s\x87\x00t\x02\x00\x82\x01\x00d\x00\x00S' next_instr = 18L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> @jit.unroll_safe def dispatch_bytecode(self, co_code, next_instr, ec): while True: self.last_instr = intmask(next_instr) if jit.we_are_jitted(): if self.debugdata: ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) else: # Only reload next_instr from last_instr when something that # can modify it actually ran (trace function or action # dispatcher). In the common case (no trace, positive ticker) # next_instr is unchanged and the round-trip is skipped. _d = self.debugdata if ec.space.reverse_debugging or ( _d is not None and _d.w_f_trace is not None) or ( not we_are_translated() and 'bytecode_only_trace' in ec.__dict__): ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) actionflag = ec.space.actionflag if actionflag.decrement_ticker(TICK_COUNTER_STEP) < 0: actionflag.action_dispatcher(ec, self) next_instr = r_uint(self.last_instr) opcode = ord(co_code[next_instr]) next_instr += 1 if opcode >= HAVE_ARGUMENT: lo = ord(co_code[next_instr]) hi = ord(co_code[next_instr+1]) next_instr += 2 oparg = (hi * 256) | lo else: oparg = 0 # note: the structure of the code here is such that it makes # (after translation) a big "if/elif" chain, which is then # turned into a switch(). while opcode == opcodedesc.EXTENDED_ARG.index: opcode = ord(co_code[next_instr]) if opcode < HAVE_ARGUMENT: raise BytecodeCorruption lo = ord(co_code[next_instr+1]) hi = ord(co_code[next_instr+2]) next_instr += 3 oparg = (oparg * 65536) | (hi * 256) | lo if opcode == opcodedesc.RETURN_VALUE.index: if not self.blockstack_non_empty(): self.frame_finished_execution = True # for generators raise Return w_returnvalue = self.popvalue() block = self.unrollstack(SReturnValue.kind) if block is None: self.pushvalue(w_returnvalue) raise Return else: unroller = SReturnValue(w_returnvalue) next_instr = block.handle(self, unroller) return next_instr # now inside a 'finally' block elif opcode == opcodedesc.END_FINALLY.index: unroller = self.end_finally() if isinstance(unroller, SuspendedUnroller): # go on unrolling the stack block = self.unrollstack(unroller.kind) if block is None: w_result = unroller.nomoreblocks() self.pushvalue(w_result) raise Return else: next_instr = block.handle(self, unroller) return next_instr elif opcode == opcodedesc.JUMP_ABSOLUTE.index: return self.jump_absolute(oparg, ec) elif opcode == opcodedesc.BREAK_LOOP.index: next_instr = self.BREAK_LOOP(oparg, next_instr) elif opcode == opcodedesc.CONTINUE_LOOP.index: return self.CONTINUE_LOOP(oparg, next_instr) elif opcode == opcodedesc.FOR_ITER.index: next_instr = self.FOR_ITER(oparg, next_instr) elif opcode == opcodedesc.JUMP_FORWARD.index: next_instr = self.JUMP_FORWARD(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_FALSE_OR_POP.index: next_instr = self.JUMP_IF_FALSE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_NOT_DEBUG.index: next_instr = self.JUMP_IF_NOT_DEBUG(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_TRUE_OR_POP.index: next_instr = self.JUMP_IF_TRUE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_FALSE.index: next_instr = self.POP_JUMP_IF_FALSE(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_TRUE.index: next_instr = self.POP_JUMP_IF_TRUE(oparg, next_instr) elif opcode == opcodedesc.BINARY_ADD.index: self.BINARY_ADD(oparg, next_instr) elif opcode == opcodedesc.BINARY_AND.index: self.BINARY_AND(oparg, next_instr) elif opcode == opcodedesc.BINARY_DIVIDE.index: self.BINARY_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_FLOOR_DIVIDE.index: self.BINARY_FLOOR_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_LSHIFT.index: self.BINARY_LSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_MODULO.index: self.BINARY_MODULO(oparg, next_instr) elif opcode == opcodedesc.BINARY_MULTIPLY.index: self.BINARY_MULTIPLY(oparg, next_instr) elif opcode == opcodedesc.BINARY_OR.index: self.BINARY_OR(oparg, next_instr) elif opcode == opcodedesc.BINARY_POWER.index: self.BINARY_POWER(oparg, next_instr) elif opcode == opcodedesc.BINARY_RSHIFT.index: self.BINARY_RSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBSCR.index: self.BINARY_SUBSCR(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBTRACT.index: self.BINARY_SUBTRACT(oparg, next_instr) elif opcode == opcodedesc.BINARY_TRUE_DIVIDE.index: self.BINARY_TRUE_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_XOR.index: self.BINARY_XOR(oparg, next_instr) elif opcode == opcodedesc.BUILD_CLASS.index: self.BUILD_CLASS(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST.index: self.BUILD_LIST(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST_FROM_ARG.index: self.BUILD_LIST_FROM_ARG(oparg, next_instr) elif opcode == opcodedesc.BUILD_MAP.index: self.BUILD_MAP(oparg, next_instr) elif opcode == opcodedesc.BUILD_SET.index: self.BUILD_SET(oparg, next_instr) elif opcode == opcodedesc.BUILD_SLICE.index: self.BUILD_SLICE(oparg, next_instr) elif opcode == opcodedesc.BUILD_TUPLE.index: self.BUILD_TUPLE(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION.index: self.CALL_FUNCTION(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_KW.index: self.CALL_FUNCTION_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR.index: self.CALL_FUNCTION_VAR(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR_KW.index: self.CALL_FUNCTION_VAR_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_METHOD.index: > self.CALL_METHOD(oparg, next_instr) interpreter\pyopcode.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ f = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_introspe...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1738]', line 1> at line 4 oparg = 3, ignored = (18L,), n_args = 3, n_kwargs = 0, w_self = None @jit.unroll_safe def CALL_METHOD(f, oparg, *ignored): # opargs contains the arg, and kwarg count, excluding the implicit 'self' n_args = oparg & 0xff n_kwargs = (oparg >> 8) & 0xff w_self = f.peekvalue_maybe_none(n_args + (2 * n_kwargs)) n = n_args + (w_self is not None) if not n_kwargs: w_callable = f.peekvalue(n_args + (2 * n_kwargs) + 1) w_result = f.space.call_valuestack( > w_callable, n, f, methodcall=w_self is not None, dropvalues=n_args + 2) objspace\std\callmethod.py:96: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_introspe...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1738]', line 1> at line 4 dropvalues = 5, methodcall = False def call_valuestack(self, w_func, nargs, frame, dropvalues, methodcall=False): # methodcall is only used for better error messages in argument.py from pypy.interpreter.function import Function, Method, is_builtin_code if frame.get_is_being_profiled() and is_builtin_code(w_func): # XXX: this code is copied&pasted :-( from the slow path below # call_valuestack(). args = frame.make_arguments(nargs) frame.dropvalues(dropvalues) return self.call_args_and_c_profile(frame, w_func, args) if not self.config.objspace.disable_call_speedhacks: # start of hack for performance if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: w_func = w_func.w_function # reuse callable stack place for w_inst frame.settopvalue(w_inst, nargs) nargs += 1 methodcall = True elif nargs > 0 and ( self.abstract_isinstance_w(frame.peekvalue(nargs-1), # :-( w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): return w_func.funccall_valuestack( > nargs, frame, methodcall=methodcall, dropvalues=dropvalues) interpreter\baseobjspace.py:1243: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_introspe...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1738]', line 1> at line 4 dropvalues = 5, methodcall = False def funccall_valuestack(self, nargs, frame, dropvalues, methodcall=False): # speed hack # methodcall is only for better error messages from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit # if (jit.we_are_jitted() and code is self.space._code_of_sys_exc_info and nargs == 0): frame.dropvalues(dropvalues) from pypy.module.sys.vm import exc_info_direct return exc_info_direct(self.space, frame) # fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: f_0 = frame.peekvalue(0) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, f_0) elif nargs == 2: f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, f_1, f_0) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) frame.dropvalues(dropvalues) return code.fastcall_3(self.space, self, f_2, f_1, f_0) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) f_3 = frame.peekvalue(3) frame.dropvalues(dropvalues) return code.fastcall_4(self.space, self, f_3, f_2, f_1, f_0) elif (nargs | Code.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) return self._flat_pycall(code, nargs, frame, dropvalues) elif fast_natural_arity & Code.FLATPYCALL: natural_arity = fast_natural_arity & 0xff if natural_arity > nargs >= natural_arity - len(self.defs_w): assert isinstance(code, PyCode) return self._flat_pycall_defaults(code, nargs, frame, natural_arity - nargs, dropvalues) elif fast_natural_arity == Code.PASSTHROUGHARGS1 and nargs >= 1: assert isinstance(code, gateway.BuiltinCodePassThroughArguments1) w_obj = frame.peekvalue(nargs-1) args = frame.make_arguments(nargs-1) frame.dropvalues(dropvalues) return code.funcrun_obj(self, w_obj, args) args = frame.make_arguments(nargs, methodcall=methodcall) frame.dropvalues(dropvalues) > return self.call_args(args) interpreter\function.py:190: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('\n float g1;\n '), W_BytesObject('test_introspect_global_var'), W_BytesObject('\n float g1;\n ')]) def call_args(self, args): # delegate activation to code > w_res = self.getcode().funcrun(self, args) interpreter\function.py:68: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('\n float g1;\n '), W_BytesObject('test_introspect_global_var'), W_BytesObject('\n float g1;\n ')]) def funcrun(self, func, args): > return BuiltinCode.funcrun_obj(self, func, None, args) interpreter\gateway.py:781: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('\n float g1;\n '), W_BytesObject('test_introspect_global_var'), W_BytesObject('\n float g1;\n ')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: w_result = activation._run(space, scope_w) except DescrMismatch: if w_obj is not None: args = args.prepend(w_obj) return self._type_unwrap_mismatch(space, args) except Exception as e: > self.handle_exception(space, e) interpreter\gateway.py:795: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> space = StdObjSpace e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def handle_exception(self, space, e): try: if not we_are_translated(): raise raise e except OperationError: raise except Exception as e: # general fall-back from pypy.interpreter import error > raise error.get_converted_unexpected_exception(space, e) interpreter\gateway.py:819: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('\n float g1;\n '), W_BytesObject('test_introspect_global_var'), W_BytesObject('\n float g1;\n ')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: > w_result = activation._run(space, scope_w) interpreter\gateway.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinActivation_UwS_ObjSpace_text_text_text_W_Root_W_Root_W_Root_int_W_Root object at 0x000002791c13af38> space = StdObjSpace scope_w = [W_BytesObject('\n float g1;\n '), W_BytesObject('test_introspect_global_var'), W_BytesObject('\n float g1;\n '), None, None, None, ...] def _run(self, space, scope_w): > return self.behavior(space, space.text_w(scope_w[0]), space.text_w(scope_w[1]), space.text_w(scope_w[2]), scope_w[3], scope_w[4], scope_w[5], space.gateway_int_w(scope_w[6]), scope_w[7]) <3152-codegen d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\rpython\tool\sourcetools.py:200>:3: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace, cdef = '\n float g1;\n ' module_name = '_CFFI_test_introspect_global_var' source = '\n float g1;\n ', w_includes = None w_extra_source = None, w_min_version = None, packed = 0 w_extra_compile_args = None @unwrap_spec(cdef='text', module_name='text', source='text', packed=int) def prepare(space, cdef, module_name, source, w_includes=None, w_extra_source=None, w_min_version=None, packed=False, w_extra_compile_args=None): try: import cffi from cffi import FFI # <== the system one, which from cffi import recompiler # needs to be at least cffi 1.0.4 from cffi import ffiplatform except ImportError: pytest.skip("system cffi module not found or older than 1.0.0") if w_min_version is None: min_version = (1, 4, 0) else: min_version = tuple(space.unwrap(w_min_version)) if cffi.__version_info__ < min_version: pytest.skip("system cffi module needs to be at least %s, got %s" % ( min_version, cffi.__version_info__)) space.appexec([], """(): import _cffi_backend # force it to be initialized """) includes = [] if w_includes: includes += space.unpackiterable(w_includes) assert module_name.startswith('test_') module_name = '_CFFI_' + module_name rdir = udir.ensure('recompiler', dir=1) rdir.join('Python.h').write( '#include <stdio.h>\n' '#define PYPY_VERSION XX\n' '#define PyMODINIT_FUNC /*exported*/ void\n' ) path = module_name.replace('.', os.sep) if '.' in module_name: subrdir = rdir.join(module_name[:module_name.index('.')]) os.mkdir(str(subrdir)) else: subrdir = rdir c_file = str(rdir.join('%s.c' % path)) ffi = FFI() for include_ffi_object in includes: ffi.include(include_ffi_object._test_recompiler_source_ffi) ffi.cdef(cdef, packed=packed) ffi.set_source(module_name, source) ffi.emit_c_code(c_file) base_module_name = module_name.split('.')[-1] sources = [] if w_extra_source is not None: sources.append(space.str_w(w_extra_source)) kwargs = {} # GCC 14 promotes -Wincompatible-pointer-types from a warning to an error # by default, which breaks cffi's intentionally-mismatched field-check # probes (e.g. test_misdeclared_field_1). Keep it a warning so the module # compiles and cffi's runtime checks can run. extra = ['-Wno-error=incompatible-pointer-types'] if w_extra_compile_args is not None: extra = extra + space.unwrap(w_extra_compile_args) kwargs['extra_compile_args'] = extra ext = ffiplatform.get_extension(c_file, module_name, include_dirs=[str(rdir)], export_symbols=['_cffi_pypyinit_' + base_module_name], sources=sources, **kwargs) > ffiplatform.compile(str(rdir), ext) module\_cffi_backend\test\test_recompiler.py:86: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x000002792afc1060> compiler_verbose = 0, debug = None def compile(tmpdir, ext, compiler_verbose=0, debug=None): """Compile a C extension module using distutils.""" saved_environ = os.environ.copy() try: > outputfilename = _build(tmpdir, ext, compiler_verbose, debug) d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x000002792afc1060> compiler_verbose = 0, debug = 0 def _build(tmpdir, ext, compiler_verbose=0, debug=None): # XXX compact but horrible :-( from cffi._shimmed_dist_utils import Distribution, CompileError, LinkError, set_threshold, set_verbosity dist = Distribution({'ext_modules': [ext]}) dist.parse_config_files() options = dist.get_option_dict('build_ext') if debug is None: debug = sys.flags.debug options['debug'] = ('ffiplatform', debug) options['force'] = ('ffiplatform', True) options['build_lib'] = ('ffiplatform', tmpdir) options['build_temp'] = ('ffiplatform', tmpdir) # try: old_level = set_threshold(0) or 0 try: set_verbosity(compiler_verbose) dist.run_command('build_ext') cmd_obj = dist.get_command_obj('build_ext') [soname] = cmd_obj.get_outputs() finally: set_threshold(old_level) except (CompileError, LinkError) as e: > raise VerificationError('%s: %s' % (e.__class__.__name__, e)) E VerificationError: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2 d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:54: VerificationError ---------------------------- Captured stdout call ----------------------------- generating d:\systemtemp\pytest\usession-main-595\recompiler\_CFFI_test_introspect_global_var.c ---------------------------- Captured stderr call ----------------------------- d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\cparser.py:165: UserWarning: Global variable 'g1' in cdef(): for consistency with C it should have a storage class specifier (usually 'extern') "(usually 'extern')" % (decl.name,)) cl : Command line error D8021 : invalid numeric argument '/Wno-error=incompatible-pointer-types' _____________ AppTestRecompiler.test_introspect_global_var_array ______________ self = <CallInfo when='call' exception: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2> func = <function <lambda> at 0x00000279255b03e0>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ..\_pytest\runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ..\_pytest\runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_introspect_global_var_array'>, ...ticall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_introspect_global_var_array'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ..\_pytest\vendored_packages\pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00000279153616a8> hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_introspect_global_var_array'>, ...ticall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_introspect_global_var_array'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ..\_pytest\vendored_packages\pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_introspect_global_var_array'>, ...ticall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_introspect_global_var_array'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ..\_pytest\vendored_packages\pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_introspect_global_var_array'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791fbeaae8> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i..._var_array'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792c3d54a0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792c3d54a0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i..._var_array'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_introspect_global_var_array'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791fbeaa48> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i..._var_array'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792c3d5460> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792c3d5460> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i..._var_array'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_introspect_global_var_array'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ..\_pytest\vendored_packages\pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_introspect_global_var_array'> def pytest_runtest_call(item): try: > item.runtest() ..\_pytest\runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_introspect_global_var_array'> def runtest(self): target = self.obj if self.config.option.runappdirect: return target() space = target.im_self.space filename = self._getdynfilename(target) func = app2interp_temp(target.im_func, filename=filename) w_instance = self.parent.w_instance > self.execute_appex(space, func, space, w_instance) tool\pytest\apptest.py:89: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_introspect_global_var_array'>, space = StdObjSpace target = <function test_introspect_global_var_array at 0x00000279255b0458> args = (StdObjSpace, <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>) def execute_appex(self, space, target, *args): self.space = space try: > target(*args) tool\pytest\apptest.py:30: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) w_func = <Function test_introspect_global_var_array> args = <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8> def appcaller(space, *args_w): if not isinstance(space, ObjSpace): raise TypeError("first argument must be a space instance.") # the last argument can be an Arguments w_func = self.wget(space, name) if not args_w: return space.call_function(w_func) else: args = args_w[-1] assert args is not None if not isinstance(args, Arguments): > return space.call_function(w_func, *args_w) interpreter\gateway.py:1227: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <Function test_introspect_global_var_array> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) nargs = 1, Function = <class 'pypy.interpreter.function.Function'> Method = <class 'pypy.interpreter.function.Method'> def call_function(self, w_func, *args_w): nargs = len(args_w) # used for pruning funccall versions if not self.config.objspace.disable_call_speedhacks and nargs < 5: # start of hack for performance from pypy.interpreter.function import Function, Method if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: if nargs < 4: func = w_func.w_function if isinstance(func, Function): return func.funccall(w_inst, *args_w) elif args_w and ( self.abstract_isinstance_w(args_w[0], w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): > return w_func.funccall(*args_w) interpreter\baseobjspace.py:1210: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <Function test_introspect_global_var_array> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) gateway = <module 'pypy.interpreter.gateway' from 'd:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\interpreter\\gateway.pyc'> PyCode = <class 'pypy.interpreter.pycode.PyCode'> code = <code object test_introspect_global_var_array, file '[d:\pypy_stuff\buildbot64...-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:1749]', line 1> def funccall(self, *args_w): # speed hack from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit nargs = len(args_w) fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, args_w[0]) elif nargs == 2: assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, args_w[0], args_w[1]) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) return code.fastcall_3(self.space, self, args_w[0], args_w[1], args_w[2]) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) return code.fastcall_4(self.space, self, args_w[0], args_w[1], args_w[2], args_w[3]) elif (nargs | PyCode.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) if nargs < 5: new_frame = self.space.createframe(code, self.w_func_globals, self) for i in funccallunrolling: if i < nargs: new_frame.locals_cells_stack_w[i] = args_w[i] > return new_frame.run() interpreter\function.py:118: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_introspe...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1749]', line 1> at line 4 def run(self): """Start this frame's execution.""" if self.getcode().co_flags & pycode.CO_GENERATOR: from pypy.interpreter.generator import GeneratorIterator return GeneratorIterator(self) else: > return self.execute_frame() interpreter\pyframe.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_introspe...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1749]', line 1> at line 4 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, executioncontext) except OperationError: raise except Exception as e: # general fall-back > raise self._convert_unexpected_exception(e) interpreter\pyframe.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_introspe...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1749]', line 1> at line 4 e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def _convert_unexpected_exception(self, e): from pypy.interpreter import error > operr = error.get_converted_unexpected_exception(self.space, e) interpreter\pyframe.py:943: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_introspe...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1749]', line 1> at line 4 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, > executioncontext) interpreter\pyframe.py:286: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_introspe...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1749]', line 1> at line 4 pycode = <code object test_introspect_global_var_array, file '[d:\pypy_stuff\buildbot64...-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:1749]', line 1> next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def dispatch(self, pycode, next_instr, ec): # For the sequel, force 'next_instr' to be unsigned for performance next_instr = r_uint(next_instr) co_code = pycode.co_code try: while True: > next_instr = self.handle_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:64: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_introspe...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1749]', line 1> at line 4 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x01\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00\xcc\x1b\x00t\x01\x00|\x02\x0...|\x01\x00\xc9\x03\x00|\x02\x00j\x08\x00\xca\x01\x00|\x03\x00j\x06\x00k\x08\x00s\xc6\x00t\x02\x00\x82\x01\x00d\x00\x00S' next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def handle_bytecode(self, co_code, next_instr, ec): try: > next_instr = self.dispatch_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:71: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_introspe...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1749]', line 1> at line 4 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x01\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00\xcc\x1b\x00t\x01\x00|\x02\x0...|\x01\x00\xc9\x03\x00|\x02\x00j\x08\x00\xca\x01\x00|\x03\x00j\x06\x00k\x08\x00s\xc6\x00t\x02\x00\x82\x01\x00d\x00\x00S' next_instr = 18L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> @jit.unroll_safe def dispatch_bytecode(self, co_code, next_instr, ec): while True: self.last_instr = intmask(next_instr) if jit.we_are_jitted(): if self.debugdata: ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) else: # Only reload next_instr from last_instr when something that # can modify it actually ran (trace function or action # dispatcher). In the common case (no trace, positive ticker) # next_instr is unchanged and the round-trip is skipped. _d = self.debugdata if ec.space.reverse_debugging or ( _d is not None and _d.w_f_trace is not None) or ( not we_are_translated() and 'bytecode_only_trace' in ec.__dict__): ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) actionflag = ec.space.actionflag if actionflag.decrement_ticker(TICK_COUNTER_STEP) < 0: actionflag.action_dispatcher(ec, self) next_instr = r_uint(self.last_instr) opcode = ord(co_code[next_instr]) next_instr += 1 if opcode >= HAVE_ARGUMENT: lo = ord(co_code[next_instr]) hi = ord(co_code[next_instr+1]) next_instr += 2 oparg = (hi * 256) | lo else: oparg = 0 # note: the structure of the code here is such that it makes # (after translation) a big "if/elif" chain, which is then # turned into a switch(). while opcode == opcodedesc.EXTENDED_ARG.index: opcode = ord(co_code[next_instr]) if opcode < HAVE_ARGUMENT: raise BytecodeCorruption lo = ord(co_code[next_instr+1]) hi = ord(co_code[next_instr+2]) next_instr += 3 oparg = (oparg * 65536) | (hi * 256) | lo if opcode == opcodedesc.RETURN_VALUE.index: if not self.blockstack_non_empty(): self.frame_finished_execution = True # for generators raise Return w_returnvalue = self.popvalue() block = self.unrollstack(SReturnValue.kind) if block is None: self.pushvalue(w_returnvalue) raise Return else: unroller = SReturnValue(w_returnvalue) next_instr = block.handle(self, unroller) return next_instr # now inside a 'finally' block elif opcode == opcodedesc.END_FINALLY.index: unroller = self.end_finally() if isinstance(unroller, SuspendedUnroller): # go on unrolling the stack block = self.unrollstack(unroller.kind) if block is None: w_result = unroller.nomoreblocks() self.pushvalue(w_result) raise Return else: next_instr = block.handle(self, unroller) return next_instr elif opcode == opcodedesc.JUMP_ABSOLUTE.index: return self.jump_absolute(oparg, ec) elif opcode == opcodedesc.BREAK_LOOP.index: next_instr = self.BREAK_LOOP(oparg, next_instr) elif opcode == opcodedesc.CONTINUE_LOOP.index: return self.CONTINUE_LOOP(oparg, next_instr) elif opcode == opcodedesc.FOR_ITER.index: next_instr = self.FOR_ITER(oparg, next_instr) elif opcode == opcodedesc.JUMP_FORWARD.index: next_instr = self.JUMP_FORWARD(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_FALSE_OR_POP.index: next_instr = self.JUMP_IF_FALSE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_NOT_DEBUG.index: next_instr = self.JUMP_IF_NOT_DEBUG(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_TRUE_OR_POP.index: next_instr = self.JUMP_IF_TRUE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_FALSE.index: next_instr = self.POP_JUMP_IF_FALSE(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_TRUE.index: next_instr = self.POP_JUMP_IF_TRUE(oparg, next_instr) elif opcode == opcodedesc.BINARY_ADD.index: self.BINARY_ADD(oparg, next_instr) elif opcode == opcodedesc.BINARY_AND.index: self.BINARY_AND(oparg, next_instr) elif opcode == opcodedesc.BINARY_DIVIDE.index: self.BINARY_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_FLOOR_DIVIDE.index: self.BINARY_FLOOR_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_LSHIFT.index: self.BINARY_LSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_MODULO.index: self.BINARY_MODULO(oparg, next_instr) elif opcode == opcodedesc.BINARY_MULTIPLY.index: self.BINARY_MULTIPLY(oparg, next_instr) elif opcode == opcodedesc.BINARY_OR.index: self.BINARY_OR(oparg, next_instr) elif opcode == opcodedesc.BINARY_POWER.index: self.BINARY_POWER(oparg, next_instr) elif opcode == opcodedesc.BINARY_RSHIFT.index: self.BINARY_RSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBSCR.index: self.BINARY_SUBSCR(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBTRACT.index: self.BINARY_SUBTRACT(oparg, next_instr) elif opcode == opcodedesc.BINARY_TRUE_DIVIDE.index: self.BINARY_TRUE_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_XOR.index: self.BINARY_XOR(oparg, next_instr) elif opcode == opcodedesc.BUILD_CLASS.index: self.BUILD_CLASS(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST.index: self.BUILD_LIST(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST_FROM_ARG.index: self.BUILD_LIST_FROM_ARG(oparg, next_instr) elif opcode == opcodedesc.BUILD_MAP.index: self.BUILD_MAP(oparg, next_instr) elif opcode == opcodedesc.BUILD_SET.index: self.BUILD_SET(oparg, next_instr) elif opcode == opcodedesc.BUILD_SLICE.index: self.BUILD_SLICE(oparg, next_instr) elif opcode == opcodedesc.BUILD_TUPLE.index: self.BUILD_TUPLE(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION.index: self.CALL_FUNCTION(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_KW.index: self.CALL_FUNCTION_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR.index: self.CALL_FUNCTION_VAR(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR_KW.index: self.CALL_FUNCTION_VAR_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_METHOD.index: > self.CALL_METHOD(oparg, next_instr) interpreter\pyopcode.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ f = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_introspe...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1749]', line 1> at line 4 oparg = 3, ignored = (18L,), n_args = 3, n_kwargs = 0, w_self = None @jit.unroll_safe def CALL_METHOD(f, oparg, *ignored): # opargs contains the arg, and kwarg count, excluding the implicit 'self' n_args = oparg & 0xff n_kwargs = (oparg >> 8) & 0xff w_self = f.peekvalue_maybe_none(n_args + (2 * n_kwargs)) n = n_args + (w_self is not None) if not n_kwargs: w_callable = f.peekvalue(n_args + (2 * n_kwargs) + 1) w_result = f.space.call_valuestack( > w_callable, n, f, methodcall=w_self is not None, dropvalues=n_args + 2) objspace\std\callmethod.py:96: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_introspe...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1749]', line 1> at line 4 dropvalues = 5, methodcall = False def call_valuestack(self, w_func, nargs, frame, dropvalues, methodcall=False): # methodcall is only used for better error messages in argument.py from pypy.interpreter.function import Function, Method, is_builtin_code if frame.get_is_being_profiled() and is_builtin_code(w_func): # XXX: this code is copied&pasted :-( from the slow path below # call_valuestack(). args = frame.make_arguments(nargs) frame.dropvalues(dropvalues) return self.call_args_and_c_profile(frame, w_func, args) if not self.config.objspace.disable_call_speedhacks: # start of hack for performance if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: w_func = w_func.w_function # reuse callable stack place for w_inst frame.settopvalue(w_inst, nargs) nargs += 1 methodcall = True elif nargs > 0 and ( self.abstract_isinstance_w(frame.peekvalue(nargs-1), # :-( w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): return w_func.funccall_valuestack( > nargs, frame, methodcall=methodcall, dropvalues=dropvalues) interpreter\baseobjspace.py:1243: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_introspe...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1749]', line 1> at line 4 dropvalues = 5, methodcall = False def funccall_valuestack(self, nargs, frame, dropvalues, methodcall=False): # speed hack # methodcall is only for better error messages from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit # if (jit.we_are_jitted() and code is self.space._code_of_sys_exc_info and nargs == 0): frame.dropvalues(dropvalues) from pypy.module.sys.vm import exc_info_direct return exc_info_direct(self.space, frame) # fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: f_0 = frame.peekvalue(0) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, f_0) elif nargs == 2: f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, f_1, f_0) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) frame.dropvalues(dropvalues) return code.fastcall_3(self.space, self, f_2, f_1, f_0) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) f_3 = frame.peekvalue(3) frame.dropvalues(dropvalues) return code.fastcall_4(self.space, self, f_3, f_2, f_1, f_0) elif (nargs | Code.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) return self._flat_pycall(code, nargs, frame, dropvalues) elif fast_natural_arity & Code.FLATPYCALL: natural_arity = fast_natural_arity & 0xff if natural_arity > nargs >= natural_arity - len(self.defs_w): assert isinstance(code, PyCode) return self._flat_pycall_defaults(code, nargs, frame, natural_arity - nargs, dropvalues) elif fast_natural_arity == Code.PASSTHROUGHARGS1 and nargs >= 1: assert isinstance(code, gateway.BuiltinCodePassThroughArguments1) w_obj = frame.peekvalue(nargs-1) args = frame.make_arguments(nargs-1) frame.dropvalues(dropvalues) return code.funcrun_obj(self, w_obj, args) args = frame.make_arguments(nargs, methodcall=methodcall) frame.dropvalues(dropvalues) > return self.call_args(args) interpreter\function.py:190: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('\n float g1[100];\n '), W_BytesObj...t_global_var_array'), W_BytesObject('\n float g1[100];\n ')]) def call_args(self, args): # delegate activation to code > w_res = self.getcode().funcrun(self, args) interpreter\function.py:68: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('\n float g1[100];\n '), W_BytesObj...t_global_var_array'), W_BytesObject('\n float g1[100];\n ')]) def funcrun(self, func, args): > return BuiltinCode.funcrun_obj(self, func, None, args) interpreter\gateway.py:781: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('\n float g1[100];\n '), W_BytesObj...t_global_var_array'), W_BytesObject('\n float g1[100];\n ')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: w_result = activation._run(space, scope_w) except DescrMismatch: if w_obj is not None: args = args.prepend(w_obj) return self._type_unwrap_mismatch(space, args) except Exception as e: > self.handle_exception(space, e) interpreter\gateway.py:795: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> space = StdObjSpace e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def handle_exception(self, space, e): try: if not we_are_translated(): raise raise e except OperationError: raise except Exception as e: # general fall-back from pypy.interpreter import error > raise error.get_converted_unexpected_exception(space, e) interpreter\gateway.py:819: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('\n float g1[100];\n '), W_BytesObj...t_global_var_array'), W_BytesObject('\n float g1[100];\n ')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: > w_result = activation._run(space, scope_w) interpreter\gateway.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinActivation_UwS_ObjSpace_text_text_text_W_Root_W_Root_W_Root_int_W_Root object at 0x000002791c13af38> space = StdObjSpace scope_w = [W_BytesObject('\n float g1[100];\n '), W_BytesObject('test_introspect_global_var_array'), W_BytesObject('\n float g1[100];\n '), None, None, None, ...] def _run(self, space, scope_w): > return self.behavior(space, space.text_w(scope_w[0]), space.text_w(scope_w[1]), space.text_w(scope_w[2]), scope_w[3], scope_w[4], scope_w[5], space.gateway_int_w(scope_w[6]), scope_w[7]) <3152-codegen d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\rpython\tool\sourcetools.py:200>:3: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace, cdef = '\n float g1[100];\n ' module_name = '_CFFI_test_introspect_global_var_array' source = '\n float g1[100];\n ', w_includes = None w_extra_source = None, w_min_version = None, packed = 0 w_extra_compile_args = None @unwrap_spec(cdef='text', module_name='text', source='text', packed=int) def prepare(space, cdef, module_name, source, w_includes=None, w_extra_source=None, w_min_version=None, packed=False, w_extra_compile_args=None): try: import cffi from cffi import FFI # <== the system one, which from cffi import recompiler # needs to be at least cffi 1.0.4 from cffi import ffiplatform except ImportError: pytest.skip("system cffi module not found or older than 1.0.0") if w_min_version is None: min_version = (1, 4, 0) else: min_version = tuple(space.unwrap(w_min_version)) if cffi.__version_info__ < min_version: pytest.skip("system cffi module needs to be at least %s, got %s" % ( min_version, cffi.__version_info__)) space.appexec([], """(): import _cffi_backend # force it to be initialized """) includes = [] if w_includes: includes += space.unpackiterable(w_includes) assert module_name.startswith('test_') module_name = '_CFFI_' + module_name rdir = udir.ensure('recompiler', dir=1) rdir.join('Python.h').write( '#include <stdio.h>\n' '#define PYPY_VERSION XX\n' '#define PyMODINIT_FUNC /*exported*/ void\n' ) path = module_name.replace('.', os.sep) if '.' in module_name: subrdir = rdir.join(module_name[:module_name.index('.')]) os.mkdir(str(subrdir)) else: subrdir = rdir c_file = str(rdir.join('%s.c' % path)) ffi = FFI() for include_ffi_object in includes: ffi.include(include_ffi_object._test_recompiler_source_ffi) ffi.cdef(cdef, packed=packed) ffi.set_source(module_name, source) ffi.emit_c_code(c_file) base_module_name = module_name.split('.')[-1] sources = [] if w_extra_source is not None: sources.append(space.str_w(w_extra_source)) kwargs = {} # GCC 14 promotes -Wincompatible-pointer-types from a warning to an error # by default, which breaks cffi's intentionally-mismatched field-check # probes (e.g. test_misdeclared_field_1). Keep it a warning so the module # compiles and cffi's runtime checks can run. extra = ['-Wno-error=incompatible-pointer-types'] if w_extra_compile_args is not None: extra = extra + space.unwrap(w_extra_compile_args) kwargs['extra_compile_args'] = extra ext = ffiplatform.get_extension(c_file, module_name, include_dirs=[str(rdir)], export_symbols=['_cffi_pypyinit_' + base_module_name], sources=sources, **kwargs) > ffiplatform.compile(str(rdir), ext) module\_cffi_backend\test\test_recompiler.py:86: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x000002792c388760> compiler_verbose = 0, debug = None def compile(tmpdir, ext, compiler_verbose=0, debug=None): """Compile a C extension module using distutils.""" saved_environ = os.environ.copy() try: > outputfilename = _build(tmpdir, ext, compiler_verbose, debug) d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x000002792c388760> compiler_verbose = 0, debug = 0 def _build(tmpdir, ext, compiler_verbose=0, debug=None): # XXX compact but horrible :-( from cffi._shimmed_dist_utils import Distribution, CompileError, LinkError, set_threshold, set_verbosity dist = Distribution({'ext_modules': [ext]}) dist.parse_config_files() options = dist.get_option_dict('build_ext') if debug is None: debug = sys.flags.debug options['debug'] = ('ffiplatform', debug) options['force'] = ('ffiplatform', True) options['build_lib'] = ('ffiplatform', tmpdir) options['build_temp'] = ('ffiplatform', tmpdir) # try: old_level = set_threshold(0) or 0 try: set_verbosity(compiler_verbose) dist.run_command('build_ext') cmd_obj = dist.get_command_obj('build_ext') [soname] = cmd_obj.get_outputs() finally: set_threshold(old_level) except (CompileError, LinkError) as e: > raise VerificationError('%s: %s' % (e.__class__.__name__, e)) E VerificationError: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2 d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:54: VerificationError ---------------------------- Captured stdout call ----------------------------- generating d:\systemtemp\pytest\usession-main-595\recompiler\_CFFI_test_introspect_global_var_array.c ---------------------------- Captured stderr call ----------------------------- cl : Command line error D8021 : invalid numeric argument '/Wno-error=incompatible-pointer-types' _______________ AppTestRecompiler.test_introspect_integer_const _______________ self = <CallInfo when='call' exception: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2> func = <function <lambda> at 0x000002791bb26368>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ..\_pytest\runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ..\_pytest\runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_introspect_integer_const'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_introspect_integer_const'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ..\_pytest\vendored_packages\pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00000279153616a8> hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_introspect_integer_const'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_introspect_integer_const'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ..\_pytest\vendored_packages\pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_introspect_integer_const'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_introspect_integer_const'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ..\_pytest\vendored_packages\pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_introspect_integer_const'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002792bf8e480> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...eger_const'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792551b5a0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792551b5a0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...eger_const'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_introspect_integer_const'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002792bf8e3b8> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...eger_const'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792551b560> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792551b560> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...eger_const'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_introspect_integer_const'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ..\_pytest\vendored_packages\pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_introspect_integer_const'> def pytest_runtest_call(item): try: > item.runtest() ..\_pytest\runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_introspect_integer_const'> def runtest(self): target = self.obj if self.config.option.runappdirect: return target() space = target.im_self.space filename = self._getdynfilename(target) func = app2interp_temp(target.im_func, filename=filename) w_instance = self.parent.w_instance > self.execute_appex(space, func, space, w_instance) tool\pytest\apptest.py:89: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_introspect_integer_const'>, space = StdObjSpace target = <function test_introspect_integer_const at 0x000002791c58c020> args = (StdObjSpace, <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>) def execute_appex(self, space, target, *args): self.space = space try: > target(*args) tool\pytest\apptest.py:30: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) w_func = <Function test_introspect_integer_const> args = <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8> def appcaller(space, *args_w): if not isinstance(space, ObjSpace): raise TypeError("first argument must be a space instance.") # the last argument can be an Arguments w_func = self.wget(space, name) if not args_w: return space.call_function(w_func) else: args = args_w[-1] assert args is not None if not isinstance(args, Arguments): > return space.call_function(w_func, *args_w) interpreter\gateway.py:1227: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <Function test_introspect_integer_const> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) nargs = 1, Function = <class 'pypy.interpreter.function.Function'> Method = <class 'pypy.interpreter.function.Method'> def call_function(self, w_func, *args_w): nargs = len(args_w) # used for pruning funccall versions if not self.config.objspace.disable_call_speedhacks and nargs < 5: # start of hack for performance from pypy.interpreter.function import Function, Method if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: if nargs < 4: func = w_func.w_function if isinstance(func, Function): return func.funccall(w_inst, *args_w) elif args_w and ( self.abstract_isinstance_w(args_w[0], w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): > return w_func.funccall(*args_w) interpreter\baseobjspace.py:1210: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <Function test_introspect_integer_const> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) gateway = <module 'pypy.interpreter.gateway' from 'd:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\interpreter\\gateway.pyc'> PyCode = <class 'pypy.interpreter.pycode.PyCode'> code = <code object test_introspect_integer_const, file '[d:\pypy_stuff\buildbot64\sl...-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:1762]', line 1> def funccall(self, *args_w): # speed hack from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit nargs = len(args_w) fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, args_w[0]) elif nargs == 2: assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, args_w[0], args_w[1]) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) return code.fastcall_3(self.space, self, args_w[0], args_w[1], args_w[2]) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) return code.fastcall_4(self.space, self, args_w[0], args_w[1], args_w[2], args_w[3]) elif (nargs | PyCode.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) if nargs < 5: new_frame = self.space.createframe(code, self.w_func_globals, self) for i in funccallunrolling: if i < nargs: new_frame.locals_cells_stack_w[i] = args_w[i] > return new_frame.run() interpreter\function.py:118: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_introspe...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1762]', line 1> at line 3 def run(self): """Start this frame's execution.""" if self.getcode().co_flags & pycode.CO_GENERATOR: from pypy.interpreter.generator import GeneratorIterator return GeneratorIterator(self) else: > return self.execute_frame() interpreter\pyframe.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_introspe...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1762]', line 1> at line 3 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, executioncontext) except OperationError: raise except Exception as e: # general fall-back > raise self._convert_unexpected_exception(e) interpreter\pyframe.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_introspe...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1762]', line 1> at line 3 e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def _convert_unexpected_exception(self, e): from pypy.interpreter import error > operr = error.get_converted_unexpected_exception(self.space, e) interpreter\pyframe.py:943: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_introspe...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1762]', line 1> at line 3 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, > executioncontext) interpreter\pyframe.py:286: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_introspe...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1762]', line 1> at line 3 pycode = <code object test_introspect_integer_const, file '[d:\pypy_stuff\buildbot64\sl...-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:1762]', line 1> next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def dispatch(self, pycode, next_instr, ec): # For the sequel, force 'next_instr' to be unsigned for performance next_instr = r_uint(next_instr) co_code = pycode.co_code try: while True: > next_instr = self.handle_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:64: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_introspe...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1762]', line 1> at line 3 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00\xcc\x1b\x00t\x01\x00|\x02\x0...3k\x02\x00o_\x00d\x05\x00k\x02\x00n\x02\x00\x02\x01sj\x00t\x02\x00\x82\x01\x00d\x00\x00S\x02\x00\x82\x01\x00d\x00\x00S' next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def handle_bytecode(self, co_code, next_instr, ec): try: > next_instr = self.dispatch_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:71: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_introspe...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1762]', line 1> at line 3 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00\xcc\x1b\x00t\x01\x00|\x02\x0...3k\x02\x00o_\x00d\x05\x00k\x02\x00n\x02\x00\x02\x01sj\x00t\x02\x00\x82\x01\x00d\x00\x00S\x02\x00\x82\x01\x00d\x00\x00S' next_instr = 18L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> @jit.unroll_safe def dispatch_bytecode(self, co_code, next_instr, ec): while True: self.last_instr = intmask(next_instr) if jit.we_are_jitted(): if self.debugdata: ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) else: # Only reload next_instr from last_instr when something that # can modify it actually ran (trace function or action # dispatcher). In the common case (no trace, positive ticker) # next_instr is unchanged and the round-trip is skipped. _d = self.debugdata if ec.space.reverse_debugging or ( _d is not None and _d.w_f_trace is not None) or ( not we_are_translated() and 'bytecode_only_trace' in ec.__dict__): ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) actionflag = ec.space.actionflag if actionflag.decrement_ticker(TICK_COUNTER_STEP) < 0: actionflag.action_dispatcher(ec, self) next_instr = r_uint(self.last_instr) opcode = ord(co_code[next_instr]) next_instr += 1 if opcode >= HAVE_ARGUMENT: lo = ord(co_code[next_instr]) hi = ord(co_code[next_instr+1]) next_instr += 2 oparg = (hi * 256) | lo else: oparg = 0 # note: the structure of the code here is such that it makes # (after translation) a big "if/elif" chain, which is then # turned into a switch(). while opcode == opcodedesc.EXTENDED_ARG.index: opcode = ord(co_code[next_instr]) if opcode < HAVE_ARGUMENT: raise BytecodeCorruption lo = ord(co_code[next_instr+1]) hi = ord(co_code[next_instr+2]) next_instr += 3 oparg = (oparg * 65536) | (hi * 256) | lo if opcode == opcodedesc.RETURN_VALUE.index: if not self.blockstack_non_empty(): self.frame_finished_execution = True # for generators raise Return w_returnvalue = self.popvalue() block = self.unrollstack(SReturnValue.kind) if block is None: self.pushvalue(w_returnvalue) raise Return else: unroller = SReturnValue(w_returnvalue) next_instr = block.handle(self, unroller) return next_instr # now inside a 'finally' block elif opcode == opcodedesc.END_FINALLY.index: unroller = self.end_finally() if isinstance(unroller, SuspendedUnroller): # go on unrolling the stack block = self.unrollstack(unroller.kind) if block is None: w_result = unroller.nomoreblocks() self.pushvalue(w_result) raise Return else: next_instr = block.handle(self, unroller) return next_instr elif opcode == opcodedesc.JUMP_ABSOLUTE.index: return self.jump_absolute(oparg, ec) elif opcode == opcodedesc.BREAK_LOOP.index: next_instr = self.BREAK_LOOP(oparg, next_instr) elif opcode == opcodedesc.CONTINUE_LOOP.index: return self.CONTINUE_LOOP(oparg, next_instr) elif opcode == opcodedesc.FOR_ITER.index: next_instr = self.FOR_ITER(oparg, next_instr) elif opcode == opcodedesc.JUMP_FORWARD.index: next_instr = self.JUMP_FORWARD(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_FALSE_OR_POP.index: next_instr = self.JUMP_IF_FALSE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_NOT_DEBUG.index: next_instr = self.JUMP_IF_NOT_DEBUG(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_TRUE_OR_POP.index: next_instr = self.JUMP_IF_TRUE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_FALSE.index: next_instr = self.POP_JUMP_IF_FALSE(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_TRUE.index: next_instr = self.POP_JUMP_IF_TRUE(oparg, next_instr) elif opcode == opcodedesc.BINARY_ADD.index: self.BINARY_ADD(oparg, next_instr) elif opcode == opcodedesc.BINARY_AND.index: self.BINARY_AND(oparg, next_instr) elif opcode == opcodedesc.BINARY_DIVIDE.index: self.BINARY_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_FLOOR_DIVIDE.index: self.BINARY_FLOOR_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_LSHIFT.index: self.BINARY_LSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_MODULO.index: self.BINARY_MODULO(oparg, next_instr) elif opcode == opcodedesc.BINARY_MULTIPLY.index: self.BINARY_MULTIPLY(oparg, next_instr) elif opcode == opcodedesc.BINARY_OR.index: self.BINARY_OR(oparg, next_instr) elif opcode == opcodedesc.BINARY_POWER.index: self.BINARY_POWER(oparg, next_instr) elif opcode == opcodedesc.BINARY_RSHIFT.index: self.BINARY_RSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBSCR.index: self.BINARY_SUBSCR(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBTRACT.index: self.BINARY_SUBTRACT(oparg, next_instr) elif opcode == opcodedesc.BINARY_TRUE_DIVIDE.index: self.BINARY_TRUE_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_XOR.index: self.BINARY_XOR(oparg, next_instr) elif opcode == opcodedesc.BUILD_CLASS.index: self.BUILD_CLASS(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST.index: self.BUILD_LIST(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST_FROM_ARG.index: self.BUILD_LIST_FROM_ARG(oparg, next_instr) elif opcode == opcodedesc.BUILD_MAP.index: self.BUILD_MAP(oparg, next_instr) elif opcode == opcodedesc.BUILD_SET.index: self.BUILD_SET(oparg, next_instr) elif opcode == opcodedesc.BUILD_SLICE.index: self.BUILD_SLICE(oparg, next_instr) elif opcode == opcodedesc.BUILD_TUPLE.index: self.BUILD_TUPLE(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION.index: self.CALL_FUNCTION(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_KW.index: self.CALL_FUNCTION_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR.index: self.CALL_FUNCTION_VAR(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR_KW.index: self.CALL_FUNCTION_VAR_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_METHOD.index: > self.CALL_METHOD(oparg, next_instr) interpreter\pyopcode.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ f = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_introspe...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1762]', line 1> at line 3 oparg = 3, ignored = (18L,), n_args = 3, n_kwargs = 0, w_self = None @jit.unroll_safe def CALL_METHOD(f, oparg, *ignored): # opargs contains the arg, and kwarg count, excluding the implicit 'self' n_args = oparg & 0xff n_kwargs = (oparg >> 8) & 0xff w_self = f.peekvalue_maybe_none(n_args + (2 * n_kwargs)) n = n_args + (w_self is not None) if not n_kwargs: w_callable = f.peekvalue(n_args + (2 * n_kwargs) + 1) w_result = f.space.call_valuestack( > w_callable, n, f, methodcall=w_self is not None, dropvalues=n_args + 2) objspace\std\callmethod.py:96: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_introspe...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1762]', line 1> at line 3 dropvalues = 5, methodcall = False def call_valuestack(self, w_func, nargs, frame, dropvalues, methodcall=False): # methodcall is only used for better error messages in argument.py from pypy.interpreter.function import Function, Method, is_builtin_code if frame.get_is_being_profiled() and is_builtin_code(w_func): # XXX: this code is copied&pasted :-( from the slow path below # call_valuestack(). args = frame.make_arguments(nargs) frame.dropvalues(dropvalues) return self.call_args_and_c_profile(frame, w_func, args) if not self.config.objspace.disable_call_speedhacks: # start of hack for performance if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: w_func = w_func.w_function # reuse callable stack place for w_inst frame.settopvalue(w_inst, nargs) nargs += 1 methodcall = True elif nargs > 0 and ( self.abstract_isinstance_w(frame.peekvalue(nargs-1), # :-( w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): return w_func.funccall_valuestack( > nargs, frame, methodcall=methodcall, dropvalues=dropvalues) interpreter\baseobjspace.py:1243: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_introspe...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1762]', line 1> at line 3 dropvalues = 5, methodcall = False def funccall_valuestack(self, nargs, frame, dropvalues, methodcall=False): # speed hack # methodcall is only for better error messages from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit # if (jit.we_are_jitted() and code is self.space._code_of_sys_exc_info and nargs == 0): frame.dropvalues(dropvalues) from pypy.module.sys.vm import exc_info_direct return exc_info_direct(self.space, frame) # fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: f_0 = frame.peekvalue(0) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, f_0) elif nargs == 2: f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, f_1, f_0) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) frame.dropvalues(dropvalues) return code.fastcall_3(self.space, self, f_2, f_1, f_0) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) f_3 = frame.peekvalue(3) frame.dropvalues(dropvalues) return code.fastcall_4(self.space, self, f_3, f_2, f_1, f_0) elif (nargs | Code.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) return self._flat_pycall(code, nargs, frame, dropvalues) elif fast_natural_arity & Code.FLATPYCALL: natural_arity = fast_natural_arity & 0xff if natural_arity > nargs >= natural_arity - len(self.defs_w): assert isinstance(code, PyCode) return self._flat_pycall_defaults(code, nargs, frame, natural_arity - nargs, dropvalues) elif fast_natural_arity == Code.PASSTHROUGHARGS1 and nargs >= 1: assert isinstance(code, gateway.BuiltinCodePassThroughArguments1) w_obj = frame.peekvalue(nargs-1) args = frame.make_arguments(nargs-1) frame.dropvalues(dropvalues) return code.funcrun_obj(self, w_obj, args) args = frame.make_arguments(nargs, methodcall=methodcall) frame.dropvalues(dropvalues) > return self.call_args(args) interpreter\function.py:190: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('#define FOO 42'), W_BytesObject('test_introspect_integer_const'), W_BytesObject('\n #define FOO 42\n ')]) def call_args(self, args): # delegate activation to code > w_res = self.getcode().funcrun(self, args) interpreter\function.py:68: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('#define FOO 42'), W_BytesObject('test_introspect_integer_const'), W_BytesObject('\n #define FOO 42\n ')]) def funcrun(self, func, args): > return BuiltinCode.funcrun_obj(self, func, None, args) interpreter\gateway.py:781: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('#define FOO 42'), W_BytesObject('test_introspect_integer_const'), W_BytesObject('\n #define FOO 42\n ')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: w_result = activation._run(space, scope_w) except DescrMismatch: if w_obj is not None: args = args.prepend(w_obj) return self._type_unwrap_mismatch(space, args) except Exception as e: > self.handle_exception(space, e) interpreter\gateway.py:795: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> space = StdObjSpace e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def handle_exception(self, space, e): try: if not we_are_translated(): raise raise e except OperationError: raise except Exception as e: # general fall-back from pypy.interpreter import error > raise error.get_converted_unexpected_exception(space, e) interpreter\gateway.py:819: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('#define FOO 42'), W_BytesObject('test_introspect_integer_const'), W_BytesObject('\n #define FOO 42\n ')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: > w_result = activation._run(space, scope_w) interpreter\gateway.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinActivation_UwS_ObjSpace_text_text_text_W_Root_W_Root_W_Root_int_W_Root object at 0x000002791c13af38> space = StdObjSpace scope_w = [W_BytesObject('#define FOO 42'), W_BytesObject('test_introspect_integer_const'), W_BytesObject('\n #define FOO 42\n '), None, None, None, ...] def _run(self, space, scope_w): > return self.behavior(space, space.text_w(scope_w[0]), space.text_w(scope_w[1]), space.text_w(scope_w[2]), scope_w[3], scope_w[4], scope_w[5], space.gateway_int_w(scope_w[6]), scope_w[7]) <3152-codegen d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\rpython\tool\sourcetools.py:200>:3: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace, cdef = '#define FOO 42' module_name = '_CFFI_test_introspect_integer_const' source = '\n #define FOO 42\n ', w_includes = None w_extra_source = None, w_min_version = None, packed = 0 w_extra_compile_args = None @unwrap_spec(cdef='text', module_name='text', source='text', packed=int) def prepare(space, cdef, module_name, source, w_includes=None, w_extra_source=None, w_min_version=None, packed=False, w_extra_compile_args=None): try: import cffi from cffi import FFI # <== the system one, which from cffi import recompiler # needs to be at least cffi 1.0.4 from cffi import ffiplatform except ImportError: pytest.skip("system cffi module not found or older than 1.0.0") if w_min_version is None: min_version = (1, 4, 0) else: min_version = tuple(space.unwrap(w_min_version)) if cffi.__version_info__ < min_version: pytest.skip("system cffi module needs to be at least %s, got %s" % ( min_version, cffi.__version_info__)) space.appexec([], """(): import _cffi_backend # force it to be initialized """) includes = [] if w_includes: includes += space.unpackiterable(w_includes) assert module_name.startswith('test_') module_name = '_CFFI_' + module_name rdir = udir.ensure('recompiler', dir=1) rdir.join('Python.h').write( '#include <stdio.h>\n' '#define PYPY_VERSION XX\n' '#define PyMODINIT_FUNC /*exported*/ void\n' ) path = module_name.replace('.', os.sep) if '.' in module_name: subrdir = rdir.join(module_name[:module_name.index('.')]) os.mkdir(str(subrdir)) else: subrdir = rdir c_file = str(rdir.join('%s.c' % path)) ffi = FFI() for include_ffi_object in includes: ffi.include(include_ffi_object._test_recompiler_source_ffi) ffi.cdef(cdef, packed=packed) ffi.set_source(module_name, source) ffi.emit_c_code(c_file) base_module_name = module_name.split('.')[-1] sources = [] if w_extra_source is not None: sources.append(space.str_w(w_extra_source)) kwargs = {} # GCC 14 promotes -Wincompatible-pointer-types from a warning to an error # by default, which breaks cffi's intentionally-mismatched field-check # probes (e.g. test_misdeclared_field_1). Keep it a warning so the module # compiles and cffi's runtime checks can run. extra = ['-Wno-error=incompatible-pointer-types'] if w_extra_compile_args is not None: extra = extra + space.unwrap(w_extra_compile_args) kwargs['extra_compile_args'] = extra ext = ffiplatform.get_extension(c_file, module_name, include_dirs=[str(rdir)], export_symbols=['_cffi_pypyinit_' + base_module_name], sources=sources, **kwargs) > ffiplatform.compile(str(rdir), ext) module\_cffi_backend\test\test_recompiler.py:86: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x0000027929300320> compiler_verbose = 0, debug = None def compile(tmpdir, ext, compiler_verbose=0, debug=None): """Compile a C extension module using distutils.""" saved_environ = os.environ.copy() try: > outputfilename = _build(tmpdir, ext, compiler_verbose, debug) d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x0000027929300320> compiler_verbose = 0, debug = 0 def _build(tmpdir, ext, compiler_verbose=0, debug=None): # XXX compact but horrible :-( from cffi._shimmed_dist_utils import Distribution, CompileError, LinkError, set_threshold, set_verbosity dist = Distribution({'ext_modules': [ext]}) dist.parse_config_files() options = dist.get_option_dict('build_ext') if debug is None: debug = sys.flags.debug options['debug'] = ('ffiplatform', debug) options['force'] = ('ffiplatform', True) options['build_lib'] = ('ffiplatform', tmpdir) options['build_temp'] = ('ffiplatform', tmpdir) # try: old_level = set_threshold(0) or 0 try: set_verbosity(compiler_verbose) dist.run_command('build_ext') cmd_obj = dist.get_command_obj('build_ext') [soname] = cmd_obj.get_outputs() finally: set_threshold(old_level) except (CompileError, LinkError) as e: > raise VerificationError('%s: %s' % (e.__class__.__name__, e)) E VerificationError: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2 d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:54: VerificationError ---------------------------- Captured stdout call ----------------------------- generating d:\systemtemp\pytest\usession-main-595\recompiler\_CFFI_test_introspect_integer_const.c ---------------------------- Captured stderr call ----------------------------- cl : Command line error D8021 : invalid numeric argument '/Wno-error=incompatible-pointer-types' __________________ AppTestRecompiler.test_introspect_typedef __________________ self = <CallInfo when='call' exception: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2> func = <function <lambda> at 0x00000279210832e0>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ..\_pytest\runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ..\_pytest\runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_introspect_typedef'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_introspect_typedef'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ..\_pytest\vendored_packages\pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00000279153616a8> hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_introspect_typedef'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_introspect_typedef'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ..\_pytest\vendored_packages\pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_introspect_typedef'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_introspect_typedef'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ..\_pytest\vendored_packages\pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_introspect_typedef'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00000279294263e0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...ct_typedef'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792acd7da0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792acd7da0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...ct_typedef'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_introspect_typedef'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00000279294262f0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...ct_typedef'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792acd7d60> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792acd7d60> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...ct_typedef'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_introspect_typedef'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ..\_pytest\vendored_packages\pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_introspect_typedef'> def pytest_runtest_call(item): try: > item.runtest() ..\_pytest\runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_introspect_typedef'> def runtest(self): target = self.obj if self.config.option.runappdirect: return target() space = target.im_self.space filename = self._getdynfilename(target) func = app2interp_temp(target.im_func, filename=filename) w_instance = self.parent.w_instance > self.execute_appex(space, func, space, w_instance) tool\pytest\apptest.py:89: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_introspect_typedef'>, space = StdObjSpace target = <function test_introspect_typedef at 0x0000027921083448> args = (StdObjSpace, <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>) def execute_appex(self, space, target, *args): self.space = space try: > target(*args) tool\pytest\apptest.py:30: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) w_func = <Function test_introspect_typedef> args = <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8> def appcaller(space, *args_w): if not isinstance(space, ObjSpace): raise TypeError("first argument must be a space instance.") # the last argument can be an Arguments w_func = self.wget(space, name) if not args_w: return space.call_function(w_func) else: args = args_w[-1] assert args is not None if not isinstance(args, Arguments): > return space.call_function(w_func, *args_w) interpreter\gateway.py:1227: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <Function test_introspect_typedef> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) nargs = 1, Function = <class 'pypy.interpreter.function.Function'> Method = <class 'pypy.interpreter.function.Method'> def call_function(self, w_func, *args_w): nargs = len(args_w) # used for pruning funccall versions if not self.config.objspace.disable_call_speedhacks and nargs < 5: # start of hack for performance from pypy.interpreter.function import Function, Method if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: if nargs < 4: func = w_func.w_function if isinstance(func, Function): return func.funccall(w_inst, *args_w) elif args_w and ( self.abstract_isinstance_w(args_w[0], w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): > return w_func.funccall(*args_w) interpreter\baseobjspace.py:1210: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <Function test_introspect_typedef> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) gateway = <module 'pypy.interpreter.gateway' from 'd:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\interpreter\\gateway.pyc'> PyCode = <class 'pypy.interpreter.pycode.PyCode'> code = <code object test_introspect_typedef, file '[d:\pypy_stuff\buildbot64\slave\ow...-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:1770]', line 1> def funccall(self, *args_w): # speed hack from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit nargs = len(args_w) fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, args_w[0]) elif nargs == 2: assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, args_w[0], args_w[1]) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) return code.fastcall_3(self.space, self, args_w[0], args_w[1], args_w[2]) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) return code.fastcall_4(self.space, self, args_w[0], args_w[1], args_w[2], args_w[3]) elif (nargs | PyCode.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) if nargs < 5: new_frame = self.space.createframe(code, self.w_func_globals, self) for i in funccallunrolling: if i < nargs: new_frame.locals_cells_stack_w[i] = args_w[i] > return new_frame.run() interpreter\function.py:118: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_introspe...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1770]', line 1> at line 3 def run(self): """Start this frame's execution.""" if self.getcode().co_flags & pycode.CO_GENERATOR: from pypy.interpreter.generator import GeneratorIterator return GeneratorIterator(self) else: > return self.execute_frame() interpreter\pyframe.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_introspe...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1770]', line 1> at line 3 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, executioncontext) except OperationError: raise except Exception as e: # general fall-back > raise self._convert_unexpected_exception(e) interpreter\pyframe.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_introspe...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1770]', line 1> at line 3 e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def _convert_unexpected_exception(self, e): from pypy.interpreter import error > operr = error.get_converted_unexpected_exception(self.space, e) interpreter\pyframe.py:943: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_introspe...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1770]', line 1> at line 3 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, > executioncontext) interpreter\pyframe.py:286: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_introspe...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1770]', line 1> at line 3 pycode = <code object test_introspect_typedef, file '[d:\pypy_stuff\buildbot64\slave\ow...-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:1770]', line 1> next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def dispatch(self, pycode, next_instr, ec): # For the sequel, force 'next_instr' to be unsigned for performance next_instr = r_uint(next_instr) co_code = pycode.co_code try: while True: > next_instr = self.handle_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:64: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_introspe...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1770]', line 1> at line 3 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00\xcc$\x00|\x01\x00\xc9\x01\x0...c\x1e\x00|\x01\x00\xc9\x03\x00d\x04\x00\xca\x01\x00j\x05\x00d\x06\x00k\x02\x00s\x84\x00t\x02\x00\x82\x01\x00d\x00\x00S' next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def handle_bytecode(self, co_code, next_instr, ec): try: > next_instr = self.dispatch_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:71: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_introspe...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1770]', line 1> at line 3 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00\xcc$\x00|\x01\x00\xc9\x01\x0...c\x1e\x00|\x01\x00\xc9\x03\x00d\x04\x00\xca\x01\x00j\x05\x00d\x06\x00k\x02\x00s\x84\x00t\x02\x00\x82\x01\x00d\x00\x00S' next_instr = 18L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> @jit.unroll_safe def dispatch_bytecode(self, co_code, next_instr, ec): while True: self.last_instr = intmask(next_instr) if jit.we_are_jitted(): if self.debugdata: ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) else: # Only reload next_instr from last_instr when something that # can modify it actually ran (trace function or action # dispatcher). In the common case (no trace, positive ticker) # next_instr is unchanged and the round-trip is skipped. _d = self.debugdata if ec.space.reverse_debugging or ( _d is not None and _d.w_f_trace is not None) or ( not we_are_translated() and 'bytecode_only_trace' in ec.__dict__): ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) actionflag = ec.space.actionflag if actionflag.decrement_ticker(TICK_COUNTER_STEP) < 0: actionflag.action_dispatcher(ec, self) next_instr = r_uint(self.last_instr) opcode = ord(co_code[next_instr]) next_instr += 1 if opcode >= HAVE_ARGUMENT: lo = ord(co_code[next_instr]) hi = ord(co_code[next_instr+1]) next_instr += 2 oparg = (hi * 256) | lo else: oparg = 0 # note: the structure of the code here is such that it makes # (after translation) a big "if/elif" chain, which is then # turned into a switch(). while opcode == opcodedesc.EXTENDED_ARG.index: opcode = ord(co_code[next_instr]) if opcode < HAVE_ARGUMENT: raise BytecodeCorruption lo = ord(co_code[next_instr+1]) hi = ord(co_code[next_instr+2]) next_instr += 3 oparg = (oparg * 65536) | (hi * 256) | lo if opcode == opcodedesc.RETURN_VALUE.index: if not self.blockstack_non_empty(): self.frame_finished_execution = True # for generators raise Return w_returnvalue = self.popvalue() block = self.unrollstack(SReturnValue.kind) if block is None: self.pushvalue(w_returnvalue) raise Return else: unroller = SReturnValue(w_returnvalue) next_instr = block.handle(self, unroller) return next_instr # now inside a 'finally' block elif opcode == opcodedesc.END_FINALLY.index: unroller = self.end_finally() if isinstance(unroller, SuspendedUnroller): # go on unrolling the stack block = self.unrollstack(unroller.kind) if block is None: w_result = unroller.nomoreblocks() self.pushvalue(w_result) raise Return else: next_instr = block.handle(self, unroller) return next_instr elif opcode == opcodedesc.JUMP_ABSOLUTE.index: return self.jump_absolute(oparg, ec) elif opcode == opcodedesc.BREAK_LOOP.index: next_instr = self.BREAK_LOOP(oparg, next_instr) elif opcode == opcodedesc.CONTINUE_LOOP.index: return self.CONTINUE_LOOP(oparg, next_instr) elif opcode == opcodedesc.FOR_ITER.index: next_instr = self.FOR_ITER(oparg, next_instr) elif opcode == opcodedesc.JUMP_FORWARD.index: next_instr = self.JUMP_FORWARD(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_FALSE_OR_POP.index: next_instr = self.JUMP_IF_FALSE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_NOT_DEBUG.index: next_instr = self.JUMP_IF_NOT_DEBUG(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_TRUE_OR_POP.index: next_instr = self.JUMP_IF_TRUE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_FALSE.index: next_instr = self.POP_JUMP_IF_FALSE(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_TRUE.index: next_instr = self.POP_JUMP_IF_TRUE(oparg, next_instr) elif opcode == opcodedesc.BINARY_ADD.index: self.BINARY_ADD(oparg, next_instr) elif opcode == opcodedesc.BINARY_AND.index: self.BINARY_AND(oparg, next_instr) elif opcode == opcodedesc.BINARY_DIVIDE.index: self.BINARY_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_FLOOR_DIVIDE.index: self.BINARY_FLOOR_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_LSHIFT.index: self.BINARY_LSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_MODULO.index: self.BINARY_MODULO(oparg, next_instr) elif opcode == opcodedesc.BINARY_MULTIPLY.index: self.BINARY_MULTIPLY(oparg, next_instr) elif opcode == opcodedesc.BINARY_OR.index: self.BINARY_OR(oparg, next_instr) elif opcode == opcodedesc.BINARY_POWER.index: self.BINARY_POWER(oparg, next_instr) elif opcode == opcodedesc.BINARY_RSHIFT.index: self.BINARY_RSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBSCR.index: self.BINARY_SUBSCR(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBTRACT.index: self.BINARY_SUBTRACT(oparg, next_instr) elif opcode == opcodedesc.BINARY_TRUE_DIVIDE.index: self.BINARY_TRUE_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_XOR.index: self.BINARY_XOR(oparg, next_instr) elif opcode == opcodedesc.BUILD_CLASS.index: self.BUILD_CLASS(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST.index: self.BUILD_LIST(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST_FROM_ARG.index: self.BUILD_LIST_FROM_ARG(oparg, next_instr) elif opcode == opcodedesc.BUILD_MAP.index: self.BUILD_MAP(oparg, next_instr) elif opcode == opcodedesc.BUILD_SET.index: self.BUILD_SET(oparg, next_instr) elif opcode == opcodedesc.BUILD_SLICE.index: self.BUILD_SLICE(oparg, next_instr) elif opcode == opcodedesc.BUILD_TUPLE.index: self.BUILD_TUPLE(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION.index: self.CALL_FUNCTION(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_KW.index: self.CALL_FUNCTION_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR.index: self.CALL_FUNCTION_VAR(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR_KW.index: self.CALL_FUNCTION_VAR_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_METHOD.index: > self.CALL_METHOD(oparg, next_instr) interpreter\pyopcode.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ f = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_introspe...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1770]', line 1> at line 3 oparg = 3, ignored = (18L,), n_args = 3, n_kwargs = 0, w_self = None @jit.unroll_safe def CALL_METHOD(f, oparg, *ignored): # opargs contains the arg, and kwarg count, excluding the implicit 'self' n_args = oparg & 0xff n_kwargs = (oparg >> 8) & 0xff w_self = f.peekvalue_maybe_none(n_args + (2 * n_kwargs)) n = n_args + (w_self is not None) if not n_kwargs: w_callable = f.peekvalue(n_args + (2 * n_kwargs) + 1) w_result = f.space.call_valuestack( > w_callable, n, f, methodcall=w_self is not None, dropvalues=n_args + 2) objspace\std\callmethod.py:96: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_introspe...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1770]', line 1> at line 3 dropvalues = 5, methodcall = False def call_valuestack(self, w_func, nargs, frame, dropvalues, methodcall=False): # methodcall is only used for better error messages in argument.py from pypy.interpreter.function import Function, Method, is_builtin_code if frame.get_is_being_profiled() and is_builtin_code(w_func): # XXX: this code is copied&pasted :-( from the slow path below # call_valuestack(). args = frame.make_arguments(nargs) frame.dropvalues(dropvalues) return self.call_args_and_c_profile(frame, w_func, args) if not self.config.objspace.disable_call_speedhacks: # start of hack for performance if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: w_func = w_func.w_function # reuse callable stack place for w_inst frame.settopvalue(w_inst, nargs) nargs += 1 methodcall = True elif nargs > 0 and ( self.abstract_isinstance_w(frame.peekvalue(nargs-1), # :-( w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): return w_func.funccall_valuestack( > nargs, frame, methodcall=methodcall, dropvalues=dropvalues) interpreter\baseobjspace.py:1243: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_introspe...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1770]', line 1> at line 3 dropvalues = 5, methodcall = False def funccall_valuestack(self, nargs, frame, dropvalues, methodcall=False): # speed hack # methodcall is only for better error messages from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit # if (jit.we_are_jitted() and code is self.space._code_of_sys_exc_info and nargs == 0): frame.dropvalues(dropvalues) from pypy.module.sys.vm import exc_info_direct return exc_info_direct(self.space, frame) # fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: f_0 = frame.peekvalue(0) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, f_0) elif nargs == 2: f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, f_1, f_0) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) frame.dropvalues(dropvalues) return code.fastcall_3(self.space, self, f_2, f_1, f_0) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) f_3 = frame.peekvalue(3) frame.dropvalues(dropvalues) return code.fastcall_4(self.space, self, f_3, f_2, f_1, f_0) elif (nargs | Code.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) return self._flat_pycall(code, nargs, frame, dropvalues) elif fast_natural_arity & Code.FLATPYCALL: natural_arity = fast_natural_arity & 0xff if natural_arity > nargs >= natural_arity - len(self.defs_w): assert isinstance(code, PyCode) return self._flat_pycall_defaults(code, nargs, frame, natural_arity - nargs, dropvalues) elif fast_natural_arity == Code.PASSTHROUGHARGS1 and nargs >= 1: assert isinstance(code, gateway.BuiltinCodePassThroughArguments1) w_obj = frame.peekvalue(nargs-1) args = frame.make_arguments(nargs-1) frame.dropvalues(dropvalues) return code.funcrun_obj(self, w_obj, args) args = frame.make_arguments(nargs, methodcall=methodcall) frame.dropvalues(dropvalues) > return self.call_args(args) interpreter\function.py:190: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('typedef int foo_t;'), W_BytesObject('test_introspect_typedef'), W_BytesObject('\n typedef int foo_t;\n ')]) def call_args(self, args): # delegate activation to code > w_res = self.getcode().funcrun(self, args) interpreter\function.py:68: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('typedef int foo_t;'), W_BytesObject('test_introspect_typedef'), W_BytesObject('\n typedef int foo_t;\n ')]) def funcrun(self, func, args): > return BuiltinCode.funcrun_obj(self, func, None, args) interpreter\gateway.py:781: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('typedef int foo_t;'), W_BytesObject('test_introspect_typedef'), W_BytesObject('\n typedef int foo_t;\n ')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: w_result = activation._run(space, scope_w) except DescrMismatch: if w_obj is not None: args = args.prepend(w_obj) return self._type_unwrap_mismatch(space, args) except Exception as e: > self.handle_exception(space, e) interpreter\gateway.py:795: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> space = StdObjSpace e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def handle_exception(self, space, e): try: if not we_are_translated(): raise raise e except OperationError: raise except Exception as e: # general fall-back from pypy.interpreter import error > raise error.get_converted_unexpected_exception(space, e) interpreter\gateway.py:819: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('typedef int foo_t;'), W_BytesObject('test_introspect_typedef'), W_BytesObject('\n typedef int foo_t;\n ')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: > w_result = activation._run(space, scope_w) interpreter\gateway.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinActivation_UwS_ObjSpace_text_text_text_W_Root_W_Root_W_Root_int_W_Root object at 0x000002791c13af38> space = StdObjSpace scope_w = [W_BytesObject('typedef int foo_t;'), W_BytesObject('test_introspect_typedef'), W_BytesObject('\n typedef int foo_t;\n '), None, None, None, ...] def _run(self, space, scope_w): > return self.behavior(space, space.text_w(scope_w[0]), space.text_w(scope_w[1]), space.text_w(scope_w[2]), scope_w[3], scope_w[4], scope_w[5], space.gateway_int_w(scope_w[6]), scope_w[7]) <3152-codegen d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\rpython\tool\sourcetools.py:200>:3: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace, cdef = 'typedef int foo_t;' module_name = '_CFFI_test_introspect_typedef' source = '\n typedef int foo_t;\n ', w_includes = None w_extra_source = None, w_min_version = None, packed = 0 w_extra_compile_args = None @unwrap_spec(cdef='text', module_name='text', source='text', packed=int) def prepare(space, cdef, module_name, source, w_includes=None, w_extra_source=None, w_min_version=None, packed=False, w_extra_compile_args=None): try: import cffi from cffi import FFI # <== the system one, which from cffi import recompiler # needs to be at least cffi 1.0.4 from cffi import ffiplatform except ImportError: pytest.skip("system cffi module not found or older than 1.0.0") if w_min_version is None: min_version = (1, 4, 0) else: min_version = tuple(space.unwrap(w_min_version)) if cffi.__version_info__ < min_version: pytest.skip("system cffi module needs to be at least %s, got %s" % ( min_version, cffi.__version_info__)) space.appexec([], """(): import _cffi_backend # force it to be initialized """) includes = [] if w_includes: includes += space.unpackiterable(w_includes) assert module_name.startswith('test_') module_name = '_CFFI_' + module_name rdir = udir.ensure('recompiler', dir=1) rdir.join('Python.h').write( '#include <stdio.h>\n' '#define PYPY_VERSION XX\n' '#define PyMODINIT_FUNC /*exported*/ void\n' ) path = module_name.replace('.', os.sep) if '.' in module_name: subrdir = rdir.join(module_name[:module_name.index('.')]) os.mkdir(str(subrdir)) else: subrdir = rdir c_file = str(rdir.join('%s.c' % path)) ffi = FFI() for include_ffi_object in includes: ffi.include(include_ffi_object._test_recompiler_source_ffi) ffi.cdef(cdef, packed=packed) ffi.set_source(module_name, source) ffi.emit_c_code(c_file) base_module_name = module_name.split('.')[-1] sources = [] if w_extra_source is not None: sources.append(space.str_w(w_extra_source)) kwargs = {} # GCC 14 promotes -Wincompatible-pointer-types from a warning to an error # by default, which breaks cffi's intentionally-mismatched field-check # probes (e.g. test_misdeclared_field_1). Keep it a warning so the module # compiles and cffi's runtime checks can run. extra = ['-Wno-error=incompatible-pointer-types'] if w_extra_compile_args is not None: extra = extra + space.unwrap(w_extra_compile_args) kwargs['extra_compile_args'] = extra ext = ffiplatform.get_extension(c_file, module_name, include_dirs=[str(rdir)], export_symbols=['_cffi_pypyinit_' + base_module_name], sources=sources, **kwargs) > ffiplatform.compile(str(rdir), ext) module\_cffi_backend\test\test_recompiler.py:86: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x000002792ad06820> compiler_verbose = 0, debug = None def compile(tmpdir, ext, compiler_verbose=0, debug=None): """Compile a C extension module using distutils.""" saved_environ = os.environ.copy() try: > outputfilename = _build(tmpdir, ext, compiler_verbose, debug) d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x000002792ad06820> compiler_verbose = 0, debug = 0 def _build(tmpdir, ext, compiler_verbose=0, debug=None): # XXX compact but horrible :-( from cffi._shimmed_dist_utils import Distribution, CompileError, LinkError, set_threshold, set_verbosity dist = Distribution({'ext_modules': [ext]}) dist.parse_config_files() options = dist.get_option_dict('build_ext') if debug is None: debug = sys.flags.debug options['debug'] = ('ffiplatform', debug) options['force'] = ('ffiplatform', True) options['build_lib'] = ('ffiplatform', tmpdir) options['build_temp'] = ('ffiplatform', tmpdir) # try: old_level = set_threshold(0) or 0 try: set_verbosity(compiler_verbose) dist.run_command('build_ext') cmd_obj = dist.get_command_obj('build_ext') [soname] = cmd_obj.get_outputs() finally: set_threshold(old_level) except (CompileError, LinkError) as e: > raise VerificationError('%s: %s' % (e.__class__.__name__, e)) E VerificationError: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2 d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:54: VerificationError ---------------------------- Captured stdout call ----------------------------- generating d:\systemtemp\pytest\usession-main-595\recompiler\_CFFI_test_introspect_typedef.c ---------------------------- Captured stderr call ----------------------------- cl : Command line error D8021 : invalid numeric argument '/Wno-error=incompatible-pointer-types' _____________ AppTestRecompiler.test_introspect_typedef_multiple ______________ self = <CallInfo when='call' exception: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2> func = <function <lambda> at 0x000002791c62c200>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ..\_pytest\runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ..\_pytest\runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_introspect_typedef_multiple'>, ...ticall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_introspect_typedef_multiple'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ..\_pytest\vendored_packages\pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00000279153616a8> hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_introspect_typedef_multiple'>, ...ticall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_introspect_typedef_multiple'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ..\_pytest\vendored_packages\pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_introspect_typedef_multiple'>, ...ticall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_introspect_typedef_multiple'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ..\_pytest\vendored_packages\pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_introspect_typedef_multiple'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791c1fefe8> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...f_multiple'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792d02fc20> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792d02fc20> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...f_multiple'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_introspect_typedef_multiple'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791b32dab0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...f_multiple'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792d02fbe0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792d02fbe0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...f_multiple'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_introspect_typedef_multiple'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ..\_pytest\vendored_packages\pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_introspect_typedef_multiple'> def pytest_runtest_call(item): try: > item.runtest() ..\_pytest\runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_introspect_typedef_multiple'> def runtest(self): target = self.obj if self.config.option.runappdirect: return target() space = target.im_self.space filename = self._getdynfilename(target) func = app2interp_temp(target.im_func, filename=filename) w_instance = self.parent.w_instance > self.execute_appex(space, func, space, w_instance) tool\pytest\apptest.py:89: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_introspect_typedef_multiple'>, space = StdObjSpace target = <function test_introspect_typedef_multiple at 0x000002791c62c2f0> args = (StdObjSpace, <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>) def execute_appex(self, space, target, *args): self.space = space try: > target(*args) tool\pytest\apptest.py:30: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) w_func = <Function test_introspect_typedef_multiple> args = <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8> def appcaller(space, *args_w): if not isinstance(space, ObjSpace): raise TypeError("first argument must be a space instance.") # the last argument can be an Arguments w_func = self.wget(space, name) if not args_w: return space.call_function(w_func) else: args = args_w[-1] assert args is not None if not isinstance(args, Arguments): > return space.call_function(w_func, *args_w) interpreter\gateway.py:1227: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <Function test_introspect_typedef_multiple> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) nargs = 1, Function = <class 'pypy.interpreter.function.Function'> Method = <class 'pypy.interpreter.function.Method'> def call_function(self, w_func, *args_w): nargs = len(args_w) # used for pruning funccall versions if not self.config.objspace.disable_call_speedhacks and nargs < 5: # start of hack for performance from pypy.interpreter.function import Function, Method if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: if nargs < 4: func = w_func.w_function if isinstance(func, Function): return func.funccall(w_inst, *args_w) elif args_w and ( self.abstract_isinstance_w(args_w[0], w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): > return w_func.funccall(*args_w) interpreter\baseobjspace.py:1210: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <Function test_introspect_typedef_multiple> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) gateway = <module 'pypy.interpreter.gateway' from 'd:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\interpreter\\gateway.pyc'> PyCode = <class 'pypy.interpreter.pycode.PyCode'> code = <code object test_introspect_typedef_multiple, file '[d:\pypy_stuff\buildbot64...-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:1779]', line 1> def funccall(self, *args_w): # speed hack from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit nargs = len(args_w) fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, args_w[0]) elif nargs == 2: assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, args_w[0], args_w[1]) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) return code.fastcall_3(self.space, self, args_w[0], args_w[1], args_w[2]) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) return code.fastcall_4(self.space, self, args_w[0], args_w[1], args_w[2], args_w[3]) elif (nargs | PyCode.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) if nargs < 5: new_frame = self.space.createframe(code, self.w_func_globals, self) for i in funccallunrolling: if i < nargs: new_frame.locals_cells_stack_w[i] = args_w[i] > return new_frame.run() interpreter\function.py:118: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_introspe...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1779]', line 1> at line 4 def run(self): """Start this frame's execution.""" if self.getcode().co_flags & pycode.CO_GENERATOR: from pypy.interpreter.generator import GeneratorIterator return GeneratorIterator(self) else: > return self.execute_frame() interpreter\pyframe.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_introspe...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1779]', line 1> at line 4 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, executioncontext) except OperationError: raise except Exception as e: # general fall-back > raise self._convert_unexpected_exception(e) interpreter\pyframe.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_introspe...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1779]', line 1> at line 4 e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def _convert_unexpected_exception(self, e): from pypy.interpreter import error > operr = error.get_converted_unexpected_exception(self.space, e) interpreter\pyframe.py:943: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_introspe...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1779]', line 1> at line 4 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, > executioncontext) interpreter\pyframe.py:286: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_introspe...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1779]', line 1> at line 4 pycode = <code object test_introspect_typedef_multiple, file '[d:\pypy_stuff\buildbot64...-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:1779]', line 1> next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def dispatch(self, pycode, next_instr, ec): # For the sequel, force 'next_instr' to be unsigned for performance next_instr = r_uint(next_instr) co_code = pycode.co_code try: while True: > next_instr = self.handle_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:64: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_introspe...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1779]', line 1> at line 4 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x01\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00\xcc-\x00|\x01\x00\xc9\x01\x0...d\x03\x00d\x04\x00d\x05\x00d\x06\x00g\x04\x00g\x00\x00g\x00\x00f\x03\x00k\x02\x00sK\x00t\x02\x00\x82\x01\x00d\x00\x00S' next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def handle_bytecode(self, co_code, next_instr, ec): try: > next_instr = self.dispatch_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:71: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_introspe...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1779]', line 1> at line 4 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x01\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00\xcc-\x00|\x01\x00\xc9\x01\x0...d\x03\x00d\x04\x00d\x05\x00d\x06\x00g\x04\x00g\x00\x00g\x00\x00f\x03\x00k\x02\x00sK\x00t\x02\x00\x82\x01\x00d\x00\x00S' next_instr = 18L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> @jit.unroll_safe def dispatch_bytecode(self, co_code, next_instr, ec): while True: self.last_instr = intmask(next_instr) if jit.we_are_jitted(): if self.debugdata: ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) else: # Only reload next_instr from last_instr when something that # can modify it actually ran (trace function or action # dispatcher). In the common case (no trace, positive ticker) # next_instr is unchanged and the round-trip is skipped. _d = self.debugdata if ec.space.reverse_debugging or ( _d is not None and _d.w_f_trace is not None) or ( not we_are_translated() and 'bytecode_only_trace' in ec.__dict__): ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) actionflag = ec.space.actionflag if actionflag.decrement_ticker(TICK_COUNTER_STEP) < 0: actionflag.action_dispatcher(ec, self) next_instr = r_uint(self.last_instr) opcode = ord(co_code[next_instr]) next_instr += 1 if opcode >= HAVE_ARGUMENT: lo = ord(co_code[next_instr]) hi = ord(co_code[next_instr+1]) next_instr += 2 oparg = (hi * 256) | lo else: oparg = 0 # note: the structure of the code here is such that it makes # (after translation) a big "if/elif" chain, which is then # turned into a switch(). while opcode == opcodedesc.EXTENDED_ARG.index: opcode = ord(co_code[next_instr]) if opcode < HAVE_ARGUMENT: raise BytecodeCorruption lo = ord(co_code[next_instr+1]) hi = ord(co_code[next_instr+2]) next_instr += 3 oparg = (oparg * 65536) | (hi * 256) | lo if opcode == opcodedesc.RETURN_VALUE.index: if not self.blockstack_non_empty(): self.frame_finished_execution = True # for generators raise Return w_returnvalue = self.popvalue() block = self.unrollstack(SReturnValue.kind) if block is None: self.pushvalue(w_returnvalue) raise Return else: unroller = SReturnValue(w_returnvalue) next_instr = block.handle(self, unroller) return next_instr # now inside a 'finally' block elif opcode == opcodedesc.END_FINALLY.index: unroller = self.end_finally() if isinstance(unroller, SuspendedUnroller): # go on unrolling the stack block = self.unrollstack(unroller.kind) if block is None: w_result = unroller.nomoreblocks() self.pushvalue(w_result) raise Return else: next_instr = block.handle(self, unroller) return next_instr elif opcode == opcodedesc.JUMP_ABSOLUTE.index: return self.jump_absolute(oparg, ec) elif opcode == opcodedesc.BREAK_LOOP.index: next_instr = self.BREAK_LOOP(oparg, next_instr) elif opcode == opcodedesc.CONTINUE_LOOP.index: return self.CONTINUE_LOOP(oparg, next_instr) elif opcode == opcodedesc.FOR_ITER.index: next_instr = self.FOR_ITER(oparg, next_instr) elif opcode == opcodedesc.JUMP_FORWARD.index: next_instr = self.JUMP_FORWARD(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_FALSE_OR_POP.index: next_instr = self.JUMP_IF_FALSE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_NOT_DEBUG.index: next_instr = self.JUMP_IF_NOT_DEBUG(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_TRUE_OR_POP.index: next_instr = self.JUMP_IF_TRUE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_FALSE.index: next_instr = self.POP_JUMP_IF_FALSE(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_TRUE.index: next_instr = self.POP_JUMP_IF_TRUE(oparg, next_instr) elif opcode == opcodedesc.BINARY_ADD.index: self.BINARY_ADD(oparg, next_instr) elif opcode == opcodedesc.BINARY_AND.index: self.BINARY_AND(oparg, next_instr) elif opcode == opcodedesc.BINARY_DIVIDE.index: self.BINARY_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_FLOOR_DIVIDE.index: self.BINARY_FLOOR_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_LSHIFT.index: self.BINARY_LSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_MODULO.index: self.BINARY_MODULO(oparg, next_instr) elif opcode == opcodedesc.BINARY_MULTIPLY.index: self.BINARY_MULTIPLY(oparg, next_instr) elif opcode == opcodedesc.BINARY_OR.index: self.BINARY_OR(oparg, next_instr) elif opcode == opcodedesc.BINARY_POWER.index: self.BINARY_POWER(oparg, next_instr) elif opcode == opcodedesc.BINARY_RSHIFT.index: self.BINARY_RSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBSCR.index: self.BINARY_SUBSCR(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBTRACT.index: self.BINARY_SUBTRACT(oparg, next_instr) elif opcode == opcodedesc.BINARY_TRUE_DIVIDE.index: self.BINARY_TRUE_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_XOR.index: self.BINARY_XOR(oparg, next_instr) elif opcode == opcodedesc.BUILD_CLASS.index: self.BUILD_CLASS(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST.index: self.BUILD_LIST(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST_FROM_ARG.index: self.BUILD_LIST_FROM_ARG(oparg, next_instr) elif opcode == opcodedesc.BUILD_MAP.index: self.BUILD_MAP(oparg, next_instr) elif opcode == opcodedesc.BUILD_SET.index: self.BUILD_SET(oparg, next_instr) elif opcode == opcodedesc.BUILD_SLICE.index: self.BUILD_SLICE(oparg, next_instr) elif opcode == opcodedesc.BUILD_TUPLE.index: self.BUILD_TUPLE(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION.index: self.CALL_FUNCTION(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_KW.index: self.CALL_FUNCTION_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR.index: self.CALL_FUNCTION_VAR(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR_KW.index: self.CALL_FUNCTION_VAR_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_METHOD.index: > self.CALL_METHOD(oparg, next_instr) interpreter\pyopcode.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ f = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_introspe...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1779]', line 1> at line 4 oparg = 3, ignored = (18L,), n_args = 3, n_kwargs = 0, w_self = None @jit.unroll_safe def CALL_METHOD(f, oparg, *ignored): # opargs contains the arg, and kwarg count, excluding the implicit 'self' n_args = oparg & 0xff n_kwargs = (oparg >> 8) & 0xff w_self = f.peekvalue_maybe_none(n_args + (2 * n_kwargs)) n = n_args + (w_self is not None) if not n_kwargs: w_callable = f.peekvalue(n_args + (2 * n_kwargs) + 1) w_result = f.space.call_valuestack( > w_callable, n, f, methodcall=w_self is not None, dropvalues=n_args + 2) objspace\std\callmethod.py:96: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_introspe...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1779]', line 1> at line 4 dropvalues = 5, methodcall = False def call_valuestack(self, w_func, nargs, frame, dropvalues, methodcall=False): # methodcall is only used for better error messages in argument.py from pypy.interpreter.function import Function, Method, is_builtin_code if frame.get_is_being_profiled() and is_builtin_code(w_func): # XXX: this code is copied&pasted :-( from the slow path below # call_valuestack(). args = frame.make_arguments(nargs) frame.dropvalues(dropvalues) return self.call_args_and_c_profile(frame, w_func, args) if not self.config.objspace.disable_call_speedhacks: # start of hack for performance if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: w_func = w_func.w_function # reuse callable stack place for w_inst frame.settopvalue(w_inst, nargs) nargs += 1 methodcall = True elif nargs > 0 and ( self.abstract_isinstance_w(frame.peekvalue(nargs-1), # :-( w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): return w_func.funccall_valuestack( > nargs, frame, methodcall=methodcall, dropvalues=dropvalues) interpreter\baseobjspace.py:1243: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_introspe...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1779]', line 1> at line 4 dropvalues = 5, methodcall = False def funccall_valuestack(self, nargs, frame, dropvalues, methodcall=False): # speed hack # methodcall is only for better error messages from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit # if (jit.we_are_jitted() and code is self.space._code_of_sys_exc_info and nargs == 0): frame.dropvalues(dropvalues) from pypy.module.sys.vm import exc_info_direct return exc_info_direct(self.space, frame) # fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: f_0 = frame.peekvalue(0) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, f_0) elif nargs == 2: f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, f_1, f_0) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) frame.dropvalues(dropvalues) return code.fastcall_3(self.space, self, f_2, f_1, f_0) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) f_3 = frame.peekvalue(3) frame.dropvalues(dropvalues) return code.fastcall_4(self.space, self, f_3, f_2, f_1, f_0) elif (nargs | Code.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) return self._flat_pycall(code, nargs, frame, dropvalues) elif fast_natural_arity & Code.FLATPYCALL: natural_arity = fast_natural_arity & 0xff if natural_arity > nargs >= natural_arity - len(self.defs_w): assert isinstance(code, PyCode) return self._flat_pycall_defaults(code, nargs, frame, natural_arity - nargs, dropvalues) elif fast_natural_arity == Code.PASSTHROUGHARGS1 and nargs >= 1: assert isinstance(code, gateway.BuiltinCodePassThroughArguments1) w_obj = frame.peekvalue(nargs-1) args = frame.make_arguments(nargs-1) frame.dropvalues(dropvalues) return code.funcrun_obj(self, w_obj, args) args = frame.make_arguments(nargs, methodcall=methodcall) frame.dropvalues(dropvalues) > return self.call_args(args) interpreter\function.py:190: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('\n typedef signed char a_t, c_t, g_t, b_t...ytesObject('\n typedef signed char a_t, c_t, g_t, b_t;\n ')]) def call_args(self, args): # delegate activation to code > w_res = self.getcode().funcrun(self, args) interpreter\function.py:68: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('\n typedef signed char a_t, c_t, g_t, b_t...ytesObject('\n typedef signed char a_t, c_t, g_t, b_t;\n ')]) def funcrun(self, func, args): > return BuiltinCode.funcrun_obj(self, func, None, args) interpreter\gateway.py:781: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('\n typedef signed char a_t, c_t, g_t, b_t...ytesObject('\n typedef signed char a_t, c_t, g_t, b_t;\n ')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: w_result = activation._run(space, scope_w) except DescrMismatch: if w_obj is not None: args = args.prepend(w_obj) return self._type_unwrap_mismatch(space, args) except Exception as e: > self.handle_exception(space, e) interpreter\gateway.py:795: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> space = StdObjSpace e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def handle_exception(self, space, e): try: if not we_are_translated(): raise raise e except OperationError: raise except Exception as e: # general fall-back from pypy.interpreter import error > raise error.get_converted_unexpected_exception(space, e) interpreter\gateway.py:819: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('\n typedef signed char a_t, c_t, g_t, b_t...ytesObject('\n typedef signed char a_t, c_t, g_t, b_t;\n ')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: > w_result = activation._run(space, scope_w) interpreter\gateway.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinActivation_UwS_ObjSpace_text_text_text_W_Root_W_Root_W_Root_int_W_Root object at 0x000002791c13af38> space = StdObjSpace scope_w = [W_BytesObject('\n typedef signed char a_t, c_t, g_t, b_t;\n '), W_BytesObject('test_introspect_typedef_multiple'), W_BytesObject('\n typedef signed char a_t, c_t, g_t, b_t;\n '), None, None, None, ...] def _run(self, space, scope_w): > return self.behavior(space, space.text_w(scope_w[0]), space.text_w(scope_w[1]), space.text_w(scope_w[2]), scope_w[3], scope_w[4], scope_w[5], space.gateway_int_w(scope_w[6]), scope_w[7]) <3152-codegen d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\rpython\tool\sourcetools.py:200>:3: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace cdef = '\n typedef signed char a_t, c_t, g_t, b_t;\n ' module_name = '_CFFI_test_introspect_typedef_multiple' source = '\n typedef signed char a_t, c_t, g_t, b_t;\n ' w_includes = None, w_extra_source = None, w_min_version = None, packed = 0 w_extra_compile_args = None @unwrap_spec(cdef='text', module_name='text', source='text', packed=int) def prepare(space, cdef, module_name, source, w_includes=None, w_extra_source=None, w_min_version=None, packed=False, w_extra_compile_args=None): try: import cffi from cffi import FFI # <== the system one, which from cffi import recompiler # needs to be at least cffi 1.0.4 from cffi import ffiplatform except ImportError: pytest.skip("system cffi module not found or older than 1.0.0") if w_min_version is None: min_version = (1, 4, 0) else: min_version = tuple(space.unwrap(w_min_version)) if cffi.__version_info__ < min_version: pytest.skip("system cffi module needs to be at least %s, got %s" % ( min_version, cffi.__version_info__)) space.appexec([], """(): import _cffi_backend # force it to be initialized """) includes = [] if w_includes: includes += space.unpackiterable(w_includes) assert module_name.startswith('test_') module_name = '_CFFI_' + module_name rdir = udir.ensure('recompiler', dir=1) rdir.join('Python.h').write( '#include <stdio.h>\n' '#define PYPY_VERSION XX\n' '#define PyMODINIT_FUNC /*exported*/ void\n' ) path = module_name.replace('.', os.sep) if '.' in module_name: subrdir = rdir.join(module_name[:module_name.index('.')]) os.mkdir(str(subrdir)) else: subrdir = rdir c_file = str(rdir.join('%s.c' % path)) ffi = FFI() for include_ffi_object in includes: ffi.include(include_ffi_object._test_recompiler_source_ffi) ffi.cdef(cdef, packed=packed) ffi.set_source(module_name, source) ffi.emit_c_code(c_file) base_module_name = module_name.split('.')[-1] sources = [] if w_extra_source is not None: sources.append(space.str_w(w_extra_source)) kwargs = {} # GCC 14 promotes -Wincompatible-pointer-types from a warning to an error # by default, which breaks cffi's intentionally-mismatched field-check # probes (e.g. test_misdeclared_field_1). Keep it a warning so the module # compiles and cffi's runtime checks can run. extra = ['-Wno-error=incompatible-pointer-types'] if w_extra_compile_args is not None: extra = extra + space.unwrap(w_extra_compile_args) kwargs['extra_compile_args'] = extra ext = ffiplatform.get_extension(c_file, module_name, include_dirs=[str(rdir)], export_symbols=['_cffi_pypyinit_' + base_module_name], sources=sources, **kwargs) > ffiplatform.compile(str(rdir), ext) module\_cffi_backend\test\test_recompiler.py:86: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x000002792cfdfda0> compiler_verbose = 0, debug = None def compile(tmpdir, ext, compiler_verbose=0, debug=None): """Compile a C extension module using distutils.""" saved_environ = os.environ.copy() try: > outputfilename = _build(tmpdir, ext, compiler_verbose, debug) d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x000002792cfdfda0> compiler_verbose = 0, debug = 0 def _build(tmpdir, ext, compiler_verbose=0, debug=None): # XXX compact but horrible :-( from cffi._shimmed_dist_utils import Distribution, CompileError, LinkError, set_threshold, set_verbosity dist = Distribution({'ext_modules': [ext]}) dist.parse_config_files() options = dist.get_option_dict('build_ext') if debug is None: debug = sys.flags.debug options['debug'] = ('ffiplatform', debug) options['force'] = ('ffiplatform', True) options['build_lib'] = ('ffiplatform', tmpdir) options['build_temp'] = ('ffiplatform', tmpdir) # try: old_level = set_threshold(0) or 0 try: set_verbosity(compiler_verbose) dist.run_command('build_ext') cmd_obj = dist.get_command_obj('build_ext') [soname] = cmd_obj.get_outputs() finally: set_threshold(old_level) except (CompileError, LinkError) as e: > raise VerificationError('%s: %s' % (e.__class__.__name__, e)) E VerificationError: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2 d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:54: VerificationError ---------------------------- Captured stdout call ----------------------------- generating d:\systemtemp\pytest\usession-main-595\recompiler\_CFFI_test_introspect_typedef_multiple.c ---------------------------- Captured stderr call ----------------------------- cl : Command line error D8021 : invalid numeric argument '/Wno-error=incompatible-pointer-types' __________________ AppTestRecompiler.test_introspect_struct ___________________ self = <CallInfo when='call' exception: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2> func = <function <lambda> at 0x000002792de27a60>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ..\_pytest\runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ..\_pytest\runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_introspect_struct'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_introspect_struct'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ..\_pytest\vendored_packages\pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00000279153616a8> hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_introspect_struct'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_introspect_struct'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ..\_pytest\vendored_packages\pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_introspect_struct'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_introspect_struct'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ..\_pytest\vendored_packages\pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_introspect_struct'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791f728110> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...ect_struct'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792819dee0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792819dee0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...ect_struct'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_introspect_struct'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791f7280c0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...ect_struct'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792819dea0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792819dea0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...ect_struct'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_introspect_struct'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ..\_pytest\vendored_packages\pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_introspect_struct'> def pytest_runtest_call(item): try: > item.runtest() ..\_pytest\runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_introspect_struct'> def runtest(self): target = self.obj if self.config.option.runappdirect: return target() space = target.im_self.space filename = self._getdynfilename(target) func = app2interp_temp(target.im_func, filename=filename) w_instance = self.parent.w_instance > self.execute_appex(space, func, space, w_instance) tool\pytest\apptest.py:89: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_introspect_struct'>, space = StdObjSpace target = <function test_introspect_struct at 0x000002792de27c40> args = (StdObjSpace, <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>) def execute_appex(self, space, target, *args): self.space = space try: > target(*args) tool\pytest\apptest.py:30: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) w_func = <Function test_introspect_struct> args = <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8> def appcaller(space, *args_w): if not isinstance(space, ObjSpace): raise TypeError("first argument must be a space instance.") # the last argument can be an Arguments w_func = self.wget(space, name) if not args_w: return space.call_function(w_func) else: args = args_w[-1] assert args is not None if not isinstance(args, Arguments): > return space.call_function(w_func, *args_w) interpreter\gateway.py:1227: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <Function test_introspect_struct> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) nargs = 1, Function = <class 'pypy.interpreter.function.Function'> Method = <class 'pypy.interpreter.function.Method'> def call_function(self, w_func, *args_w): nargs = len(args_w) # used for pruning funccall versions if not self.config.objspace.disable_call_speedhacks and nargs < 5: # start of hack for performance from pypy.interpreter.function import Function, Method if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: if nargs < 4: func = w_func.w_function if isinstance(func, Function): return func.funccall(w_inst, *args_w) elif args_w and ( self.abstract_isinstance_w(args_w[0], w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): > return w_func.funccall(*args_w) interpreter\baseobjspace.py:1210: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <Function test_introspect_struct> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) gateway = <module 'pypy.interpreter.gateway' from 'd:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\interpreter\\gateway.pyc'> PyCode = <class 'pypy.interpreter.pycode.PyCode'> code = <code object test_introspect_struct, file '[d:\pypy_stuff\buildbot64\slave\own...-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:1787]', line 1> def funccall(self, *args_w): # speed hack from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit nargs = len(args_w) fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, args_w[0]) elif nargs == 2: assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, args_w[0], args_w[1]) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) return code.fastcall_3(self.space, self, args_w[0], args_w[1], args_w[2]) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) return code.fastcall_4(self.space, self, args_w[0], args_w[1], args_w[2], args_w[3]) elif (nargs | PyCode.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) if nargs < 5: new_frame = self.space.createframe(code, self.w_func_globals, self) for i in funccallunrolling: if i < nargs: new_frame.locals_cells_stack_w[i] = args_w[i] > return new_frame.run() interpreter\function.py:118: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_introspe...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1787]', line 1> at line 4 def run(self): """Start this frame's execution.""" if self.getcode().co_flags & pycode.CO_GENERATOR: from pypy.interpreter.generator import GeneratorIterator return GeneratorIterator(self) else: > return self.execute_frame() interpreter\pyframe.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_introspe...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1787]', line 1> at line 4 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, executioncontext) except OperationError: raise except Exception as e: # general fall-back > raise self._convert_unexpected_exception(e) interpreter\pyframe.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_introspe...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1787]', line 1> at line 4 e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def _convert_unexpected_exception(self, e): from pypy.interpreter import error > operr = error.get_converted_unexpected_exception(self.space, e) interpreter\pyframe.py:943: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_introspe...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1787]', line 1> at line 4 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, > executioncontext) interpreter\pyframe.py:286: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_introspe...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1787]', line 1> at line 4 pycode = <code object test_introspect_struct, file '[d:\pypy_stuff\buildbot64\slave\own...-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:1787]', line 1> next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def dispatch(self, pycode, next_instr, ec): # For the sequel, force 'next_instr' to be unsigned for performance next_instr = r_uint(next_instr) co_code = pycode.co_code try: while True: > next_instr = self.handle_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:64: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_introspe...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1787]', line 1> at line 4 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x01\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00\xcc$\x00|\x01\x00\xc9\x01\x0...c\x1e\x00|\x01\x00\xc9\x03\x00d\x04\x00\xca\x01\x00j\x05\x00d\x04\x00k\x02\x00s\x84\x00t\x02\x00\x82\x01\x00d\x00\x00S' next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def handle_bytecode(self, co_code, next_instr, ec): try: > next_instr = self.dispatch_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:71: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_introspe...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1787]', line 1> at line 4 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x01\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00\xcc$\x00|\x01\x00\xc9\x01\x0...c\x1e\x00|\x01\x00\xc9\x03\x00d\x04\x00\xca\x01\x00j\x05\x00d\x04\x00k\x02\x00s\x84\x00t\x02\x00\x82\x01\x00d\x00\x00S' next_instr = 18L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> @jit.unroll_safe def dispatch_bytecode(self, co_code, next_instr, ec): while True: self.last_instr = intmask(next_instr) if jit.we_are_jitted(): if self.debugdata: ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) else: # Only reload next_instr from last_instr when something that # can modify it actually ran (trace function or action # dispatcher). In the common case (no trace, positive ticker) # next_instr is unchanged and the round-trip is skipped. _d = self.debugdata if ec.space.reverse_debugging or ( _d is not None and _d.w_f_trace is not None) or ( not we_are_translated() and 'bytecode_only_trace' in ec.__dict__): ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) actionflag = ec.space.actionflag if actionflag.decrement_ticker(TICK_COUNTER_STEP) < 0: actionflag.action_dispatcher(ec, self) next_instr = r_uint(self.last_instr) opcode = ord(co_code[next_instr]) next_instr += 1 if opcode >= HAVE_ARGUMENT: lo = ord(co_code[next_instr]) hi = ord(co_code[next_instr+1]) next_instr += 2 oparg = (hi * 256) | lo else: oparg = 0 # note: the structure of the code here is such that it makes # (after translation) a big "if/elif" chain, which is then # turned into a switch(). while opcode == opcodedesc.EXTENDED_ARG.index: opcode = ord(co_code[next_instr]) if opcode < HAVE_ARGUMENT: raise BytecodeCorruption lo = ord(co_code[next_instr+1]) hi = ord(co_code[next_instr+2]) next_instr += 3 oparg = (oparg * 65536) | (hi * 256) | lo if opcode == opcodedesc.RETURN_VALUE.index: if not self.blockstack_non_empty(): self.frame_finished_execution = True # for generators raise Return w_returnvalue = self.popvalue() block = self.unrollstack(SReturnValue.kind) if block is None: self.pushvalue(w_returnvalue) raise Return else: unroller = SReturnValue(w_returnvalue) next_instr = block.handle(self, unroller) return next_instr # now inside a 'finally' block elif opcode == opcodedesc.END_FINALLY.index: unroller = self.end_finally() if isinstance(unroller, SuspendedUnroller): # go on unrolling the stack block = self.unrollstack(unroller.kind) if block is None: w_result = unroller.nomoreblocks() self.pushvalue(w_result) raise Return else: next_instr = block.handle(self, unroller) return next_instr elif opcode == opcodedesc.JUMP_ABSOLUTE.index: return self.jump_absolute(oparg, ec) elif opcode == opcodedesc.BREAK_LOOP.index: next_instr = self.BREAK_LOOP(oparg, next_instr) elif opcode == opcodedesc.CONTINUE_LOOP.index: return self.CONTINUE_LOOP(oparg, next_instr) elif opcode == opcodedesc.FOR_ITER.index: next_instr = self.FOR_ITER(oparg, next_instr) elif opcode == opcodedesc.JUMP_FORWARD.index: next_instr = self.JUMP_FORWARD(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_FALSE_OR_POP.index: next_instr = self.JUMP_IF_FALSE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_NOT_DEBUG.index: next_instr = self.JUMP_IF_NOT_DEBUG(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_TRUE_OR_POP.index: next_instr = self.JUMP_IF_TRUE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_FALSE.index: next_instr = self.POP_JUMP_IF_FALSE(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_TRUE.index: next_instr = self.POP_JUMP_IF_TRUE(oparg, next_instr) elif opcode == opcodedesc.BINARY_ADD.index: self.BINARY_ADD(oparg, next_instr) elif opcode == opcodedesc.BINARY_AND.index: self.BINARY_AND(oparg, next_instr) elif opcode == opcodedesc.BINARY_DIVIDE.index: self.BINARY_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_FLOOR_DIVIDE.index: self.BINARY_FLOOR_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_LSHIFT.index: self.BINARY_LSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_MODULO.index: self.BINARY_MODULO(oparg, next_instr) elif opcode == opcodedesc.BINARY_MULTIPLY.index: self.BINARY_MULTIPLY(oparg, next_instr) elif opcode == opcodedesc.BINARY_OR.index: self.BINARY_OR(oparg, next_instr) elif opcode == opcodedesc.BINARY_POWER.index: self.BINARY_POWER(oparg, next_instr) elif opcode == opcodedesc.BINARY_RSHIFT.index: self.BINARY_RSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBSCR.index: self.BINARY_SUBSCR(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBTRACT.index: self.BINARY_SUBTRACT(oparg, next_instr) elif opcode == opcodedesc.BINARY_TRUE_DIVIDE.index: self.BINARY_TRUE_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_XOR.index: self.BINARY_XOR(oparg, next_instr) elif opcode == opcodedesc.BUILD_CLASS.index: self.BUILD_CLASS(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST.index: self.BUILD_LIST(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST_FROM_ARG.index: self.BUILD_LIST_FROM_ARG(oparg, next_instr) elif opcode == opcodedesc.BUILD_MAP.index: self.BUILD_MAP(oparg, next_instr) elif opcode == opcodedesc.BUILD_SET.index: self.BUILD_SET(oparg, next_instr) elif opcode == opcodedesc.BUILD_SLICE.index: self.BUILD_SLICE(oparg, next_instr) elif opcode == opcodedesc.BUILD_TUPLE.index: self.BUILD_TUPLE(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION.index: self.CALL_FUNCTION(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_KW.index: self.CALL_FUNCTION_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR.index: self.CALL_FUNCTION_VAR(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR_KW.index: self.CALL_FUNCTION_VAR_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_METHOD.index: > self.CALL_METHOD(oparg, next_instr) interpreter\pyopcode.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ f = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_introspe...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1787]', line 1> at line 4 oparg = 3, ignored = (18L,), n_args = 3, n_kwargs = 0, w_self = None @jit.unroll_safe def CALL_METHOD(f, oparg, *ignored): # opargs contains the arg, and kwarg count, excluding the implicit 'self' n_args = oparg & 0xff n_kwargs = (oparg >> 8) & 0xff w_self = f.peekvalue_maybe_none(n_args + (2 * n_kwargs)) n = n_args + (w_self is not None) if not n_kwargs: w_callable = f.peekvalue(n_args + (2 * n_kwargs) + 1) w_result = f.space.call_valuestack( > w_callable, n, f, methodcall=w_self is not None, dropvalues=n_args + 2) objspace\std\callmethod.py:96: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_introspe...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1787]', line 1> at line 4 dropvalues = 5, methodcall = False def call_valuestack(self, w_func, nargs, frame, dropvalues, methodcall=False): # methodcall is only used for better error messages in argument.py from pypy.interpreter.function import Function, Method, is_builtin_code if frame.get_is_being_profiled() and is_builtin_code(w_func): # XXX: this code is copied&pasted :-( from the slow path below # call_valuestack(). args = frame.make_arguments(nargs) frame.dropvalues(dropvalues) return self.call_args_and_c_profile(frame, w_func, args) if not self.config.objspace.disable_call_speedhacks: # start of hack for performance if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: w_func = w_func.w_function # reuse callable stack place for w_inst frame.settopvalue(w_inst, nargs) nargs += 1 methodcall = True elif nargs > 0 and ( self.abstract_isinstance_w(frame.peekvalue(nargs-1), # :-( w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): return w_func.funccall_valuestack( > nargs, frame, methodcall=methodcall, dropvalues=dropvalues) interpreter\baseobjspace.py:1243: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_introspe...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1787]', line 1> at line 4 dropvalues = 5, methodcall = False def funccall_valuestack(self, nargs, frame, dropvalues, methodcall=False): # speed hack # methodcall is only for better error messages from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit # if (jit.we_are_jitted() and code is self.space._code_of_sys_exc_info and nargs == 0): frame.dropvalues(dropvalues) from pypy.module.sys.vm import exc_info_direct return exc_info_direct(self.space, frame) # fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: f_0 = frame.peekvalue(0) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, f_0) elif nargs == 2: f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, f_1, f_0) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) frame.dropvalues(dropvalues) return code.fastcall_3(self.space, self, f_2, f_1, f_0) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) f_3 = frame.peekvalue(3) frame.dropvalues(dropvalues) return code.fastcall_4(self.space, self, f_3, f_2, f_1, f_0) elif (nargs | Code.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) return self._flat_pycall(code, nargs, frame, dropvalues) elif fast_natural_arity & Code.FLATPYCALL: natural_arity = fast_natural_arity & 0xff if natural_arity > nargs >= natural_arity - len(self.defs_w): assert isinstance(code, PyCode) return self._flat_pycall_defaults(code, nargs, frame, natural_arity - nargs, dropvalues) elif fast_natural_arity == Code.PASSTHROUGHARGS1 and nargs >= 1: assert isinstance(code, gateway.BuiltinCodePassThroughArguments1) w_obj = frame.peekvalue(nargs-1) args = frame.make_arguments(nargs-1) frame.dropvalues(dropvalues) return code.funcrun_obj(self, w_obj, args) args = frame.make_arguments(nargs, methodcall=methodcall) frame.dropvalues(dropvalues) > return self.call_args(args) interpreter\function.py:190: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('\n struct foo_s { int a; };\n '), ...t_struct'), W_BytesObject('\n struct foo_s { int a; };\n ')]) def call_args(self, args): # delegate activation to code > w_res = self.getcode().funcrun(self, args) interpreter\function.py:68: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('\n struct foo_s { int a; };\n '), ...t_struct'), W_BytesObject('\n struct foo_s { int a; };\n ')]) def funcrun(self, func, args): > return BuiltinCode.funcrun_obj(self, func, None, args) interpreter\gateway.py:781: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('\n struct foo_s { int a; };\n '), ...t_struct'), W_BytesObject('\n struct foo_s { int a; };\n ')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: w_result = activation._run(space, scope_w) except DescrMismatch: if w_obj is not None: args = args.prepend(w_obj) return self._type_unwrap_mismatch(space, args) except Exception as e: > self.handle_exception(space, e) interpreter\gateway.py:795: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> space = StdObjSpace e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def handle_exception(self, space, e): try: if not we_are_translated(): raise raise e except OperationError: raise except Exception as e: # general fall-back from pypy.interpreter import error > raise error.get_converted_unexpected_exception(space, e) interpreter\gateway.py:819: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('\n struct foo_s { int a; };\n '), ...t_struct'), W_BytesObject('\n struct foo_s { int a; };\n ')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: > w_result = activation._run(space, scope_w) interpreter\gateway.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinActivation_UwS_ObjSpace_text_text_text_W_Root_W_Root_W_Root_int_W_Root object at 0x000002791c13af38> space = StdObjSpace scope_w = [W_BytesObject('\n struct foo_s { int a; };\n '), W_BytesObject('test_introspect_struct'), W_BytesObject('\n struct foo_s { int a; };\n '), None, None, None, ...] def _run(self, space, scope_w): > return self.behavior(space, space.text_w(scope_w[0]), space.text_w(scope_w[1]), space.text_w(scope_w[2]), scope_w[3], scope_w[4], scope_w[5], space.gateway_int_w(scope_w[6]), scope_w[7]) <3152-codegen d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\rpython\tool\sourcetools.py:200>:3: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace, cdef = '\n struct foo_s { int a; };\n ' module_name = '_CFFI_test_introspect_struct' source = '\n struct foo_s { int a; };\n ', w_includes = None w_extra_source = None, w_min_version = None, packed = 0 w_extra_compile_args = None @unwrap_spec(cdef='text', module_name='text', source='text', packed=int) def prepare(space, cdef, module_name, source, w_includes=None, w_extra_source=None, w_min_version=None, packed=False, w_extra_compile_args=None): try: import cffi from cffi import FFI # <== the system one, which from cffi import recompiler # needs to be at least cffi 1.0.4 from cffi import ffiplatform except ImportError: pytest.skip("system cffi module not found or older than 1.0.0") if w_min_version is None: min_version = (1, 4, 0) else: min_version = tuple(space.unwrap(w_min_version)) if cffi.__version_info__ < min_version: pytest.skip("system cffi module needs to be at least %s, got %s" % ( min_version, cffi.__version_info__)) space.appexec([], """(): import _cffi_backend # force it to be initialized """) includes = [] if w_includes: includes += space.unpackiterable(w_includes) assert module_name.startswith('test_') module_name = '_CFFI_' + module_name rdir = udir.ensure('recompiler', dir=1) rdir.join('Python.h').write( '#include <stdio.h>\n' '#define PYPY_VERSION XX\n' '#define PyMODINIT_FUNC /*exported*/ void\n' ) path = module_name.replace('.', os.sep) if '.' in module_name: subrdir = rdir.join(module_name[:module_name.index('.')]) os.mkdir(str(subrdir)) else: subrdir = rdir c_file = str(rdir.join('%s.c' % path)) ffi = FFI() for include_ffi_object in includes: ffi.include(include_ffi_object._test_recompiler_source_ffi) ffi.cdef(cdef, packed=packed) ffi.set_source(module_name, source) ffi.emit_c_code(c_file) base_module_name = module_name.split('.')[-1] sources = [] if w_extra_source is not None: sources.append(space.str_w(w_extra_source)) kwargs = {} # GCC 14 promotes -Wincompatible-pointer-types from a warning to an error # by default, which breaks cffi's intentionally-mismatched field-check # probes (e.g. test_misdeclared_field_1). Keep it a warning so the module # compiles and cffi's runtime checks can run. extra = ['-Wno-error=incompatible-pointer-types'] if w_extra_compile_args is not None: extra = extra + space.unwrap(w_extra_compile_args) kwargs['extra_compile_args'] = extra ext = ffiplatform.get_extension(c_file, module_name, include_dirs=[str(rdir)], export_symbols=['_cffi_pypyinit_' + base_module_name], sources=sources, **kwargs) > ffiplatform.compile(str(rdir), ext) module\_cffi_backend\test\test_recompiler.py:86: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x000002792be8ade0> compiler_verbose = 0, debug = None def compile(tmpdir, ext, compiler_verbose=0, debug=None): """Compile a C extension module using distutils.""" saved_environ = os.environ.copy() try: > outputfilename = _build(tmpdir, ext, compiler_verbose, debug) d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x000002792be8ade0> compiler_verbose = 0, debug = 0 def _build(tmpdir, ext, compiler_verbose=0, debug=None): # XXX compact but horrible :-( from cffi._shimmed_dist_utils import Distribution, CompileError, LinkError, set_threshold, set_verbosity dist = Distribution({'ext_modules': [ext]}) dist.parse_config_files() options = dist.get_option_dict('build_ext') if debug is None: debug = sys.flags.debug options['debug'] = ('ffiplatform', debug) options['force'] = ('ffiplatform', True) options['build_lib'] = ('ffiplatform', tmpdir) options['build_temp'] = ('ffiplatform', tmpdir) # try: old_level = set_threshold(0) or 0 try: set_verbosity(compiler_verbose) dist.run_command('build_ext') cmd_obj = dist.get_command_obj('build_ext') [soname] = cmd_obj.get_outputs() finally: set_threshold(old_level) except (CompileError, LinkError) as e: > raise VerificationError('%s: %s' % (e.__class__.__name__, e)) E VerificationError: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2 d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:54: VerificationError ---------------------------- Captured stdout call ----------------------------- generating d:\systemtemp\pytest\usession-main-595\recompiler\_CFFI_test_introspect_struct.c ---------------------------- Captured stderr call ----------------------------- cl : Command line error D8021 : invalid numeric argument '/Wno-error=incompatible-pointer-types' ___________________ AppTestRecompiler.test_introspect_union ___________________ self = <CallInfo when='call' exception: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2> func = <function <lambda> at 0x000002792d3618f8>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ..\_pytest\runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ..\_pytest\runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_introspect_union'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_introspect_union'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ..\_pytest\vendored_packages\pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00000279153616a8> hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_introspect_union'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_introspect_union'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ..\_pytest\vendored_packages\pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_introspect_union'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_introspect_union'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ..\_pytest\vendored_packages\pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_introspect_union'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791e73b628> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...pect_union'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00000279283f45e0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00000279283f45e0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...pect_union'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_introspect_union'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791e73ac50> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...pect_union'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00000279283f45a0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00000279283f45a0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...pect_union'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_introspect_union'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ..\_pytest\vendored_packages\pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_introspect_union'> def pytest_runtest_call(item): try: > item.runtest() ..\_pytest\runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_introspect_union'> def runtest(self): target = self.obj if self.config.option.runappdirect: return target() space = target.im_self.space filename = self._getdynfilename(target) func = app2interp_temp(target.im_func, filename=filename) w_instance = self.parent.w_instance > self.execute_appex(space, func, space, w_instance) tool\pytest\apptest.py:89: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_introspect_union'>, space = StdObjSpace target = <function test_introspect_union at 0x000002792d361970> args = (StdObjSpace, <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>) def execute_appex(self, space, target, *args): self.space = space try: > target(*args) tool\pytest\apptest.py:30: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) w_func = <Function test_introspect_union> args = <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8> def appcaller(space, *args_w): if not isinstance(space, ObjSpace): raise TypeError("first argument must be a space instance.") # the last argument can be an Arguments w_func = self.wget(space, name) if not args_w: return space.call_function(w_func) else: args = args_w[-1] assert args is not None if not isinstance(args, Arguments): > return space.call_function(w_func, *args_w) interpreter\gateway.py:1227: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <Function test_introspect_union> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) nargs = 1, Function = <class 'pypy.interpreter.function.Function'> Method = <class 'pypy.interpreter.function.Method'> def call_function(self, w_func, *args_w): nargs = len(args_w) # used for pruning funccall versions if not self.config.objspace.disable_call_speedhacks and nargs < 5: # start of hack for performance from pypy.interpreter.function import Function, Method if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: if nargs < 4: func = w_func.w_function if isinstance(func, Function): return func.funccall(w_inst, *args_w) elif args_w and ( self.abstract_isinstance_w(args_w[0], w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): > return w_func.funccall(*args_w) interpreter\baseobjspace.py:1210: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <Function test_introspect_union> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) gateway = <module 'pypy.interpreter.gateway' from 'd:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\interpreter\\gateway.pyc'> PyCode = <class 'pypy.interpreter.pycode.PyCode'> code = <code object test_introspect_union, file '[d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:1797]', line 1> def funccall(self, *args_w): # speed hack from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit nargs = len(args_w) fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, args_w[0]) elif nargs == 2: assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, args_w[0], args_w[1]) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) return code.fastcall_3(self.space, self, args_w[0], args_w[1], args_w[2]) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) return code.fastcall_4(self.space, self, args_w[0], args_w[1], args_w[2], args_w[3]) elif (nargs | PyCode.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) if nargs < 5: new_frame = self.space.createframe(code, self.w_func_globals, self) for i in funccallunrolling: if i < nargs: new_frame.locals_cells_stack_w[i] = args_w[i] > return new_frame.run() interpreter\function.py:118: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_introspe...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1797]', line 1> at line 4 def run(self): """Start this frame's execution.""" if self.getcode().co_flags & pycode.CO_GENERATOR: from pypy.interpreter.generator import GeneratorIterator return GeneratorIterator(self) else: > return self.execute_frame() interpreter\pyframe.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_introspe...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1797]', line 1> at line 4 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, executioncontext) except OperationError: raise except Exception as e: # general fall-back > raise self._convert_unexpected_exception(e) interpreter\pyframe.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_introspe...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1797]', line 1> at line 4 e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def _convert_unexpected_exception(self, e): from pypy.interpreter import error > operr = error.get_converted_unexpected_exception(self.space, e) interpreter\pyframe.py:943: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_introspe...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1797]', line 1> at line 4 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, > executioncontext) interpreter\pyframe.py:286: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_introspe...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1797]', line 1> at line 4 pycode = <code object test_introspect_union, file '[d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:1797]', line 1> next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def dispatch(self, pycode, next_instr, ec): # For the sequel, force 'next_instr' to be unsigned for performance next_instr = r_uint(next_instr) co_code = pycode.co_code try: while True: > next_instr = self.handle_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:64: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_introspe...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1797]', line 1> at line 4 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x01\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00\xcc$\x00|\x01\x00\xc9\x01\x0...c\x1e\x00|\x01\x00\xc9\x03\x00d\x04\x00\xca\x01\x00j\x05\x00d\x04\x00k\x02\x00s\x84\x00t\x02\x00\x82\x01\x00d\x00\x00S' next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def handle_bytecode(self, co_code, next_instr, ec): try: > next_instr = self.dispatch_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:71: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_introspe...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1797]', line 1> at line 4 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x01\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00\xcc$\x00|\x01\x00\xc9\x01\x0...c\x1e\x00|\x01\x00\xc9\x03\x00d\x04\x00\xca\x01\x00j\x05\x00d\x04\x00k\x02\x00s\x84\x00t\x02\x00\x82\x01\x00d\x00\x00S' next_instr = 18L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> @jit.unroll_safe def dispatch_bytecode(self, co_code, next_instr, ec): while True: self.last_instr = intmask(next_instr) if jit.we_are_jitted(): if self.debugdata: ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) else: # Only reload next_instr from last_instr when something that # can modify it actually ran (trace function or action # dispatcher). In the common case (no trace, positive ticker) # next_instr is unchanged and the round-trip is skipped. _d = self.debugdata if ec.space.reverse_debugging or ( _d is not None and _d.w_f_trace is not None) or ( not we_are_translated() and 'bytecode_only_trace' in ec.__dict__): ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) actionflag = ec.space.actionflag if actionflag.decrement_ticker(TICK_COUNTER_STEP) < 0: actionflag.action_dispatcher(ec, self) next_instr = r_uint(self.last_instr) opcode = ord(co_code[next_instr]) next_instr += 1 if opcode >= HAVE_ARGUMENT: lo = ord(co_code[next_instr]) hi = ord(co_code[next_instr+1]) next_instr += 2 oparg = (hi * 256) | lo else: oparg = 0 # note: the structure of the code here is such that it makes # (after translation) a big "if/elif" chain, which is then # turned into a switch(). while opcode == opcodedesc.EXTENDED_ARG.index: opcode = ord(co_code[next_instr]) if opcode < HAVE_ARGUMENT: raise BytecodeCorruption lo = ord(co_code[next_instr+1]) hi = ord(co_code[next_instr+2]) next_instr += 3 oparg = (oparg * 65536) | (hi * 256) | lo if opcode == opcodedesc.RETURN_VALUE.index: if not self.blockstack_non_empty(): self.frame_finished_execution = True # for generators raise Return w_returnvalue = self.popvalue() block = self.unrollstack(SReturnValue.kind) if block is None: self.pushvalue(w_returnvalue) raise Return else: unroller = SReturnValue(w_returnvalue) next_instr = block.handle(self, unroller) return next_instr # now inside a 'finally' block elif opcode == opcodedesc.END_FINALLY.index: unroller = self.end_finally() if isinstance(unroller, SuspendedUnroller): # go on unrolling the stack block = self.unrollstack(unroller.kind) if block is None: w_result = unroller.nomoreblocks() self.pushvalue(w_result) raise Return else: next_instr = block.handle(self, unroller) return next_instr elif opcode == opcodedesc.JUMP_ABSOLUTE.index: return self.jump_absolute(oparg, ec) elif opcode == opcodedesc.BREAK_LOOP.index: next_instr = self.BREAK_LOOP(oparg, next_instr) elif opcode == opcodedesc.CONTINUE_LOOP.index: return self.CONTINUE_LOOP(oparg, next_instr) elif opcode == opcodedesc.FOR_ITER.index: next_instr = self.FOR_ITER(oparg, next_instr) elif opcode == opcodedesc.JUMP_FORWARD.index: next_instr = self.JUMP_FORWARD(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_FALSE_OR_POP.index: next_instr = self.JUMP_IF_FALSE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_NOT_DEBUG.index: next_instr = self.JUMP_IF_NOT_DEBUG(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_TRUE_OR_POP.index: next_instr = self.JUMP_IF_TRUE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_FALSE.index: next_instr = self.POP_JUMP_IF_FALSE(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_TRUE.index: next_instr = self.POP_JUMP_IF_TRUE(oparg, next_instr) elif opcode == opcodedesc.BINARY_ADD.index: self.BINARY_ADD(oparg, next_instr) elif opcode == opcodedesc.BINARY_AND.index: self.BINARY_AND(oparg, next_instr) elif opcode == opcodedesc.BINARY_DIVIDE.index: self.BINARY_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_FLOOR_DIVIDE.index: self.BINARY_FLOOR_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_LSHIFT.index: self.BINARY_LSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_MODULO.index: self.BINARY_MODULO(oparg, next_instr) elif opcode == opcodedesc.BINARY_MULTIPLY.index: self.BINARY_MULTIPLY(oparg, next_instr) elif opcode == opcodedesc.BINARY_OR.index: self.BINARY_OR(oparg, next_instr) elif opcode == opcodedesc.BINARY_POWER.index: self.BINARY_POWER(oparg, next_instr) elif opcode == opcodedesc.BINARY_RSHIFT.index: self.BINARY_RSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBSCR.index: self.BINARY_SUBSCR(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBTRACT.index: self.BINARY_SUBTRACT(oparg, next_instr) elif opcode == opcodedesc.BINARY_TRUE_DIVIDE.index: self.BINARY_TRUE_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_XOR.index: self.BINARY_XOR(oparg, next_instr) elif opcode == opcodedesc.BUILD_CLASS.index: self.BUILD_CLASS(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST.index: self.BUILD_LIST(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST_FROM_ARG.index: self.BUILD_LIST_FROM_ARG(oparg, next_instr) elif opcode == opcodedesc.BUILD_MAP.index: self.BUILD_MAP(oparg, next_instr) elif opcode == opcodedesc.BUILD_SET.index: self.BUILD_SET(oparg, next_instr) elif opcode == opcodedesc.BUILD_SLICE.index: self.BUILD_SLICE(oparg, next_instr) elif opcode == opcodedesc.BUILD_TUPLE.index: self.BUILD_TUPLE(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION.index: self.CALL_FUNCTION(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_KW.index: self.CALL_FUNCTION_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR.index: self.CALL_FUNCTION_VAR(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR_KW.index: self.CALL_FUNCTION_VAR_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_METHOD.index: > self.CALL_METHOD(oparg, next_instr) interpreter\pyopcode.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ f = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_introspe...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1797]', line 1> at line 4 oparg = 3, ignored = (18L,), n_args = 3, n_kwargs = 0, w_self = None @jit.unroll_safe def CALL_METHOD(f, oparg, *ignored): # opargs contains the arg, and kwarg count, excluding the implicit 'self' n_args = oparg & 0xff n_kwargs = (oparg >> 8) & 0xff w_self = f.peekvalue_maybe_none(n_args + (2 * n_kwargs)) n = n_args + (w_self is not None) if not n_kwargs: w_callable = f.peekvalue(n_args + (2 * n_kwargs) + 1) w_result = f.space.call_valuestack( > w_callable, n, f, methodcall=w_self is not None, dropvalues=n_args + 2) objspace\std\callmethod.py:96: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_introspe...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1797]', line 1> at line 4 dropvalues = 5, methodcall = False def call_valuestack(self, w_func, nargs, frame, dropvalues, methodcall=False): # methodcall is only used for better error messages in argument.py from pypy.interpreter.function import Function, Method, is_builtin_code if frame.get_is_being_profiled() and is_builtin_code(w_func): # XXX: this code is copied&pasted :-( from the slow path below # call_valuestack(). args = frame.make_arguments(nargs) frame.dropvalues(dropvalues) return self.call_args_and_c_profile(frame, w_func, args) if not self.config.objspace.disable_call_speedhacks: # start of hack for performance if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: w_func = w_func.w_function # reuse callable stack place for w_inst frame.settopvalue(w_inst, nargs) nargs += 1 methodcall = True elif nargs > 0 and ( self.abstract_isinstance_w(frame.peekvalue(nargs-1), # :-( w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): return w_func.funccall_valuestack( > nargs, frame, methodcall=methodcall, dropvalues=dropvalues) interpreter\baseobjspace.py:1243: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_introspe...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1797]', line 1> at line 4 dropvalues = 5, methodcall = False def funccall_valuestack(self, nargs, frame, dropvalues, methodcall=False): # speed hack # methodcall is only for better error messages from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit # if (jit.we_are_jitted() and code is self.space._code_of_sys_exc_info and nargs == 0): frame.dropvalues(dropvalues) from pypy.module.sys.vm import exc_info_direct return exc_info_direct(self.space, frame) # fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: f_0 = frame.peekvalue(0) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, f_0) elif nargs == 2: f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, f_1, f_0) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) frame.dropvalues(dropvalues) return code.fastcall_3(self.space, self, f_2, f_1, f_0) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) f_3 = frame.peekvalue(3) frame.dropvalues(dropvalues) return code.fastcall_4(self.space, self, f_3, f_2, f_1, f_0) elif (nargs | Code.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) return self._flat_pycall(code, nargs, frame, dropvalues) elif fast_natural_arity & Code.FLATPYCALL: natural_arity = fast_natural_arity & 0xff if natural_arity > nargs >= natural_arity - len(self.defs_w): assert isinstance(code, PyCode) return self._flat_pycall_defaults(code, nargs, frame, natural_arity - nargs, dropvalues) elif fast_natural_arity == Code.PASSTHROUGHARGS1 and nargs >= 1: assert isinstance(code, gateway.BuiltinCodePassThroughArguments1) w_obj = frame.peekvalue(nargs-1) args = frame.make_arguments(nargs-1) frame.dropvalues(dropvalues) return code.funcrun_obj(self, w_obj, args) args = frame.make_arguments(nargs, methodcall=methodcall) frame.dropvalues(dropvalues) > return self.call_args(args) interpreter\function.py:190: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('\n union foo_s { int a; };\n '), W...ect_union'), W_BytesObject('\n union foo_s { int a; };\n ')]) def call_args(self, args): # delegate activation to code > w_res = self.getcode().funcrun(self, args) interpreter\function.py:68: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('\n union foo_s { int a; };\n '), W...ect_union'), W_BytesObject('\n union foo_s { int a; };\n ')]) def funcrun(self, func, args): > return BuiltinCode.funcrun_obj(self, func, None, args) interpreter\gateway.py:781: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('\n union foo_s { int a; };\n '), W...ect_union'), W_BytesObject('\n union foo_s { int a; };\n ')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: w_result = activation._run(space, scope_w) except DescrMismatch: if w_obj is not None: args = args.prepend(w_obj) return self._type_unwrap_mismatch(space, args) except Exception as e: > self.handle_exception(space, e) interpreter\gateway.py:795: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> space = StdObjSpace e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def handle_exception(self, space, e): try: if not we_are_translated(): raise raise e except OperationError: raise except Exception as e: # general fall-back from pypy.interpreter import error > raise error.get_converted_unexpected_exception(space, e) interpreter\gateway.py:819: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('\n union foo_s { int a; };\n '), W...ect_union'), W_BytesObject('\n union foo_s { int a; };\n ')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: > w_result = activation._run(space, scope_w) interpreter\gateway.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinActivation_UwS_ObjSpace_text_text_text_W_Root_W_Root_W_Root_int_W_Root object at 0x000002791c13af38> space = StdObjSpace scope_w = [W_BytesObject('\n union foo_s { int a; };\n '), W_BytesObject('test_introspect_union'), W_BytesObject('\n union foo_s { int a; };\n '), None, None, None, ...] def _run(self, space, scope_w): > return self.behavior(space, space.text_w(scope_w[0]), space.text_w(scope_w[1]), space.text_w(scope_w[2]), scope_w[3], scope_w[4], scope_w[5], space.gateway_int_w(scope_w[6]), scope_w[7]) <3152-codegen d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\rpython\tool\sourcetools.py:200>:3: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace, cdef = '\n union foo_s { int a; };\n ' module_name = '_CFFI_test_introspect_union' source = '\n union foo_s { int a; };\n ', w_includes = None w_extra_source = None, w_min_version = None, packed = 0 w_extra_compile_args = None @unwrap_spec(cdef='text', module_name='text', source='text', packed=int) def prepare(space, cdef, module_name, source, w_includes=None, w_extra_source=None, w_min_version=None, packed=False, w_extra_compile_args=None): try: import cffi from cffi import FFI # <== the system one, which from cffi import recompiler # needs to be at least cffi 1.0.4 from cffi import ffiplatform except ImportError: pytest.skip("system cffi module not found or older than 1.0.0") if w_min_version is None: min_version = (1, 4, 0) else: min_version = tuple(space.unwrap(w_min_version)) if cffi.__version_info__ < min_version: pytest.skip("system cffi module needs to be at least %s, got %s" % ( min_version, cffi.__version_info__)) space.appexec([], """(): import _cffi_backend # force it to be initialized """) includes = [] if w_includes: includes += space.unpackiterable(w_includes) assert module_name.startswith('test_') module_name = '_CFFI_' + module_name rdir = udir.ensure('recompiler', dir=1) rdir.join('Python.h').write( '#include <stdio.h>\n' '#define PYPY_VERSION XX\n' '#define PyMODINIT_FUNC /*exported*/ void\n' ) path = module_name.replace('.', os.sep) if '.' in module_name: subrdir = rdir.join(module_name[:module_name.index('.')]) os.mkdir(str(subrdir)) else: subrdir = rdir c_file = str(rdir.join('%s.c' % path)) ffi = FFI() for include_ffi_object in includes: ffi.include(include_ffi_object._test_recompiler_source_ffi) ffi.cdef(cdef, packed=packed) ffi.set_source(module_name, source) ffi.emit_c_code(c_file) base_module_name = module_name.split('.')[-1] sources = [] if w_extra_source is not None: sources.append(space.str_w(w_extra_source)) kwargs = {} # GCC 14 promotes -Wincompatible-pointer-types from a warning to an error # by default, which breaks cffi's intentionally-mismatched field-check # probes (e.g. test_misdeclared_field_1). Keep it a warning so the module # compiles and cffi's runtime checks can run. extra = ['-Wno-error=incompatible-pointer-types'] if w_extra_compile_args is not None: extra = extra + space.unwrap(w_extra_compile_args) kwargs['extra_compile_args'] = extra ext = ffiplatform.get_extension(c_file, module_name, include_dirs=[str(rdir)], export_symbols=['_cffi_pypyinit_' + base_module_name], sources=sources, **kwargs) > ffiplatform.compile(str(rdir), ext) module\_cffi_backend\test\test_recompiler.py:86: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x00000279283f4ee0> compiler_verbose = 0, debug = None def compile(tmpdir, ext, compiler_verbose=0, debug=None): """Compile a C extension module using distutils.""" saved_environ = os.environ.copy() try: > outputfilename = _build(tmpdir, ext, compiler_verbose, debug) d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x00000279283f4ee0> compiler_verbose = 0, debug = 0 def _build(tmpdir, ext, compiler_verbose=0, debug=None): # XXX compact but horrible :-( from cffi._shimmed_dist_utils import Distribution, CompileError, LinkError, set_threshold, set_verbosity dist = Distribution({'ext_modules': [ext]}) dist.parse_config_files() options = dist.get_option_dict('build_ext') if debug is None: debug = sys.flags.debug options['debug'] = ('ffiplatform', debug) options['force'] = ('ffiplatform', True) options['build_lib'] = ('ffiplatform', tmpdir) options['build_temp'] = ('ffiplatform', tmpdir) # try: old_level = set_threshold(0) or 0 try: set_verbosity(compiler_verbose) dist.run_command('build_ext') cmd_obj = dist.get_command_obj('build_ext') [soname] = cmd_obj.get_outputs() finally: set_threshold(old_level) except (CompileError, LinkError) as e: > raise VerificationError('%s: %s' % (e.__class__.__name__, e)) E VerificationError: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2 d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:54: VerificationError ---------------------------- Captured stdout call ----------------------------- generating d:\systemtemp\pytest\usession-main-595\recompiler\_CFFI_test_introspect_union.c ---------------------------- Captured stderr call ----------------------------- cl : Command line error D8021 : invalid numeric argument '/Wno-error=incompatible-pointer-types' ____________ AppTestRecompiler.test_introspect_struct_and_typedef _____________ self = <CallInfo when='call' exception: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2> func = <function <lambda> at 0x000002792c976e30>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ..\_pytest\runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ..\_pytest\runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_introspect_struct_and_typedef'>...call__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_introspect_struct_and_typedef'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ..\_pytest\vendored_packages\pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00000279153616a8> hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_introspect_struct_and_typedef'>...call__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_introspect_struct_and_typedef'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ..\_pytest\vendored_packages\pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_introspect_struct_and_typedef'>...call__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_introspect_struct_and_typedef'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ..\_pytest\vendored_packages\pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_introspect_struct_and_typedef'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x0000027927d36b88> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...nd_typedef'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00000279263a13a0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00000279263a13a0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...nd_typedef'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_introspect_struct_and_typedef'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x0000027927d36b38> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...nd_typedef'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00000279263a1360> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00000279263a1360> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...nd_typedef'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_introspect_struct_and_typedef'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ..\_pytest\vendored_packages\pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_introspect_struct_and_typedef'> def pytest_runtest_call(item): try: > item.runtest() ..\_pytest\runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_introspect_struct_and_typedef'> def runtest(self): target = self.obj if self.config.option.runappdirect: return target() space = target.im_self.space filename = self._getdynfilename(target) func = app2interp_temp(target.im_func, filename=filename) w_instance = self.parent.w_instance > self.execute_appex(space, func, space, w_instance) tool\pytest\apptest.py:89: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_introspect_struct_and_typedef'>, space = StdObjSpace target = <function test_introspect_struct_and_typedef at 0x000002792c977538> args = (StdObjSpace, <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>) def execute_appex(self, space, target, *args): self.space = space try: > target(*args) tool\pytest\apptest.py:30: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) w_func = <Function test_introspect_struct_and_typedef> args = <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8> def appcaller(space, *args_w): if not isinstance(space, ObjSpace): raise TypeError("first argument must be a space instance.") # the last argument can be an Arguments w_func = self.wget(space, name) if not args_w: return space.call_function(w_func) else: args = args_w[-1] assert args is not None if not isinstance(args, Arguments): > return space.call_function(w_func, *args_w) interpreter\gateway.py:1227: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <Function test_introspect_struct_and_typedef> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) nargs = 1, Function = <class 'pypy.interpreter.function.Function'> Method = <class 'pypy.interpreter.function.Method'> def call_function(self, w_func, *args_w): nargs = len(args_w) # used for pruning funccall versions if not self.config.objspace.disable_call_speedhacks and nargs < 5: # start of hack for performance from pypy.interpreter.function import Function, Method if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: if nargs < 4: func = w_func.w_function if isinstance(func, Function): return func.funccall(w_inst, *args_w) elif args_w and ( self.abstract_isinstance_w(args_w[0], w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): > return w_func.funccall(*args_w) interpreter\baseobjspace.py:1210: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <Function test_introspect_struct_and_typedef> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) gateway = <module 'pypy.interpreter.gateway' from 'd:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\interpreter\\gateway.pyc'> PyCode = <class 'pypy.interpreter.pycode.PyCode'> code = <code object test_introspect_struct_and_typedef, file '[d:\pypy_stuff\buildbot...-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:1807]', line 1> def funccall(self, *args_w): # speed hack from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit nargs = len(args_w) fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, args_w[0]) elif nargs == 2: assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, args_w[0], args_w[1]) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) return code.fastcall_3(self.space, self, args_w[0], args_w[1], args_w[2]) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) return code.fastcall_4(self.space, self, args_w[0], args_w[1], args_w[2], args_w[3]) elif (nargs | PyCode.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) if nargs < 5: new_frame = self.space.createframe(code, self.w_func_globals, self) for i in funccallunrolling: if i < nargs: new_frame.locals_cells_stack_w[i] = args_w[i] > return new_frame.run() interpreter\function.py:118: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_introspe...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1807]', line 1> at line 4 def run(self): """Start this frame's execution.""" if self.getcode().co_flags & pycode.CO_GENERATOR: from pypy.interpreter.generator import GeneratorIterator return GeneratorIterator(self) else: > return self.execute_frame() interpreter\pyframe.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_introspe...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1807]', line 1> at line 4 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, executioncontext) except OperationError: raise except Exception as e: # general fall-back > raise self._convert_unexpected_exception(e) interpreter\pyframe.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_introspe...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1807]', line 1> at line 4 e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def _convert_unexpected_exception(self, e): from pypy.interpreter import error > operr = error.get_converted_unexpected_exception(self.space, e) interpreter\pyframe.py:943: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_introspe...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1807]', line 1> at line 4 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, > executioncontext) interpreter\pyframe.py:286: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_introspe...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1807]', line 1> at line 4 pycode = <code object test_introspect_struct_and_typedef, file '[d:\pypy_stuff\buildbot...-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:1807]', line 1> next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def dispatch(self, pycode, next_instr, ec): # For the sequel, force 'next_instr' to be unsigned for performance next_instr = r_uint(next_instr) co_code = pycode.co_code try: while True: > next_instr = self.handle_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:64: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_introspe...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1807]', line 1> at line 4 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x01\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00\xcc$\x00|\x01\x00\xc9\x01\x0...c\x1e\x00|\x01\x00\xc9\x03\x00d\x03\x00\xca\x01\x00j\x05\x00d\x03\x00k\x02\x00s\x84\x00t\x02\x00\x82\x01\x00d\x00\x00S' next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def handle_bytecode(self, co_code, next_instr, ec): try: > next_instr = self.dispatch_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:71: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_introspe...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1807]', line 1> at line 4 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x01\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00\xcc$\x00|\x01\x00\xc9\x01\x0...c\x1e\x00|\x01\x00\xc9\x03\x00d\x03\x00\xca\x01\x00j\x05\x00d\x03\x00k\x02\x00s\x84\x00t\x02\x00\x82\x01\x00d\x00\x00S' next_instr = 18L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> @jit.unroll_safe def dispatch_bytecode(self, co_code, next_instr, ec): while True: self.last_instr = intmask(next_instr) if jit.we_are_jitted(): if self.debugdata: ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) else: # Only reload next_instr from last_instr when something that # can modify it actually ran (trace function or action # dispatcher). In the common case (no trace, positive ticker) # next_instr is unchanged and the round-trip is skipped. _d = self.debugdata if ec.space.reverse_debugging or ( _d is not None and _d.w_f_trace is not None) or ( not we_are_translated() and 'bytecode_only_trace' in ec.__dict__): ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) actionflag = ec.space.actionflag if actionflag.decrement_ticker(TICK_COUNTER_STEP) < 0: actionflag.action_dispatcher(ec, self) next_instr = r_uint(self.last_instr) opcode = ord(co_code[next_instr]) next_instr += 1 if opcode >= HAVE_ARGUMENT: lo = ord(co_code[next_instr]) hi = ord(co_code[next_instr+1]) next_instr += 2 oparg = (hi * 256) | lo else: oparg = 0 # note: the structure of the code here is such that it makes # (after translation) a big "if/elif" chain, which is then # turned into a switch(). while opcode == opcodedesc.EXTENDED_ARG.index: opcode = ord(co_code[next_instr]) if opcode < HAVE_ARGUMENT: raise BytecodeCorruption lo = ord(co_code[next_instr+1]) hi = ord(co_code[next_instr+2]) next_instr += 3 oparg = (oparg * 65536) | (hi * 256) | lo if opcode == opcodedesc.RETURN_VALUE.index: if not self.blockstack_non_empty(): self.frame_finished_execution = True # for generators raise Return w_returnvalue = self.popvalue() block = self.unrollstack(SReturnValue.kind) if block is None: self.pushvalue(w_returnvalue) raise Return else: unroller = SReturnValue(w_returnvalue) next_instr = block.handle(self, unroller) return next_instr # now inside a 'finally' block elif opcode == opcodedesc.END_FINALLY.index: unroller = self.end_finally() if isinstance(unroller, SuspendedUnroller): # go on unrolling the stack block = self.unrollstack(unroller.kind) if block is None: w_result = unroller.nomoreblocks() self.pushvalue(w_result) raise Return else: next_instr = block.handle(self, unroller) return next_instr elif opcode == opcodedesc.JUMP_ABSOLUTE.index: return self.jump_absolute(oparg, ec) elif opcode == opcodedesc.BREAK_LOOP.index: next_instr = self.BREAK_LOOP(oparg, next_instr) elif opcode == opcodedesc.CONTINUE_LOOP.index: return self.CONTINUE_LOOP(oparg, next_instr) elif opcode == opcodedesc.FOR_ITER.index: next_instr = self.FOR_ITER(oparg, next_instr) elif opcode == opcodedesc.JUMP_FORWARD.index: next_instr = self.JUMP_FORWARD(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_FALSE_OR_POP.index: next_instr = self.JUMP_IF_FALSE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_NOT_DEBUG.index: next_instr = self.JUMP_IF_NOT_DEBUG(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_TRUE_OR_POP.index: next_instr = self.JUMP_IF_TRUE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_FALSE.index: next_instr = self.POP_JUMP_IF_FALSE(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_TRUE.index: next_instr = self.POP_JUMP_IF_TRUE(oparg, next_instr) elif opcode == opcodedesc.BINARY_ADD.index: self.BINARY_ADD(oparg, next_instr) elif opcode == opcodedesc.BINARY_AND.index: self.BINARY_AND(oparg, next_instr) elif opcode == opcodedesc.BINARY_DIVIDE.index: self.BINARY_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_FLOOR_DIVIDE.index: self.BINARY_FLOOR_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_LSHIFT.index: self.BINARY_LSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_MODULO.index: self.BINARY_MODULO(oparg, next_instr) elif opcode == opcodedesc.BINARY_MULTIPLY.index: self.BINARY_MULTIPLY(oparg, next_instr) elif opcode == opcodedesc.BINARY_OR.index: self.BINARY_OR(oparg, next_instr) elif opcode == opcodedesc.BINARY_POWER.index: self.BINARY_POWER(oparg, next_instr) elif opcode == opcodedesc.BINARY_RSHIFT.index: self.BINARY_RSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBSCR.index: self.BINARY_SUBSCR(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBTRACT.index: self.BINARY_SUBTRACT(oparg, next_instr) elif opcode == opcodedesc.BINARY_TRUE_DIVIDE.index: self.BINARY_TRUE_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_XOR.index: self.BINARY_XOR(oparg, next_instr) elif opcode == opcodedesc.BUILD_CLASS.index: self.BUILD_CLASS(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST.index: self.BUILD_LIST(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST_FROM_ARG.index: self.BUILD_LIST_FROM_ARG(oparg, next_instr) elif opcode == opcodedesc.BUILD_MAP.index: self.BUILD_MAP(oparg, next_instr) elif opcode == opcodedesc.BUILD_SET.index: self.BUILD_SET(oparg, next_instr) elif opcode == opcodedesc.BUILD_SLICE.index: self.BUILD_SLICE(oparg, next_instr) elif opcode == opcodedesc.BUILD_TUPLE.index: self.BUILD_TUPLE(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION.index: self.CALL_FUNCTION(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_KW.index: self.CALL_FUNCTION_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR.index: self.CALL_FUNCTION_VAR(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR_KW.index: self.CALL_FUNCTION_VAR_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_METHOD.index: > self.CALL_METHOD(oparg, next_instr) interpreter\pyopcode.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ f = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_introspe...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1807]', line 1> at line 4 oparg = 3, ignored = (18L,), n_args = 3, n_kwargs = 0, w_self = None @jit.unroll_safe def CALL_METHOD(f, oparg, *ignored): # opargs contains the arg, and kwarg count, excluding the implicit 'self' n_args = oparg & 0xff n_kwargs = (oparg >> 8) & 0xff w_self = f.peekvalue_maybe_none(n_args + (2 * n_kwargs)) n = n_args + (w_self is not None) if not n_kwargs: w_callable = f.peekvalue(n_args + (2 * n_kwargs) + 1) w_result = f.space.call_valuestack( > w_callable, n, f, methodcall=w_self is not None, dropvalues=n_args + 2) objspace\std\callmethod.py:96: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_introspe...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1807]', line 1> at line 4 dropvalues = 5, methodcall = False def call_valuestack(self, w_func, nargs, frame, dropvalues, methodcall=False): # methodcall is only used for better error messages in argument.py from pypy.interpreter.function import Function, Method, is_builtin_code if frame.get_is_being_profiled() and is_builtin_code(w_func): # XXX: this code is copied&pasted :-( from the slow path below # call_valuestack(). args = frame.make_arguments(nargs) frame.dropvalues(dropvalues) return self.call_args_and_c_profile(frame, w_func, args) if not self.config.objspace.disable_call_speedhacks: # start of hack for performance if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: w_func = w_func.w_function # reuse callable stack place for w_inst frame.settopvalue(w_inst, nargs) nargs += 1 methodcall = True elif nargs > 0 and ( self.abstract_isinstance_w(frame.peekvalue(nargs-1), # :-( w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): return w_func.funccall_valuestack( > nargs, frame, methodcall=methodcall, dropvalues=dropvalues) interpreter\baseobjspace.py:1243: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_introspe...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1807]', line 1> at line 4 dropvalues = 5, methodcall = False def funccall_valuestack(self, nargs, frame, dropvalues, methodcall=False): # speed hack # methodcall is only for better error messages from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit # if (jit.we_are_jitted() and code is self.space._code_of_sys_exc_info and nargs == 0): frame.dropvalues(dropvalues) from pypy.module.sys.vm import exc_info_direct return exc_info_direct(self.space, frame) # fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: f_0 = frame.peekvalue(0) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, f_0) elif nargs == 2: f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, f_1, f_0) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) frame.dropvalues(dropvalues) return code.fastcall_3(self.space, self, f_2, f_1, f_0) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) f_3 = frame.peekvalue(3) frame.dropvalues(dropvalues) return code.fastcall_4(self.space, self, f_3, f_2, f_1, f_0) elif (nargs | Code.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) return self._flat_pycall(code, nargs, frame, dropvalues) elif fast_natural_arity & Code.FLATPYCALL: natural_arity = fast_natural_arity & 0xff if natural_arity > nargs >= natural_arity - len(self.defs_w): assert isinstance(code, PyCode) return self._flat_pycall_defaults(code, nargs, frame, natural_arity - nargs, dropvalues) elif fast_natural_arity == Code.PASSTHROUGHARGS1 and nargs >= 1: assert isinstance(code, gateway.BuiltinCodePassThroughArguments1) w_obj = frame.peekvalue(nargs-1) args = frame.make_arguments(nargs-1) frame.dropvalues(dropvalues) return code.funcrun_obj(self, w_obj, args) args = frame.make_arguments(nargs, methodcall=methodcall) frame.dropvalues(dropvalues) > return self.call_args(args) interpreter\function.py:190: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('\n typedef struct { int a; } foo_t;\n ...'), W_BytesObject('\n typedef struct { int a; } foo_t;\n ')]) def call_args(self, args): # delegate activation to code > w_res = self.getcode().funcrun(self, args) interpreter\function.py:68: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('\n typedef struct { int a; } foo_t;\n ...'), W_BytesObject('\n typedef struct { int a; } foo_t;\n ')]) def funcrun(self, func, args): > return BuiltinCode.funcrun_obj(self, func, None, args) interpreter\gateway.py:781: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('\n typedef struct { int a; } foo_t;\n ...'), W_BytesObject('\n typedef struct { int a; } foo_t;\n ')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: w_result = activation._run(space, scope_w) except DescrMismatch: if w_obj is not None: args = args.prepend(w_obj) return self._type_unwrap_mismatch(space, args) except Exception as e: > self.handle_exception(space, e) interpreter\gateway.py:795: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> space = StdObjSpace e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def handle_exception(self, space, e): try: if not we_are_translated(): raise raise e except OperationError: raise except Exception as e: # general fall-back from pypy.interpreter import error > raise error.get_converted_unexpected_exception(space, e) interpreter\gateway.py:819: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('\n typedef struct { int a; } foo_t;\n ...'), W_BytesObject('\n typedef struct { int a; } foo_t;\n ')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: > w_result = activation._run(space, scope_w) interpreter\gateway.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinActivation_UwS_ObjSpace_text_text_text_W_Root_W_Root_W_Root_int_W_Root object at 0x000002791c13af38> space = StdObjSpace scope_w = [W_BytesObject('\n typedef struct { int a; } foo_t;\n '), W_BytesObject('test_introspect_struct_and_typedef'), W_BytesObject('\n typedef struct { int a; } foo_t;\n '), None, None, None, ...] def _run(self, space, scope_w): > return self.behavior(space, space.text_w(scope_w[0]), space.text_w(scope_w[1]), space.text_w(scope_w[2]), scope_w[3], scope_w[4], scope_w[5], space.gateway_int_w(scope_w[6]), scope_w[7]) <3152-codegen d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\rpython\tool\sourcetools.py:200>:3: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace cdef = '\n typedef struct { int a; } foo_t;\n ' module_name = '_CFFI_test_introspect_struct_and_typedef' source = '\n typedef struct { int a; } foo_t;\n ' w_includes = None, w_extra_source = None, w_min_version = None, packed = 0 w_extra_compile_args = None @unwrap_spec(cdef='text', module_name='text', source='text', packed=int) def prepare(space, cdef, module_name, source, w_includes=None, w_extra_source=None, w_min_version=None, packed=False, w_extra_compile_args=None): try: import cffi from cffi import FFI # <== the system one, which from cffi import recompiler # needs to be at least cffi 1.0.4 from cffi import ffiplatform except ImportError: pytest.skip("system cffi module not found or older than 1.0.0") if w_min_version is None: min_version = (1, 4, 0) else: min_version = tuple(space.unwrap(w_min_version)) if cffi.__version_info__ < min_version: pytest.skip("system cffi module needs to be at least %s, got %s" % ( min_version, cffi.__version_info__)) space.appexec([], """(): import _cffi_backend # force it to be initialized """) includes = [] if w_includes: includes += space.unpackiterable(w_includes) assert module_name.startswith('test_') module_name = '_CFFI_' + module_name rdir = udir.ensure('recompiler', dir=1) rdir.join('Python.h').write( '#include <stdio.h>\n' '#define PYPY_VERSION XX\n' '#define PyMODINIT_FUNC /*exported*/ void\n' ) path = module_name.replace('.', os.sep) if '.' in module_name: subrdir = rdir.join(module_name[:module_name.index('.')]) os.mkdir(str(subrdir)) else: subrdir = rdir c_file = str(rdir.join('%s.c' % path)) ffi = FFI() for include_ffi_object in includes: ffi.include(include_ffi_object._test_recompiler_source_ffi) ffi.cdef(cdef, packed=packed) ffi.set_source(module_name, source) ffi.emit_c_code(c_file) base_module_name = module_name.split('.')[-1] sources = [] if w_extra_source is not None: sources.append(space.str_w(w_extra_source)) kwargs = {} # GCC 14 promotes -Wincompatible-pointer-types from a warning to an error # by default, which breaks cffi's intentionally-mismatched field-check # probes (e.g. test_misdeclared_field_1). Keep it a warning so the module # compiles and cffi's runtime checks can run. extra = ['-Wno-error=incompatible-pointer-types'] if w_extra_compile_args is not None: extra = extra + space.unwrap(w_extra_compile_args) kwargs['extra_compile_args'] = extra ext = ffiplatform.get_extension(c_file, module_name, include_dirs=[str(rdir)], export_symbols=['_cffi_pypyinit_' + base_module_name], sources=sources, **kwargs) > ffiplatform.compile(str(rdir), ext) module\_cffi_backend\test\test_recompiler.py:86: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x000002792640c060> compiler_verbose = 0, debug = None def compile(tmpdir, ext, compiler_verbose=0, debug=None): """Compile a C extension module using distutils.""" saved_environ = os.environ.copy() try: > outputfilename = _build(tmpdir, ext, compiler_verbose, debug) d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x000002792640c060> compiler_verbose = 0, debug = 0 def _build(tmpdir, ext, compiler_verbose=0, debug=None): # XXX compact but horrible :-( from cffi._shimmed_dist_utils import Distribution, CompileError, LinkError, set_threshold, set_verbosity dist = Distribution({'ext_modules': [ext]}) dist.parse_config_files() options = dist.get_option_dict('build_ext') if debug is None: debug = sys.flags.debug options['debug'] = ('ffiplatform', debug) options['force'] = ('ffiplatform', True) options['build_lib'] = ('ffiplatform', tmpdir) options['build_temp'] = ('ffiplatform', tmpdir) # try: old_level = set_threshold(0) or 0 try: set_verbosity(compiler_verbose) dist.run_command('build_ext') cmd_obj = dist.get_command_obj('build_ext') [soname] = cmd_obj.get_outputs() finally: set_threshold(old_level) except (CompileError, LinkError) as e: > raise VerificationError('%s: %s' % (e.__class__.__name__, e)) E VerificationError: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2 d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:54: VerificationError ---------------------------- Captured stdout call ----------------------------- generating d:\systemtemp\pytest\usession-main-595\recompiler\_CFFI_test_introspect_struct_and_typedef.c ---------------------------- Captured stderr call ----------------------------- cl : Command line error D8021 : invalid numeric argument '/Wno-error=incompatible-pointer-types' _______________ AppTestRecompiler.test_introspect_included_type _______________ self = <CallInfo when='call' exception: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2> func = <function <lambda> at 0x000002792d5b7880>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ..\_pytest\runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ..\_pytest\runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_introspect_included_type'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_introspect_included_type'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ..\_pytest\vendored_packages\pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00000279153616a8> hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_introspect_included_type'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_introspect_included_type'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ..\_pytest\vendored_packages\pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_introspect_included_type'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_introspect_included_type'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ..\_pytest\vendored_packages\pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_introspect_included_type'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791ace97b8> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...luded_type'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792c4eb2a0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792c4eb2a0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...luded_type'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_introspect_included_type'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791ace9768> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...luded_type'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792c4eb260> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792c4eb260> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...luded_type'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_introspect_included_type'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ..\_pytest\vendored_packages\pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_introspect_included_type'> def pytest_runtest_call(item): try: > item.runtest() ..\_pytest\runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_introspect_included_type'> def runtest(self): target = self.obj if self.config.option.runappdirect: return target() space = target.im_self.space filename = self._getdynfilename(target) func = app2interp_temp(target.im_func, filename=filename) w_instance = self.parent.w_instance > self.execute_appex(space, func, space, w_instance) tool\pytest\apptest.py:89: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_introspect_included_type'>, space = StdObjSpace target = <function test_introspect_included_type at 0x000002792d5b78f8> args = (StdObjSpace, <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>) def execute_appex(self, space, target, *args): self.space = space try: > target(*args) tool\pytest\apptest.py:30: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) w_func = <Function test_introspect_included_type> args = <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8> def appcaller(space, *args_w): if not isinstance(space, ObjSpace): raise TypeError("first argument must be a space instance.") # the last argument can be an Arguments w_func = self.wget(space, name) if not args_w: return space.call_function(w_func) else: args = args_w[-1] assert args is not None if not isinstance(args, Arguments): > return space.call_function(w_func, *args_w) interpreter\gateway.py:1227: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <Function test_introspect_included_type> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) nargs = 1, Function = <class 'pypy.interpreter.function.Function'> Method = <class 'pypy.interpreter.function.Method'> def call_function(self, w_func, *args_w): nargs = len(args_w) # used for pruning funccall versions if not self.config.objspace.disable_call_speedhacks and nargs < 5: # start of hack for performance from pypy.interpreter.function import Function, Method if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: if nargs < 4: func = w_func.w_function if isinstance(func, Function): return func.funccall(w_inst, *args_w) elif args_w and ( self.abstract_isinstance_w(args_w[0], w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): > return w_func.funccall(*args_w) interpreter\baseobjspace.py:1210: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <Function test_introspect_included_type> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) gateway = <module 'pypy.interpreter.gateway' from 'd:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\interpreter\\gateway.pyc'> PyCode = <class 'pypy.interpreter.pycode.PyCode'> code = <code object test_introspect_included_type, file '[d:\pypy_stuff\buildbot64\sl...-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:1817]', line 1> def funccall(self, *args_w): # speed hack from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit nargs = len(args_w) fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, args_w[0]) elif nargs == 2: assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, args_w[0], args_w[1]) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) return code.fastcall_3(self.space, self, args_w[0], args_w[1], args_w[2]) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) return code.fastcall_4(self.space, self, args_w[0], args_w[1], args_w[2], args_w[3]) elif (nargs | PyCode.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) if nargs < 5: new_frame = self.space.createframe(code, self.w_func_globals, self) for i in funccallunrolling: if i < nargs: new_frame.locals_cells_stack_w[i] = args_w[i] > return new_frame.run() interpreter\function.py:118: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_introspe...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1817]', line 1> at line 7 def run(self): """Start this frame's execution.""" if self.getcode().co_flags & pycode.CO_GENERATOR: from pypy.interpreter.generator import GeneratorIterator return GeneratorIterator(self) else: > return self.execute_frame() interpreter\pyframe.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_introspe...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1817]', line 1> at line 7 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, executioncontext) except OperationError: raise except Exception as e: # general fall-back > raise self._convert_unexpected_exception(e) interpreter\pyframe.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_introspe...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1817]', line 1> at line 7 e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def _convert_unexpected_exception(self, e): from pypy.interpreter import error > operr = error.get_converted_unexpected_exception(self.space, e) interpreter\pyframe.py:943: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_introspe...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1817]', line 1> at line 7 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, > executioncontext) interpreter\pyframe.py:286: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_introspe...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1817]', line 1> at line 7 pycode = <code object test_introspect_included_type, file '[d:\pypy_stuff\buildbot64\sl...-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:1817]', line 1> next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def dispatch(self, pycode, next_instr, ec): # For the sequel, force 'next_instr' to be unsigned for performance next_instr = r_uint(next_instr) co_code = pycode.co_code try: while True: > next_instr = self.handle_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:64: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_introspe...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1817]', line 1> at line 7 co_code = 'd\x01\x00}\x01\x00|\x00\x00\xc9\x00\x00|\x01\x00d\x02\x00|\x01\x00\xca\x03\x00\\\x02\x00}\x02\x00}\x03\x00|\x00\x00\x...x06\x00g\x01\x00d\x07\x00g\x01\x00g\x00\x00f\x03\x00k\x02\x00n\x02\x00\x02\x01s\x85\x00t\x02\x00\x82\x01\x00d\x00\x00S' next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def handle_bytecode(self, co_code, next_instr, ec): try: > next_instr = self.dispatch_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:71: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_introspe...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1817]', line 1> at line 7 co_code = 'd\x01\x00}\x01\x00|\x00\x00\xc9\x00\x00|\x01\x00d\x02\x00|\x01\x00\xca\x03\x00\\\x02\x00}\x02\x00}\x03\x00|\x00\x00\x...x06\x00g\x01\x00d\x07\x00g\x01\x00g\x00\x00f\x03\x00k\x02\x00n\x02\x00\x02\x01s\x85\x00t\x02\x00\x82\x01\x00d\x00\x00S' next_instr = 24L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> @jit.unroll_safe def dispatch_bytecode(self, co_code, next_instr, ec): while True: self.last_instr = intmask(next_instr) if jit.we_are_jitted(): if self.debugdata: ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) else: # Only reload next_instr from last_instr when something that # can modify it actually ran (trace function or action # dispatcher). In the common case (no trace, positive ticker) # next_instr is unchanged and the round-trip is skipped. _d = self.debugdata if ec.space.reverse_debugging or ( _d is not None and _d.w_f_trace is not None) or ( not we_are_translated() and 'bytecode_only_trace' in ec.__dict__): ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) actionflag = ec.space.actionflag if actionflag.decrement_ticker(TICK_COUNTER_STEP) < 0: actionflag.action_dispatcher(ec, self) next_instr = r_uint(self.last_instr) opcode = ord(co_code[next_instr]) next_instr += 1 if opcode >= HAVE_ARGUMENT: lo = ord(co_code[next_instr]) hi = ord(co_code[next_instr+1]) next_instr += 2 oparg = (hi * 256) | lo else: oparg = 0 # note: the structure of the code here is such that it makes # (after translation) a big "if/elif" chain, which is then # turned into a switch(). while opcode == opcodedesc.EXTENDED_ARG.index: opcode = ord(co_code[next_instr]) if opcode < HAVE_ARGUMENT: raise BytecodeCorruption lo = ord(co_code[next_instr+1]) hi = ord(co_code[next_instr+2]) next_instr += 3 oparg = (oparg * 65536) | (hi * 256) | lo if opcode == opcodedesc.RETURN_VALUE.index: if not self.blockstack_non_empty(): self.frame_finished_execution = True # for generators raise Return w_returnvalue = self.popvalue() block = self.unrollstack(SReturnValue.kind) if block is None: self.pushvalue(w_returnvalue) raise Return else: unroller = SReturnValue(w_returnvalue) next_instr = block.handle(self, unroller) return next_instr # now inside a 'finally' block elif opcode == opcodedesc.END_FINALLY.index: unroller = self.end_finally() if isinstance(unroller, SuspendedUnroller): # go on unrolling the stack block = self.unrollstack(unroller.kind) if block is None: w_result = unroller.nomoreblocks() self.pushvalue(w_result) raise Return else: next_instr = block.handle(self, unroller) return next_instr elif opcode == opcodedesc.JUMP_ABSOLUTE.index: return self.jump_absolute(oparg, ec) elif opcode == opcodedesc.BREAK_LOOP.index: next_instr = self.BREAK_LOOP(oparg, next_instr) elif opcode == opcodedesc.CONTINUE_LOOP.index: return self.CONTINUE_LOOP(oparg, next_instr) elif opcode == opcodedesc.FOR_ITER.index: next_instr = self.FOR_ITER(oparg, next_instr) elif opcode == opcodedesc.JUMP_FORWARD.index: next_instr = self.JUMP_FORWARD(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_FALSE_OR_POP.index: next_instr = self.JUMP_IF_FALSE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_NOT_DEBUG.index: next_instr = self.JUMP_IF_NOT_DEBUG(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_TRUE_OR_POP.index: next_instr = self.JUMP_IF_TRUE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_FALSE.index: next_instr = self.POP_JUMP_IF_FALSE(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_TRUE.index: next_instr = self.POP_JUMP_IF_TRUE(oparg, next_instr) elif opcode == opcodedesc.BINARY_ADD.index: self.BINARY_ADD(oparg, next_instr) elif opcode == opcodedesc.BINARY_AND.index: self.BINARY_AND(oparg, next_instr) elif opcode == opcodedesc.BINARY_DIVIDE.index: self.BINARY_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_FLOOR_DIVIDE.index: self.BINARY_FLOOR_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_LSHIFT.index: self.BINARY_LSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_MODULO.index: self.BINARY_MODULO(oparg, next_instr) elif opcode == opcodedesc.BINARY_MULTIPLY.index: self.BINARY_MULTIPLY(oparg, next_instr) elif opcode == opcodedesc.BINARY_OR.index: self.BINARY_OR(oparg, next_instr) elif opcode == opcodedesc.BINARY_POWER.index: self.BINARY_POWER(oparg, next_instr) elif opcode == opcodedesc.BINARY_RSHIFT.index: self.BINARY_RSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBSCR.index: self.BINARY_SUBSCR(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBTRACT.index: self.BINARY_SUBTRACT(oparg, next_instr) elif opcode == opcodedesc.BINARY_TRUE_DIVIDE.index: self.BINARY_TRUE_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_XOR.index: self.BINARY_XOR(oparg, next_instr) elif opcode == opcodedesc.BUILD_CLASS.index: self.BUILD_CLASS(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST.index: self.BUILD_LIST(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST_FROM_ARG.index: self.BUILD_LIST_FROM_ARG(oparg, next_instr) elif opcode == opcodedesc.BUILD_MAP.index: self.BUILD_MAP(oparg, next_instr) elif opcode == opcodedesc.BUILD_SET.index: self.BUILD_SET(oparg, next_instr) elif opcode == opcodedesc.BUILD_SLICE.index: self.BUILD_SLICE(oparg, next_instr) elif opcode == opcodedesc.BUILD_TUPLE.index: self.BUILD_TUPLE(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION.index: self.CALL_FUNCTION(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_KW.index: self.CALL_FUNCTION_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR.index: self.CALL_FUNCTION_VAR(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR_KW.index: self.CALL_FUNCTION_VAR_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_METHOD.index: > self.CALL_METHOD(oparg, next_instr) interpreter\pyopcode.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ f = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_introspe...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1817]', line 1> at line 7 oparg = 3, ignored = (24L,), n_args = 3, n_kwargs = 0, w_self = None @jit.unroll_safe def CALL_METHOD(f, oparg, *ignored): # opargs contains the arg, and kwarg count, excluding the implicit 'self' n_args = oparg & 0xff n_kwargs = (oparg >> 8) & 0xff w_self = f.peekvalue_maybe_none(n_args + (2 * n_kwargs)) n = n_args + (w_self is not None) if not n_kwargs: w_callable = f.peekvalue(n_args + (2 * n_kwargs) + 1) w_result = f.space.call_valuestack( > w_callable, n, f, methodcall=w_self is not None, dropvalues=n_args + 2) objspace\std\callmethod.py:96: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_introspe...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1817]', line 1> at line 7 dropvalues = 5, methodcall = False def call_valuestack(self, w_func, nargs, frame, dropvalues, methodcall=False): # methodcall is only used for better error messages in argument.py from pypy.interpreter.function import Function, Method, is_builtin_code if frame.get_is_being_profiled() and is_builtin_code(w_func): # XXX: this code is copied&pasted :-( from the slow path below # call_valuestack(). args = frame.make_arguments(nargs) frame.dropvalues(dropvalues) return self.call_args_and_c_profile(frame, w_func, args) if not self.config.objspace.disable_call_speedhacks: # start of hack for performance if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: w_func = w_func.w_function # reuse callable stack place for w_inst frame.settopvalue(w_inst, nargs) nargs += 1 methodcall = True elif nargs > 0 and ( self.abstract_isinstance_w(frame.peekvalue(nargs-1), # :-( w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): return w_func.funccall_valuestack( > nargs, frame, methodcall=methodcall, dropvalues=dropvalues) interpreter\baseobjspace.py:1243: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_introspe...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1817]', line 1> at line 7 dropvalues = 5, methodcall = False def funccall_valuestack(self, nargs, frame, dropvalues, methodcall=False): # speed hack # methodcall is only for better error messages from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit # if (jit.we_are_jitted() and code is self.space._code_of_sys_exc_info and nargs == 0): frame.dropvalues(dropvalues) from pypy.module.sys.vm import exc_info_direct return exc_info_direct(self.space, frame) # fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: f_0 = frame.peekvalue(0) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, f_0) elif nargs == 2: f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, f_1, f_0) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) frame.dropvalues(dropvalues) return code.fastcall_3(self.space, self, f_2, f_1, f_0) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) f_3 = frame.peekvalue(3) frame.dropvalues(dropvalues) return code.fastcall_4(self.space, self, f_3, f_2, f_1, f_0) elif (nargs | Code.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) return self._flat_pycall(code, nargs, frame, dropvalues) elif fast_natural_arity & Code.FLATPYCALL: natural_arity = fast_natural_arity & 0xff if natural_arity > nargs >= natural_arity - len(self.defs_w): assert isinstance(code, PyCode) return self._flat_pycall_defaults(code, nargs, frame, natural_arity - nargs, dropvalues) elif fast_natural_arity == Code.PASSTHROUGHARGS1 and nargs >= 1: assert isinstance(code, gateway.BuiltinCodePassThroughArguments1) w_obj = frame.peekvalue(nargs-1) args = frame.make_arguments(nargs-1) frame.dropvalues(dropvalues) return code.funcrun_obj(self, w_obj, args) args = frame.make_arguments(nargs, methodcall=methodcall) frame.dropvalues(dropvalues) > return self.call_args(args) interpreter\function.py:190: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('\n typedef signed char schar_t;\n ...pedef signed char schar_t;\n struct sint_t { int x; };\n ')]) def call_args(self, args): # delegate activation to code > w_res = self.getcode().funcrun(self, args) interpreter\function.py:68: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('\n typedef signed char schar_t;\n ...pedef signed char schar_t;\n struct sint_t { int x; };\n ')]) def funcrun(self, func, args): > return BuiltinCode.funcrun_obj(self, func, None, args) interpreter\gateway.py:781: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('\n typedef signed char schar_t;\n ...pedef signed char schar_t;\n struct sint_t { int x; };\n ')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: w_result = activation._run(space, scope_w) except DescrMismatch: if w_obj is not None: args = args.prepend(w_obj) return self._type_unwrap_mismatch(space, args) except Exception as e: > self.handle_exception(space, e) interpreter\gateway.py:795: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> space = StdObjSpace e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def handle_exception(self, space, e): try: if not we_are_translated(): raise raise e except OperationError: raise except Exception as e: # general fall-back from pypy.interpreter import error > raise error.get_converted_unexpected_exception(space, e) interpreter\gateway.py:819: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('\n typedef signed char schar_t;\n ...pedef signed char schar_t;\n struct sint_t { int x; };\n ')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: > w_result = activation._run(space, scope_w) interpreter\gateway.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinActivation_UwS_ObjSpace_text_text_text_W_Root_W_Root_W_Root_int_W_Root object at 0x000002791c13af38> space = StdObjSpace scope_w = [W_BytesObject('\n typedef signed char schar_t;\n struct sint_t { int x; };\n '), W_Bytes...('\n typedef signed char schar_t;\n struct sint_t { int x; };\n '), None, None, None, ...] def _run(self, space, scope_w): > return self.behavior(space, space.text_w(scope_w[0]), space.text_w(scope_w[1]), space.text_w(scope_w[2]), scope_w[3], scope_w[4], scope_w[5], space.gateway_int_w(scope_w[6]), scope_w[7]) <3152-codegen d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\rpython\tool\sourcetools.py:200>:3: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace cdef = '\n typedef signed char schar_t;\n struct sint_t { int x; };\n ' module_name = '_CFFI_test_introspect_included_type_parent' source = '\n typedef signed char schar_t;\n struct sint_t { int x; };\n ' w_includes = None, w_extra_source = None, w_min_version = None, packed = 0 w_extra_compile_args = None @unwrap_spec(cdef='text', module_name='text', source='text', packed=int) def prepare(space, cdef, module_name, source, w_includes=None, w_extra_source=None, w_min_version=None, packed=False, w_extra_compile_args=None): try: import cffi from cffi import FFI # <== the system one, which from cffi import recompiler # needs to be at least cffi 1.0.4 from cffi import ffiplatform except ImportError: pytest.skip("system cffi module not found or older than 1.0.0") if w_min_version is None: min_version = (1, 4, 0) else: min_version = tuple(space.unwrap(w_min_version)) if cffi.__version_info__ < min_version: pytest.skip("system cffi module needs to be at least %s, got %s" % ( min_version, cffi.__version_info__)) space.appexec([], """(): import _cffi_backend # force it to be initialized """) includes = [] if w_includes: includes += space.unpackiterable(w_includes) assert module_name.startswith('test_') module_name = '_CFFI_' + module_name rdir = udir.ensure('recompiler', dir=1) rdir.join('Python.h').write( '#include <stdio.h>\n' '#define PYPY_VERSION XX\n' '#define PyMODINIT_FUNC /*exported*/ void\n' ) path = module_name.replace('.', os.sep) if '.' in module_name: subrdir = rdir.join(module_name[:module_name.index('.')]) os.mkdir(str(subrdir)) else: subrdir = rdir c_file = str(rdir.join('%s.c' % path)) ffi = FFI() for include_ffi_object in includes: ffi.include(include_ffi_object._test_recompiler_source_ffi) ffi.cdef(cdef, packed=packed) ffi.set_source(module_name, source) ffi.emit_c_code(c_file) base_module_name = module_name.split('.')[-1] sources = [] if w_extra_source is not None: sources.append(space.str_w(w_extra_source)) kwargs = {} # GCC 14 promotes -Wincompatible-pointer-types from a warning to an error # by default, which breaks cffi's intentionally-mismatched field-check # probes (e.g. test_misdeclared_field_1). Keep it a warning so the module # compiles and cffi's runtime checks can run. extra = ['-Wno-error=incompatible-pointer-types'] if w_extra_compile_args is not None: extra = extra + space.unwrap(w_extra_compile_args) kwargs['extra_compile_args'] = extra ext = ffiplatform.get_extension(c_file, module_name, include_dirs=[str(rdir)], export_symbols=['_cffi_pypyinit_' + base_module_name], sources=sources, **kwargs) > ffiplatform.compile(str(rdir), ext) module\_cffi_backend\test\test_recompiler.py:86: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x00000279273c6ee0> compiler_verbose = 0, debug = None def compile(tmpdir, ext, compiler_verbose=0, debug=None): """Compile a C extension module using distutils.""" saved_environ = os.environ.copy() try: > outputfilename = _build(tmpdir, ext, compiler_verbose, debug) d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x00000279273c6ee0> compiler_verbose = 0, debug = 0 def _build(tmpdir, ext, compiler_verbose=0, debug=None): # XXX compact but horrible :-( from cffi._shimmed_dist_utils import Distribution, CompileError, LinkError, set_threshold, set_verbosity dist = Distribution({'ext_modules': [ext]}) dist.parse_config_files() options = dist.get_option_dict('build_ext') if debug is None: debug = sys.flags.debug options['debug'] = ('ffiplatform', debug) options['force'] = ('ffiplatform', True) options['build_lib'] = ('ffiplatform', tmpdir) options['build_temp'] = ('ffiplatform', tmpdir) # try: old_level = set_threshold(0) or 0 try: set_verbosity(compiler_verbose) dist.run_command('build_ext') cmd_obj = dist.get_command_obj('build_ext') [soname] = cmd_obj.get_outputs() finally: set_threshold(old_level) except (CompileError, LinkError) as e: > raise VerificationError('%s: %s' % (e.__class__.__name__, e)) E VerificationError: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2 d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:54: VerificationError ---------------------------- Captured stdout call ----------------------------- generating d:\systemtemp\pytest\usession-main-595\recompiler\_CFFI_test_introspect_included_type_parent.c ---------------------------- Captured stderr call ----------------------------- cl : Command line error D8021 : invalid numeric argument '/Wno-error=incompatible-pointer-types' ___________________ AppTestRecompiler.test_introspect_order ___________________ self = <CallInfo when='call' exception: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2> func = <function <lambda> at 0x000002792942e890>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ..\_pytest\runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ..\_pytest\runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_introspect_order'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_introspect_order'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ..\_pytest\vendored_packages\pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00000279153616a8> hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_introspect_order'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_introspect_order'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ..\_pytest\vendored_packages\pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_introspect_order'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_introspect_order'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ..\_pytest\vendored_packages\pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_introspect_order'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791f685d58> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...pect_order'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792cedf220> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792cedf220> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...pect_order'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_introspect_order'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791f685d08> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...pect_order'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792cedf1e0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792cedf1e0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...pect_order'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_introspect_order'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ..\_pytest\vendored_packages\pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_introspect_order'> def pytest_runtest_call(item): try: > item.runtest() ..\_pytest\runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_introspect_order'> def runtest(self): target = self.obj if self.config.option.runappdirect: return target() space = target.im_self.space filename = self._getdynfilename(target) func = app2interp_temp(target.im_func, filename=filename) w_instance = self.parent.w_instance > self.execute_appex(space, func, space, w_instance) tool\pytest\apptest.py:89: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_introspect_order'>, space = StdObjSpace target = <function test_introspect_order at 0x000002792942ed40> args = (StdObjSpace, <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>) def execute_appex(self, space, target, *args): self.space = space try: > target(*args) tool\pytest\apptest.py:30: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) w_func = <Function test_introspect_order> args = <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8> def appcaller(space, *args_w): if not isinstance(space, ObjSpace): raise TypeError("first argument must be a space instance.") # the last argument can be an Arguments w_func = self.wget(space, name) if not args_w: return space.call_function(w_func) else: args = args_w[-1] assert args is not None if not isinstance(args, Arguments): > return space.call_function(w_func, *args_w) interpreter\gateway.py:1227: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <Function test_introspect_order> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) nargs = 1, Function = <class 'pypy.interpreter.function.Function'> Method = <class 'pypy.interpreter.function.Method'> def call_function(self, w_func, *args_w): nargs = len(args_w) # used for pruning funccall versions if not self.config.objspace.disable_call_speedhacks and nargs < 5: # start of hack for performance from pypy.interpreter.function import Function, Method if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: if nargs < 4: func = w_func.w_function if isinstance(func, Function): return func.funccall(w_inst, *args_w) elif args_w and ( self.abstract_isinstance_w(args_w[0], w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): > return w_func.funccall(*args_w) interpreter\baseobjspace.py:1210: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <Function test_introspect_order> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) gateway = <module 'pypy.interpreter.gateway' from 'd:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\interpreter\\gateway.pyc'> PyCode = <class 'pypy.interpreter.pycode.PyCode'> code = <code object test_introspect_order, file '[d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:1830]', line 1> def funccall(self, *args_w): # speed hack from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit nargs = len(args_w) fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, args_w[0]) elif nargs == 2: assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, args_w[0], args_w[1]) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) return code.fastcall_3(self.space, self, args_w[0], args_w[1], args_w[2]) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) return code.fastcall_4(self.space, self, args_w[0], args_w[1], args_w[2], args_w[3]) elif (nargs | PyCode.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) if nargs < 5: new_frame = self.space.createframe(code, self.w_func_globals, self) for i in funccallunrolling: if i < nargs: new_frame.locals_cells_stack_w[i] = args_w[i] > return new_frame.run() interpreter\function.py:118: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_introspe...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1830]', line 1> at line 6 def run(self): """Start this frame's execution.""" if self.getcode().co_flags & pycode.CO_GENERATOR: from pypy.interpreter.generator import GeneratorIterator return GeneratorIterator(self) else: > return self.execute_frame() interpreter\pyframe.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_introspe...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1830]', line 1> at line 6 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, executioncontext) except OperationError: raise except Exception as e: # general fall-back > raise self._convert_unexpected_exception(e) interpreter\pyframe.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_introspe...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1830]', line 1> at line 6 e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def _convert_unexpected_exception(self, e): from pypy.interpreter import error > operr = error.get_converted_unexpected_exception(self.space, e) interpreter\pyframe.py:943: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_introspe...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1830]', line 1> at line 6 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, > executioncontext) interpreter\pyframe.py:286: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_introspe...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1830]', line 1> at line 6 pycode = <code object test_introspect_order, file '[d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:1830]', line 1> next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def dispatch(self, pycode, next_instr, ec): # For the sequel, force 'next_instr' to be unsigned for performance next_instr = r_uint(next_instr) co_code = pycode.co_code try: while True: > next_instr = self.handle_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:64: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_introspe...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1830]', line 1> at line 6 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x01\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00\xcc<\x00|\x01\x00\xc9\x01\x0...\x02\x00sZ\x00t\x02\x00\x82\x01\x00d\x00\x00Sd\x0b\x00g\x03\x00f\x03\x00k\x02\x00sZ\x00t\x02\x00\x82\x01\x00d\x00\x00S' next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def handle_bytecode(self, co_code, next_instr, ec): try: > next_instr = self.dispatch_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:71: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_introspe...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1830]', line 1> at line 6 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x01\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00\xcc<\x00|\x01\x00\xc9\x01\x0...\x02\x00sZ\x00t\x02\x00\x82\x01\x00d\x00\x00Sd\x0b\x00g\x03\x00f\x03\x00k\x02\x00sZ\x00t\x02\x00\x82\x01\x00d\x00\x00S' next_instr = 18L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> @jit.unroll_safe def dispatch_bytecode(self, co_code, next_instr, ec): while True: self.last_instr = intmask(next_instr) if jit.we_are_jitted(): if self.debugdata: ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) else: # Only reload next_instr from last_instr when something that # can modify it actually ran (trace function or action # dispatcher). In the common case (no trace, positive ticker) # next_instr is unchanged and the round-trip is skipped. _d = self.debugdata if ec.space.reverse_debugging or ( _d is not None and _d.w_f_trace is not None) or ( not we_are_translated() and 'bytecode_only_trace' in ec.__dict__): ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) actionflag = ec.space.actionflag if actionflag.decrement_ticker(TICK_COUNTER_STEP) < 0: actionflag.action_dispatcher(ec, self) next_instr = r_uint(self.last_instr) opcode = ord(co_code[next_instr]) next_instr += 1 if opcode >= HAVE_ARGUMENT: lo = ord(co_code[next_instr]) hi = ord(co_code[next_instr+1]) next_instr += 2 oparg = (hi * 256) | lo else: oparg = 0 # note: the structure of the code here is such that it makes # (after translation) a big "if/elif" chain, which is then # turned into a switch(). while opcode == opcodedesc.EXTENDED_ARG.index: opcode = ord(co_code[next_instr]) if opcode < HAVE_ARGUMENT: raise BytecodeCorruption lo = ord(co_code[next_instr+1]) hi = ord(co_code[next_instr+2]) next_instr += 3 oparg = (oparg * 65536) | (hi * 256) | lo if opcode == opcodedesc.RETURN_VALUE.index: if not self.blockstack_non_empty(): self.frame_finished_execution = True # for generators raise Return w_returnvalue = self.popvalue() block = self.unrollstack(SReturnValue.kind) if block is None: self.pushvalue(w_returnvalue) raise Return else: unroller = SReturnValue(w_returnvalue) next_instr = block.handle(self, unroller) return next_instr # now inside a 'finally' block elif opcode == opcodedesc.END_FINALLY.index: unroller = self.end_finally() if isinstance(unroller, SuspendedUnroller): # go on unrolling the stack block = self.unrollstack(unroller.kind) if block is None: w_result = unroller.nomoreblocks() self.pushvalue(w_result) raise Return else: next_instr = block.handle(self, unroller) return next_instr elif opcode == opcodedesc.JUMP_ABSOLUTE.index: return self.jump_absolute(oparg, ec) elif opcode == opcodedesc.BREAK_LOOP.index: next_instr = self.BREAK_LOOP(oparg, next_instr) elif opcode == opcodedesc.CONTINUE_LOOP.index: return self.CONTINUE_LOOP(oparg, next_instr) elif opcode == opcodedesc.FOR_ITER.index: next_instr = self.FOR_ITER(oparg, next_instr) elif opcode == opcodedesc.JUMP_FORWARD.index: next_instr = self.JUMP_FORWARD(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_FALSE_OR_POP.index: next_instr = self.JUMP_IF_FALSE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_NOT_DEBUG.index: next_instr = self.JUMP_IF_NOT_DEBUG(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_TRUE_OR_POP.index: next_instr = self.JUMP_IF_TRUE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_FALSE.index: next_instr = self.POP_JUMP_IF_FALSE(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_TRUE.index: next_instr = self.POP_JUMP_IF_TRUE(oparg, next_instr) elif opcode == opcodedesc.BINARY_ADD.index: self.BINARY_ADD(oparg, next_instr) elif opcode == opcodedesc.BINARY_AND.index: self.BINARY_AND(oparg, next_instr) elif opcode == opcodedesc.BINARY_DIVIDE.index: self.BINARY_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_FLOOR_DIVIDE.index: self.BINARY_FLOOR_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_LSHIFT.index: self.BINARY_LSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_MODULO.index: self.BINARY_MODULO(oparg, next_instr) elif opcode == opcodedesc.BINARY_MULTIPLY.index: self.BINARY_MULTIPLY(oparg, next_instr) elif opcode == opcodedesc.BINARY_OR.index: self.BINARY_OR(oparg, next_instr) elif opcode == opcodedesc.BINARY_POWER.index: self.BINARY_POWER(oparg, next_instr) elif opcode == opcodedesc.BINARY_RSHIFT.index: self.BINARY_RSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBSCR.index: self.BINARY_SUBSCR(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBTRACT.index: self.BINARY_SUBTRACT(oparg, next_instr) elif opcode == opcodedesc.BINARY_TRUE_DIVIDE.index: self.BINARY_TRUE_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_XOR.index: self.BINARY_XOR(oparg, next_instr) elif opcode == opcodedesc.BUILD_CLASS.index: self.BUILD_CLASS(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST.index: self.BUILD_LIST(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST_FROM_ARG.index: self.BUILD_LIST_FROM_ARG(oparg, next_instr) elif opcode == opcodedesc.BUILD_MAP.index: self.BUILD_MAP(oparg, next_instr) elif opcode == opcodedesc.BUILD_SET.index: self.BUILD_SET(oparg, next_instr) elif opcode == opcodedesc.BUILD_SLICE.index: self.BUILD_SLICE(oparg, next_instr) elif opcode == opcodedesc.BUILD_TUPLE.index: self.BUILD_TUPLE(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION.index: self.CALL_FUNCTION(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_KW.index: self.CALL_FUNCTION_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR.index: self.CALL_FUNCTION_VAR(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR_KW.index: self.CALL_FUNCTION_VAR_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_METHOD.index: > self.CALL_METHOD(oparg, next_instr) interpreter\pyopcode.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ f = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_introspe...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1830]', line 1> at line 6 oparg = 3, ignored = (18L,), n_args = 3, n_kwargs = 0, w_self = None @jit.unroll_safe def CALL_METHOD(f, oparg, *ignored): # opargs contains the arg, and kwarg count, excluding the implicit 'self' n_args = oparg & 0xff n_kwargs = (oparg >> 8) & 0xff w_self = f.peekvalue_maybe_none(n_args + (2 * n_kwargs)) n = n_args + (w_self is not None) if not n_kwargs: w_callable = f.peekvalue(n_args + (2 * n_kwargs) + 1) w_result = f.space.call_valuestack( > w_callable, n, f, methodcall=w_self is not None, dropvalues=n_args + 2) objspace\std\callmethod.py:96: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_introspe...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1830]', line 1> at line 6 dropvalues = 5, methodcall = False def call_valuestack(self, w_func, nargs, frame, dropvalues, methodcall=False): # methodcall is only used for better error messages in argument.py from pypy.interpreter.function import Function, Method, is_builtin_code if frame.get_is_being_profiled() and is_builtin_code(w_func): # XXX: this code is copied&pasted :-( from the slow path below # call_valuestack(). args = frame.make_arguments(nargs) frame.dropvalues(dropvalues) return self.call_args_and_c_profile(frame, w_func, args) if not self.config.objspace.disable_call_speedhacks: # start of hack for performance if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: w_func = w_func.w_function # reuse callable stack place for w_inst frame.settopvalue(w_inst, nargs) nargs += 1 methodcall = True elif nargs > 0 and ( self.abstract_isinstance_w(frame.peekvalue(nargs-1), # :-( w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): return w_func.funccall_valuestack( > nargs, frame, methodcall=methodcall, dropvalues=dropvalues) interpreter\baseobjspace.py:1243: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_introspe...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1830]', line 1> at line 6 dropvalues = 5, methodcall = False def funccall_valuestack(self, nargs, frame, dropvalues, methodcall=False): # speed hack # methodcall is only for better error messages from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit # if (jit.we_are_jitted() and code is self.space._code_of_sys_exc_info and nargs == 0): frame.dropvalues(dropvalues) from pypy.module.sys.vm import exc_info_direct return exc_info_direct(self.space, frame) # fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: f_0 = frame.peekvalue(0) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, f_0) elif nargs == 2: f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, f_1, f_0) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) frame.dropvalues(dropvalues) return code.fastcall_3(self.space, self, f_2, f_1, f_0) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) f_3 = frame.peekvalue(3) frame.dropvalues(dropvalues) return code.fastcall_4(self.space, self, f_3, f_2, f_1, f_0) elif (nargs | Code.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) return self._flat_pycall(code, nargs, frame, dropvalues) elif fast_natural_arity & Code.FLATPYCALL: natural_arity = fast_natural_arity & 0xff if natural_arity > nargs >= natural_arity - len(self.defs_w): assert isinstance(code, PyCode) return self._flat_pycall_defaults(code, nargs, frame, natural_arity - nargs, dropvalues) elif fast_natural_arity == Code.PASSTHROUGHARGS1 and nargs >= 1: assert isinstance(code, gateway.BuiltinCodePassThroughArguments1) w_obj = frame.peekvalue(nargs-1) args = frame.make_arguments(nargs-1) frame.dropvalues(dropvalues) return code.funcrun_obj(self, w_obj, args) args = frame.make_arguments(nargs, methodcall=methodcall) frame.dropvalues(dropvalues) > return self.call_args(args) interpreter\function.py:190: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('\n union CFFIaaa { int a; }; typedef stru...ion CFFIaa { int a; }; typedef struct CFFIa { int a; } CFFIbb;\n ')]) def call_args(self, args): # delegate activation to code > w_res = self.getcode().funcrun(self, args) interpreter\function.py:68: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('\n union CFFIaaa { int a; }; typedef stru...ion CFFIaa { int a; }; typedef struct CFFIa { int a; } CFFIbb;\n ')]) def funcrun(self, func, args): > return BuiltinCode.funcrun_obj(self, func, None, args) interpreter\gateway.py:781: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('\n union CFFIaaa { int a; }; typedef stru...ion CFFIaa { int a; }; typedef struct CFFIa { int a; } CFFIbb;\n ')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: w_result = activation._run(space, scope_w) except DescrMismatch: if w_obj is not None: args = args.prepend(w_obj) return self._type_unwrap_mismatch(space, args) except Exception as e: > self.handle_exception(space, e) interpreter\gateway.py:795: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> space = StdObjSpace e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def handle_exception(self, space, e): try: if not we_are_translated(): raise raise e except OperationError: raise except Exception as e: # general fall-back from pypy.interpreter import error > raise error.get_converted_unexpected_exception(space, e) interpreter\gateway.py:819: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('\n union CFFIaaa { int a; }; typedef stru...ion CFFIaa { int a; }; typedef struct CFFIa { int a; } CFFIbb;\n ')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: > w_result = activation._run(space, scope_w) interpreter\gateway.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinActivation_UwS_ObjSpace_text_text_text_W_Root_W_Root_W_Root_int_W_Root object at 0x000002791c13af38> space = StdObjSpace scope_w = [W_BytesObject('\n union CFFIaaa { int a; }; typedef struct CFFIccc ...union CFFIaa { int a; }; typedef st...ruct CFFIccc ...union CFFIaa { int a; }; typedef struct CFFIa { int a; } CFFIbb;\n '), None, None, None, ...] def _run(self, space, scope_w): > return self.behavior(space, space.text_w(scope_w[0]), space.text_w(scope_w[1]), space.text_w(scope_w[2]), scope_w[3], scope_w[4], scope_w[5], space.gateway_int_w(scope_w[6]), scope_w[7]) <3152-codegen d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\rpython\tool\sourcetools.py:200>:3: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace cdef = '\n union CFFIaaa { int a; }; typedef struct CFFIccc { int a; } CFFIb;\n union CFFIg { int a; ...CFFIcc { int a; } CFFIbbb;\n union CFFIaa { int a; }; typedef struct CFFIa { int a; } CFFIbb;\n ' module_name = '_CFFI_test_introspect_order' source = '\n union CFFIaaa { int a; }; typedef struct CFFIccc { int a; } CFFIb;\n union CFFIg { int a; ...CFFIcc { int a; } CFFIbbb;\n union CFFIaa { int a; }; typedef struct CFFIa { int a; } CFFIbb;\n ' w_includes = None, w_extra_source = None, w_min_version = None, packed = 0 w_extra_compile_args = None @unwrap_spec(cdef='text', module_name='text', source='text', packed=int) def prepare(space, cdef, module_name, source, w_includes=None, w_extra_source=None, w_min_version=None, packed=False, w_extra_compile_args=None): try: import cffi from cffi import FFI # <== the system one, which from cffi import recompiler # needs to be at least cffi 1.0.4 from cffi import ffiplatform except ImportError: pytest.skip("system cffi module not found or older than 1.0.0") if w_min_version is None: min_version = (1, 4, 0) else: min_version = tuple(space.unwrap(w_min_version)) if cffi.__version_info__ < min_version: pytest.skip("system cffi module needs to be at least %s, got %s" % ( min_version, cffi.__version_info__)) space.appexec([], """(): import _cffi_backend # force it to be initialized """) includes = [] if w_includes: includes += space.unpackiterable(w_includes) assert module_name.startswith('test_') module_name = '_CFFI_' + module_name rdir = udir.ensure('recompiler', dir=1) rdir.join('Python.h').write( '#include <stdio.h>\n' '#define PYPY_VERSION XX\n' '#define PyMODINIT_FUNC /*exported*/ void\n' ) path = module_name.replace('.', os.sep) if '.' in module_name: subrdir = rdir.join(module_name[:module_name.index('.')]) os.mkdir(str(subrdir)) else: subrdir = rdir c_file = str(rdir.join('%s.c' % path)) ffi = FFI() for include_ffi_object in includes: ffi.include(include_ffi_object._test_recompiler_source_ffi) ffi.cdef(cdef, packed=packed) ffi.set_source(module_name, source) ffi.emit_c_code(c_file) base_module_name = module_name.split('.')[-1] sources = [] if w_extra_source is not None: sources.append(space.str_w(w_extra_source)) kwargs = {} # GCC 14 promotes -Wincompatible-pointer-types from a warning to an error # by default, which breaks cffi's intentionally-mismatched field-check # probes (e.g. test_misdeclared_field_1). Keep it a warning so the module # compiles and cffi's runtime checks can run. extra = ['-Wno-error=incompatible-pointer-types'] if w_extra_compile_args is not None: extra = extra + space.unwrap(w_extra_compile_args) kwargs['extra_compile_args'] = extra ext = ffiplatform.get_extension(c_file, module_name, include_dirs=[str(rdir)], export_symbols=['_cffi_pypyinit_' + base_module_name], sources=sources, **kwargs) > ffiplatform.compile(str(rdir), ext) module\_cffi_backend\test\test_recompiler.py:86: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x00000279275c6020> compiler_verbose = 0, debug = None def compile(tmpdir, ext, compiler_verbose=0, debug=None): """Compile a C extension module using distutils.""" saved_environ = os.environ.copy() try: > outputfilename = _build(tmpdir, ext, compiler_verbose, debug) d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x00000279275c6020> compiler_verbose = 0, debug = 0 def _build(tmpdir, ext, compiler_verbose=0, debug=None): # XXX compact but horrible :-( from cffi._shimmed_dist_utils import Distribution, CompileError, LinkError, set_threshold, set_verbosity dist = Distribution({'ext_modules': [ext]}) dist.parse_config_files() options = dist.get_option_dict('build_ext') if debug is None: debug = sys.flags.debug options['debug'] = ('ffiplatform', debug) options['force'] = ('ffiplatform', True) options['build_lib'] = ('ffiplatform', tmpdir) options['build_temp'] = ('ffiplatform', tmpdir) # try: old_level = set_threshold(0) or 0 try: set_verbosity(compiler_verbose) dist.run_command('build_ext') cmd_obj = dist.get_command_obj('build_ext') [soname] = cmd_obj.get_outputs() finally: set_threshold(old_level) except (CompileError, LinkError) as e: > raise VerificationError('%s: %s' % (e.__class__.__name__, e)) E VerificationError: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2 d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:54: VerificationError ---------------------------- Captured stdout call ----------------------------- generating d:\systemtemp\pytest\usession-main-595\recompiler\_CFFI_test_introspect_order.c ---------------------------- Captured stderr call ----------------------------- cl : Command line error D8021 : invalid numeric argument '/Wno-error=incompatible-pointer-types' __________________ AppTestRecompiler.test_FFIFunctionWrapper __________________ self = <CallInfo when='call' exception: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2> func = <function <lambda> at 0x000002792de27e98>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ..\_pytest\runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ..\_pytest\runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_FFIFunctionWrapper'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_FFIFunctionWrapper'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ..\_pytest\vendored_packages\pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00000279153616a8> hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_FFIFunctionWrapper'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_FFIFunctionWrapper'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ..\_pytest\vendored_packages\pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_FFIFunctionWrapper'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_FFIFunctionWrapper'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ..\_pytest\vendored_packages\pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_FFIFunctionWrapper'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791e73a660> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...ionWrapper'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792b25cda0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792b25cda0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...ionWrapper'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_FFIFunctionWrapper'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791e73a598> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...ionWrapper'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792b25cd60> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792b25cd60> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...ionWrapper'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_FFIFunctionWrapper'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ..\_pytest\vendored_packages\pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_FFIFunctionWrapper'> def pytest_runtest_call(item): try: > item.runtest() ..\_pytest\runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_FFIFunctionWrapper'> def runtest(self): target = self.obj if self.config.option.runappdirect: return target() space = target.im_self.space filename = self._getdynfilename(target) func = app2interp_temp(target.im_func, filename=filename) w_instance = self.parent.w_instance > self.execute_appex(space, func, space, w_instance) tool\pytest\apptest.py:89: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_FFIFunctionWrapper'>, space = StdObjSpace target = <function test_FFIFunctionWrapper at 0x000002792de27f10> args = (StdObjSpace, <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>) def execute_appex(self, space, target, *args): self.space = space try: > target(*args) tool\pytest\apptest.py:30: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) w_func = <Function test_FFIFunctionWrapper> args = <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8> def appcaller(space, *args_w): if not isinstance(space, ObjSpace): raise TypeError("first argument must be a space instance.") # the last argument can be an Arguments w_func = self.wget(space, name) if not args_w: return space.call_function(w_func) else: args = args_w[-1] assert args is not None if not isinstance(args, Arguments): > return space.call_function(w_func, *args_w) interpreter\gateway.py:1227: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <Function test_FFIFunctionWrapper> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) nargs = 1, Function = <class 'pypy.interpreter.function.Function'> Method = <class 'pypy.interpreter.function.Method'> def call_function(self, w_func, *args_w): nargs = len(args_w) # used for pruning funccall versions if not self.config.objspace.disable_call_speedhacks and nargs < 5: # start of hack for performance from pypy.interpreter.function import Function, Method if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: if nargs < 4: func = w_func.w_function if isinstance(func, Function): return func.funccall(w_inst, *args_w) elif args_w and ( self.abstract_isinstance_w(args_w[0], w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): > return w_func.funccall(*args_w) interpreter\baseobjspace.py:1210: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <Function test_FFIFunctionWrapper> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) gateway = <module 'pypy.interpreter.gateway' from 'd:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\interpreter\\gateway.pyc'> PyCode = <class 'pypy.interpreter.pycode.PyCode'> code = <code object test_FFIFunctionWrapper, file '[d:\pypy_stuff\buildbot64\slave\ow...-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:1844]', line 1> def funccall(self, *args_w): # speed hack from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit nargs = len(args_w) fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, args_w[0]) elif nargs == 2: assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, args_w[0], args_w[1]) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) return code.fastcall_3(self.space, self, args_w[0], args_w[1], args_w[2]) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) return code.fastcall_4(self.space, self, args_w[0], args_w[1], args_w[2], args_w[3]) elif (nargs | PyCode.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) if nargs < 5: new_frame = self.space.createframe(code, self.w_func_globals, self) for i in funccallunrolling: if i < nargs: new_frame.locals_cells_stack_w[i] = args_w[i] > return new_frame.run() interpreter\function.py:118: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_FFIFunct...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1844]', line 1> at line 3 def run(self): """Start this frame's execution.""" if self.getcode().co_flags & pycode.CO_GENERATOR: from pypy.interpreter.generator import GeneratorIterator return GeneratorIterator(self) else: > return self.execute_frame() interpreter\pyframe.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_FFIFunct...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1844]', line 1> at line 3 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, executioncontext) except OperationError: raise except Exception as e: # general fall-back > raise self._convert_unexpected_exception(e) interpreter\pyframe.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_FFIFunct...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1844]', line 1> at line 3 e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def _convert_unexpected_exception(self, e): from pypy.interpreter import error > operr = error.get_converted_unexpected_exception(self.space, e) interpreter\pyframe.py:943: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_FFIFunct...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1844]', line 1> at line 3 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, > executioncontext) interpreter\pyframe.py:286: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_FFIFunct...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1844]', line 1> at line 3 pycode = <code object test_FFIFunctionWrapper, file '[d:\pypy_stuff\buildbot64\slave\ow...-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:1844]', line 1> next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def dispatch(self, pycode, next_instr, ec): # For the sequel, force 'next_instr' to be unsigned for performance next_instr = r_uint(next_instr) co_code = pycode.co_code try: while True: > next_instr = self.handle_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:64: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_FFIFunct...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1844]', line 1> at line 3 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00\xcc!\x00|\x02\x00j\x01\x00\x...4\x00\xca\x02\x00|\x02\x00j\x01\x00k\x08\x00sf\x00t\x03\x00\x82\x01\x00d\x00\x00Ssf\x00t\x03\x00\x82\x01\x00d\x00\x00S' next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def handle_bytecode(self, co_code, next_instr, ec): try: > next_instr = self.dispatch_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:71: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_FFIFunct...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1844]', line 1> at line 3 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00\xcc!\x00|\x02\x00j\x01\x00\x...4\x00\xca\x02\x00|\x02\x00j\x01\x00k\x08\x00sf\x00t\x03\x00\x82\x01\x00d\x00\x00Ssf\x00t\x03\x00\x82\x01\x00d\x00\x00S' next_instr = 18L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> @jit.unroll_safe def dispatch_bytecode(self, co_code, next_instr, ec): while True: self.last_instr = intmask(next_instr) if jit.we_are_jitted(): if self.debugdata: ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) else: # Only reload next_instr from last_instr when something that # can modify it actually ran (trace function or action # dispatcher). In the common case (no trace, positive ticker) # next_instr is unchanged and the round-trip is skipped. _d = self.debugdata if ec.space.reverse_debugging or ( _d is not None and _d.w_f_trace is not None) or ( not we_are_translated() and 'bytecode_only_trace' in ec.__dict__): ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) actionflag = ec.space.actionflag if actionflag.decrement_ticker(TICK_COUNTER_STEP) < 0: actionflag.action_dispatcher(ec, self) next_instr = r_uint(self.last_instr) opcode = ord(co_code[next_instr]) next_instr += 1 if opcode >= HAVE_ARGUMENT: lo = ord(co_code[next_instr]) hi = ord(co_code[next_instr+1]) next_instr += 2 oparg = (hi * 256) | lo else: oparg = 0 # note: the structure of the code here is such that it makes # (after translation) a big "if/elif" chain, which is then # turned into a switch(). while opcode == opcodedesc.EXTENDED_ARG.index: opcode = ord(co_code[next_instr]) if opcode < HAVE_ARGUMENT: raise BytecodeCorruption lo = ord(co_code[next_instr+1]) hi = ord(co_code[next_instr+2]) next_instr += 3 oparg = (oparg * 65536) | (hi * 256) | lo if opcode == opcodedesc.RETURN_VALUE.index: if not self.blockstack_non_empty(): self.frame_finished_execution = True # for generators raise Return w_returnvalue = self.popvalue() block = self.unrollstack(SReturnValue.kind) if block is None: self.pushvalue(w_returnvalue) raise Return else: unroller = SReturnValue(w_returnvalue) next_instr = block.handle(self, unroller) return next_instr # now inside a 'finally' block elif opcode == opcodedesc.END_FINALLY.index: unroller = self.end_finally() if isinstance(unroller, SuspendedUnroller): # go on unrolling the stack block = self.unrollstack(unroller.kind) if block is None: w_result = unroller.nomoreblocks() self.pushvalue(w_result) raise Return else: next_instr = block.handle(self, unroller) return next_instr elif opcode == opcodedesc.JUMP_ABSOLUTE.index: return self.jump_absolute(oparg, ec) elif opcode == opcodedesc.BREAK_LOOP.index: next_instr = self.BREAK_LOOP(oparg, next_instr) elif opcode == opcodedesc.CONTINUE_LOOP.index: return self.CONTINUE_LOOP(oparg, next_instr) elif opcode == opcodedesc.FOR_ITER.index: next_instr = self.FOR_ITER(oparg, next_instr) elif opcode == opcodedesc.JUMP_FORWARD.index: next_instr = self.JUMP_FORWARD(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_FALSE_OR_POP.index: next_instr = self.JUMP_IF_FALSE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_NOT_DEBUG.index: next_instr = self.JUMP_IF_NOT_DEBUG(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_TRUE_OR_POP.index: next_instr = self.JUMP_IF_TRUE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_FALSE.index: next_instr = self.POP_JUMP_IF_FALSE(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_TRUE.index: next_instr = self.POP_JUMP_IF_TRUE(oparg, next_instr) elif opcode == opcodedesc.BINARY_ADD.index: self.BINARY_ADD(oparg, next_instr) elif opcode == opcodedesc.BINARY_AND.index: self.BINARY_AND(oparg, next_instr) elif opcode == opcodedesc.BINARY_DIVIDE.index: self.BINARY_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_FLOOR_DIVIDE.index: self.BINARY_FLOOR_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_LSHIFT.index: self.BINARY_LSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_MODULO.index: self.BINARY_MODULO(oparg, next_instr) elif opcode == opcodedesc.BINARY_MULTIPLY.index: self.BINARY_MULTIPLY(oparg, next_instr) elif opcode == opcodedesc.BINARY_OR.index: self.BINARY_OR(oparg, next_instr) elif opcode == opcodedesc.BINARY_POWER.index: self.BINARY_POWER(oparg, next_instr) elif opcode == opcodedesc.BINARY_RSHIFT.index: self.BINARY_RSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBSCR.index: self.BINARY_SUBSCR(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBTRACT.index: self.BINARY_SUBTRACT(oparg, next_instr) elif opcode == opcodedesc.BINARY_TRUE_DIVIDE.index: self.BINARY_TRUE_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_XOR.index: self.BINARY_XOR(oparg, next_instr) elif opcode == opcodedesc.BUILD_CLASS.index: self.BUILD_CLASS(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST.index: self.BUILD_LIST(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST_FROM_ARG.index: self.BUILD_LIST_FROM_ARG(oparg, next_instr) elif opcode == opcodedesc.BUILD_MAP.index: self.BUILD_MAP(oparg, next_instr) elif opcode == opcodedesc.BUILD_SET.index: self.BUILD_SET(oparg, next_instr) elif opcode == opcodedesc.BUILD_SLICE.index: self.BUILD_SLICE(oparg, next_instr) elif opcode == opcodedesc.BUILD_TUPLE.index: self.BUILD_TUPLE(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION.index: self.CALL_FUNCTION(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_KW.index: self.CALL_FUNCTION_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR.index: self.CALL_FUNCTION_VAR(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR_KW.index: self.CALL_FUNCTION_VAR_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_METHOD.index: > self.CALL_METHOD(oparg, next_instr) interpreter\pyopcode.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ f = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_FFIFunct...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1844]', line 1> at line 3 oparg = 3, ignored = (18L,), n_args = 3, n_kwargs = 0, w_self = None @jit.unroll_safe def CALL_METHOD(f, oparg, *ignored): # opargs contains the arg, and kwarg count, excluding the implicit 'self' n_args = oparg & 0xff n_kwargs = (oparg >> 8) & 0xff w_self = f.peekvalue_maybe_none(n_args + (2 * n_kwargs)) n = n_args + (w_self is not None) if not n_kwargs: w_callable = f.peekvalue(n_args + (2 * n_kwargs) + 1) w_result = f.space.call_valuestack( > w_callable, n, f, methodcall=w_self is not None, dropvalues=n_args + 2) objspace\std\callmethod.py:96: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_FFIFunct...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1844]', line 1> at line 3 dropvalues = 5, methodcall = False def call_valuestack(self, w_func, nargs, frame, dropvalues, methodcall=False): # methodcall is only used for better error messages in argument.py from pypy.interpreter.function import Function, Method, is_builtin_code if frame.get_is_being_profiled() and is_builtin_code(w_func): # XXX: this code is copied&pasted :-( from the slow path below # call_valuestack(). args = frame.make_arguments(nargs) frame.dropvalues(dropvalues) return self.call_args_and_c_profile(frame, w_func, args) if not self.config.objspace.disable_call_speedhacks: # start of hack for performance if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: w_func = w_func.w_function # reuse callable stack place for w_inst frame.settopvalue(w_inst, nargs) nargs += 1 methodcall = True elif nargs > 0 and ( self.abstract_isinstance_w(frame.peekvalue(nargs-1), # :-( w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): return w_func.funccall_valuestack( > nargs, frame, methodcall=methodcall, dropvalues=dropvalues) interpreter\baseobjspace.py:1243: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_FFIFunct...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1844]', line 1> at line 3 dropvalues = 5, methodcall = False def funccall_valuestack(self, nargs, frame, dropvalues, methodcall=False): # speed hack # methodcall is only for better error messages from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit # if (jit.we_are_jitted() and code is self.space._code_of_sys_exc_info and nargs == 0): frame.dropvalues(dropvalues) from pypy.module.sys.vm import exc_info_direct return exc_info_direct(self.space, frame) # fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: f_0 = frame.peekvalue(0) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, f_0) elif nargs == 2: f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, f_1, f_0) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) frame.dropvalues(dropvalues) return code.fastcall_3(self.space, self, f_2, f_1, f_0) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) f_3 = frame.peekvalue(3) frame.dropvalues(dropvalues) return code.fastcall_4(self.space, self, f_3, f_2, f_1, f_0) elif (nargs | Code.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) return self._flat_pycall(code, nargs, frame, dropvalues) elif fast_natural_arity & Code.FLATPYCALL: natural_arity = fast_natural_arity & 0xff if natural_arity > nargs >= natural_arity - len(self.defs_w): assert isinstance(code, PyCode) return self._flat_pycall_defaults(code, nargs, frame, natural_arity - nargs, dropvalues) elif fast_natural_arity == Code.PASSTHROUGHARGS1 and nargs >= 1: assert isinstance(code, gateway.BuiltinCodePassThroughArguments1) w_obj = frame.peekvalue(nargs-1) args = frame.make_arguments(nargs-1) frame.dropvalues(dropvalues) return code.funcrun_obj(self, w_obj, args) args = frame.make_arguments(nargs, methodcall=methodcall) frame.dropvalues(dropvalues) > return self.call_args(args) interpreter\function.py:190: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('void f(void);'), W_BytesObject('test_FFIFunctionWrapper'), W_BytesObject('void f(void) { }')]) def call_args(self, args): # delegate activation to code > w_res = self.getcode().funcrun(self, args) interpreter\function.py:68: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('void f(void);'), W_BytesObject('test_FFIFunctionWrapper'), W_BytesObject('void f(void) { }')]) def funcrun(self, func, args): > return BuiltinCode.funcrun_obj(self, func, None, args) interpreter\gateway.py:781: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('void f(void);'), W_BytesObject('test_FFIFunctionWrapper'), W_BytesObject('void f(void) { }')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: w_result = activation._run(space, scope_w) except DescrMismatch: if w_obj is not None: args = args.prepend(w_obj) return self._type_unwrap_mismatch(space, args) except Exception as e: > self.handle_exception(space, e) interpreter\gateway.py:795: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> space = StdObjSpace e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def handle_exception(self, space, e): try: if not we_are_translated(): raise raise e except OperationError: raise except Exception as e: # general fall-back from pypy.interpreter import error > raise error.get_converted_unexpected_exception(space, e) interpreter\gateway.py:819: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('void f(void);'), W_BytesObject('test_FFIFunctionWrapper'), W_BytesObject('void f(void) { }')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: > w_result = activation._run(space, scope_w) interpreter\gateway.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinActivation_UwS_ObjSpace_text_text_text_W_Root_W_Root_W_Root_int_W_Root object at 0x000002791c13af38> space = StdObjSpace scope_w = [W_BytesObject('void f(void);'), W_BytesObject('test_FFIFunctionWrapper'), W_BytesObject('void f(void) { }'), None, None, None, ...] def _run(self, space, scope_w): > return self.behavior(space, space.text_w(scope_w[0]), space.text_w(scope_w[1]), space.text_w(scope_w[2]), scope_w[3], scope_w[4], scope_w[5], space.gateway_int_w(scope_w[6]), scope_w[7]) <3152-codegen d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\rpython\tool\sourcetools.py:200>:3: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace, cdef = 'void f(void);' module_name = '_CFFI_test_FFIFunctionWrapper', source = 'void f(void) { }' w_includes = None, w_extra_source = None, w_min_version = None, packed = 0 w_extra_compile_args = None @unwrap_spec(cdef='text', module_name='text', source='text', packed=int) def prepare(space, cdef, module_name, source, w_includes=None, w_extra_source=None, w_min_version=None, packed=False, w_extra_compile_args=None): try: import cffi from cffi import FFI # <== the system one, which from cffi import recompiler # needs to be at least cffi 1.0.4 from cffi import ffiplatform except ImportError: pytest.skip("system cffi module not found or older than 1.0.0") if w_min_version is None: min_version = (1, 4, 0) else: min_version = tuple(space.unwrap(w_min_version)) if cffi.__version_info__ < min_version: pytest.skip("system cffi module needs to be at least %s, got %s" % ( min_version, cffi.__version_info__)) space.appexec([], """(): import _cffi_backend # force it to be initialized """) includes = [] if w_includes: includes += space.unpackiterable(w_includes) assert module_name.startswith('test_') module_name = '_CFFI_' + module_name rdir = udir.ensure('recompiler', dir=1) rdir.join('Python.h').write( '#include <stdio.h>\n' '#define PYPY_VERSION XX\n' '#define PyMODINIT_FUNC /*exported*/ void\n' ) path = module_name.replace('.', os.sep) if '.' in module_name: subrdir = rdir.join(module_name[:module_name.index('.')]) os.mkdir(str(subrdir)) else: subrdir = rdir c_file = str(rdir.join('%s.c' % path)) ffi = FFI() for include_ffi_object in includes: ffi.include(include_ffi_object._test_recompiler_source_ffi) ffi.cdef(cdef, packed=packed) ffi.set_source(module_name, source) ffi.emit_c_code(c_file) base_module_name = module_name.split('.')[-1] sources = [] if w_extra_source is not None: sources.append(space.str_w(w_extra_source)) kwargs = {} # GCC 14 promotes -Wincompatible-pointer-types from a warning to an error # by default, which breaks cffi's intentionally-mismatched field-check # probes (e.g. test_misdeclared_field_1). Keep it a warning so the module # compiles and cffi's runtime checks can run. extra = ['-Wno-error=incompatible-pointer-types'] if w_extra_compile_args is not None: extra = extra + space.unwrap(w_extra_compile_args) kwargs['extra_compile_args'] = extra ext = ffiplatform.get_extension(c_file, module_name, include_dirs=[str(rdir)], export_symbols=['_cffi_pypyinit_' + base_module_name], sources=sources, **kwargs) > ffiplatform.compile(str(rdir), ext) module\_cffi_backend\test\test_recompiler.py:86: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x000002792b25d660> compiler_verbose = 0, debug = None def compile(tmpdir, ext, compiler_verbose=0, debug=None): """Compile a C extension module using distutils.""" saved_environ = os.environ.copy() try: > outputfilename = _build(tmpdir, ext, compiler_verbose, debug) d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x000002792b25d660> compiler_verbose = 0, debug = 0 def _build(tmpdir, ext, compiler_verbose=0, debug=None): # XXX compact but horrible :-( from cffi._shimmed_dist_utils import Distribution, CompileError, LinkError, set_threshold, set_verbosity dist = Distribution({'ext_modules': [ext]}) dist.parse_config_files() options = dist.get_option_dict('build_ext') if debug is None: debug = sys.flags.debug options['debug'] = ('ffiplatform', debug) options['force'] = ('ffiplatform', True) options['build_lib'] = ('ffiplatform', tmpdir) options['build_temp'] = ('ffiplatform', tmpdir) # try: old_level = set_threshold(0) or 0 try: set_verbosity(compiler_verbose) dist.run_command('build_ext') cmd_obj = dist.get_command_obj('build_ext') [soname] = cmd_obj.get_outputs() finally: set_threshold(old_level) except (CompileError, LinkError) as e: > raise VerificationError('%s: %s' % (e.__class__.__name__, e)) E VerificationError: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2 d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:54: VerificationError ---------------------------- Captured stdout call ----------------------------- generating d:\systemtemp\pytest\usession-main-595\recompiler\_CFFI_test_FFIFunctionWrapper.c ---------------------------- Captured stderr call ----------------------------- cl : Command line error D8021 : invalid numeric argument '/Wno-error=incompatible-pointer-types' _______________ AppTestRecompiler.test_typedef_array_dotdotdot ________________ self = <CallInfo when='call' exception: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2> func = <function <lambda> at 0x0000027927cd9970>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ..\_pytest\runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ..\_pytest\runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_typedef_array_dotdotdot'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_typedef_array_dotdotdot'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ..\_pytest\vendored_packages\pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00000279153616a8> hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_typedef_array_dotdotdot'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_typedef_array_dotdotdot'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ..\_pytest\vendored_packages\pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_typedef_array_dotdotdot'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_typedef_array_dotdotdot'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ..\_pytest\vendored_packages\pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_typedef_array_dotdotdot'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x0000027929427268> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i..._dotdotdot'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027924e75f20> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027924e75f20> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i..._dotdotdot'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_typedef_array_dotdotdot'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x0000027929427218> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i..._dotdotdot'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027924e75ee0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027924e75ee0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i..._dotdotdot'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_typedef_array_dotdotdot'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ..\_pytest\vendored_packages\pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_typedef_array_dotdotdot'> def pytest_runtest_call(item): try: > item.runtest() ..\_pytest\runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_typedef_array_dotdotdot'> def runtest(self): target = self.obj if self.config.option.runappdirect: return target() space = target.im_self.space filename = self._getdynfilename(target) func = app2interp_temp(target.im_func, filename=filename) w_instance = self.parent.w_instance > self.execute_appex(space, func, space, w_instance) tool\pytest\apptest.py:89: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_typedef_array_dotdotdot'>, space = StdObjSpace target = <function test_typedef_array_dotdotdot at 0x0000027927cd99e8> args = (StdObjSpace, <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>) def execute_appex(self, space, target, *args): self.space = space try: > target(*args) tool\pytest\apptest.py:30: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) w_func = <Function test_typedef_array_dotdotdot> args = <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8> def appcaller(space, *args_w): if not isinstance(space, ObjSpace): raise TypeError("first argument must be a space instance.") # the last argument can be an Arguments w_func = self.wget(space, name) if not args_w: return space.call_function(w_func) else: args = args_w[-1] assert args is not None if not isinstance(args, Arguments): > return space.call_function(w_func, *args_w) interpreter\gateway.py:1227: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <Function test_typedef_array_dotdotdot> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) nargs = 1, Function = <class 'pypy.interpreter.function.Function'> Method = <class 'pypy.interpreter.function.Method'> def call_function(self, w_func, *args_w): nargs = len(args_w) # used for pruning funccall versions if not self.config.objspace.disable_call_speedhacks and nargs < 5: # start of hack for performance from pypy.interpreter.function import Function, Method if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: if nargs < 4: func = w_func.w_function if isinstance(func, Function): return func.funccall(w_inst, *args_w) elif args_w and ( self.abstract_isinstance_w(args_w[0], w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): > return w_func.funccall(*args_w) interpreter\baseobjspace.py:1210: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <Function test_typedef_array_dotdotdot> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) gateway = <module 'pypy.interpreter.gateway' from 'd:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\interpreter\\gateway.pyc'> PyCode = <class 'pypy.interpreter.pycode.PyCode'> code = <code object test_typedef_array_dotdotdot, file '[d:\pypy_stuff\buildbot64\sla...-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:1912]', line 1> def funccall(self, *args_w): # speed hack from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit nargs = len(args_w) fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, args_w[0]) elif nargs == 2: assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, args_w[0], args_w[1]) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) return code.fastcall_3(self.space, self, args_w[0], args_w[1], args_w[2]) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) return code.fastcall_4(self.space, self, args_w[0], args_w[1], args_w[2], args_w[3]) elif (nargs | PyCode.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) if nargs < 5: new_frame = self.space.createframe(code, self.w_func_globals, self) for i in funccallunrolling: if i < nargs: new_frame.locals_cells_stack_w[i] = args_w[i] > return new_frame.run() interpreter\function.py:118: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_typedef_...ld\pypy\module\_cffi_backend\test\test_recompiler.py:1912]', line 1> at line 13 def run(self): """Start this frame's execution.""" if self.getcode().co_flags & pycode.CO_GENERATOR: from pypy.interpreter.generator import GeneratorIterator return GeneratorIterator(self) else: > return self.execute_frame() interpreter\pyframe.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_typedef_...ld\pypy\module\_cffi_backend\test\test_recompiler.py:1912]', line 1> at line 13 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, executioncontext) except OperationError: raise except Exception as e: # general fall-back > raise self._convert_unexpected_exception(e) interpreter\pyframe.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_typedef_...ld\pypy\module\_cffi_backend\test\test_recompiler.py:1912]', line 1> at line 13 e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def _convert_unexpected_exception(self, e): from pypy.interpreter import error > operr = error.get_converted_unexpected_exception(self.space, e) interpreter\pyframe.py:943: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_typedef_...ld\pypy\module\_cffi_backend\test\test_recompiler.py:1912]', line 1> at line 13 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, > executioncontext) interpreter\pyframe.py:286: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_typedef_...ld\pypy\module\_cffi_backend\test\test_recompiler.py:1912]', line 1> at line 13 pycode = <code object test_typedef_array_dotdotdot, file '[d:\pypy_stuff\buildbot64\sla...-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:1912]', line 1> next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def dispatch(self, pycode, next_instr, ec): # For the sequel, force 'next_instr' to be unsigned for performance next_instr = r_uint(next_instr) co_code = pycode.co_code try: while True: > next_instr = self.handle_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:64: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_typedef_...ld\pypy\module\_cffi_backend\test\test_recompiler.py:1912]', line 1> at line 13 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00d\x04\x00d\x05\x00\xca\x03\x01\\\x02\x00}\x01\x00}\x02\x00\xcc(\x00|\...19\xca\x01\x00d\x12\x00|\x01\x00\xc9\x01\x00d\x08\x00\xca\x01\x00\x14k\x02\x00s\xbb\x01t\x02\x00\x82\x01\x00d\x00\x00S' next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def handle_bytecode(self, co_code, next_instr, ec): try: > next_instr = self.dispatch_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:71: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_typedef_...ld\pypy\module\_cffi_backend\test\test_recompiler.py:1912]', line 1> at line 13 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00d\x04\x00d\x05\x00\xca\x03\x01\\\x02\x00}\x01\x00}\x02\x00\xcc(\x00|\...19\xca\x01\x00d\x12\x00|\x01\x00\xc9\x01\x00d\x08\x00\xca\x01\x00\x14k\x02\x00s\xbb\x01t\x02\x00\x82\x01\x00d\x00\x00S' next_instr = 24L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> @jit.unroll_safe def dispatch_bytecode(self, co_code, next_instr, ec): while True: self.last_instr = intmask(next_instr) if jit.we_are_jitted(): if self.debugdata: ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) else: # Only reload next_instr from last_instr when something that # can modify it actually ran (trace function or action # dispatcher). In the common case (no trace, positive ticker) # next_instr is unchanged and the round-trip is skipped. _d = self.debugdata if ec.space.reverse_debugging or ( _d is not None and _d.w_f_trace is not None) or ( not we_are_translated() and 'bytecode_only_trace' in ec.__dict__): ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) actionflag = ec.space.actionflag if actionflag.decrement_ticker(TICK_COUNTER_STEP) < 0: actionflag.action_dispatcher(ec, self) next_instr = r_uint(self.last_instr) opcode = ord(co_code[next_instr]) next_instr += 1 if opcode >= HAVE_ARGUMENT: lo = ord(co_code[next_instr]) hi = ord(co_code[next_instr+1]) next_instr += 2 oparg = (hi * 256) | lo else: oparg = 0 # note: the structure of the code here is such that it makes # (after translation) a big "if/elif" chain, which is then # turned into a switch(). while opcode == opcodedesc.EXTENDED_ARG.index: opcode = ord(co_code[next_instr]) if opcode < HAVE_ARGUMENT: raise BytecodeCorruption lo = ord(co_code[next_instr+1]) hi = ord(co_code[next_instr+2]) next_instr += 3 oparg = (oparg * 65536) | (hi * 256) | lo if opcode == opcodedesc.RETURN_VALUE.index: if not self.blockstack_non_empty(): self.frame_finished_execution = True # for generators raise Return w_returnvalue = self.popvalue() block = self.unrollstack(SReturnValue.kind) if block is None: self.pushvalue(w_returnvalue) raise Return else: unroller = SReturnValue(w_returnvalue) next_instr = block.handle(self, unroller) return next_instr # now inside a 'finally' block elif opcode == opcodedesc.END_FINALLY.index: unroller = self.end_finally() if isinstance(unroller, SuspendedUnroller): # go on unrolling the stack block = self.unrollstack(unroller.kind) if block is None: w_result = unroller.nomoreblocks() self.pushvalue(w_result) raise Return else: next_instr = block.handle(self, unroller) return next_instr elif opcode == opcodedesc.JUMP_ABSOLUTE.index: return self.jump_absolute(oparg, ec) elif opcode == opcodedesc.BREAK_LOOP.index: next_instr = self.BREAK_LOOP(oparg, next_instr) elif opcode == opcodedesc.CONTINUE_LOOP.index: return self.CONTINUE_LOOP(oparg, next_instr) elif opcode == opcodedesc.FOR_ITER.index: next_instr = self.FOR_ITER(oparg, next_instr) elif opcode == opcodedesc.JUMP_FORWARD.index: next_instr = self.JUMP_FORWARD(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_FALSE_OR_POP.index: next_instr = self.JUMP_IF_FALSE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_NOT_DEBUG.index: next_instr = self.JUMP_IF_NOT_DEBUG(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_TRUE_OR_POP.index: next_instr = self.JUMP_IF_TRUE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_FALSE.index: next_instr = self.POP_JUMP_IF_FALSE(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_TRUE.index: next_instr = self.POP_JUMP_IF_TRUE(oparg, next_instr) elif opcode == opcodedesc.BINARY_ADD.index: self.BINARY_ADD(oparg, next_instr) elif opcode == opcodedesc.BINARY_AND.index: self.BINARY_AND(oparg, next_instr) elif opcode == opcodedesc.BINARY_DIVIDE.index: self.BINARY_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_FLOOR_DIVIDE.index: self.BINARY_FLOOR_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_LSHIFT.index: self.BINARY_LSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_MODULO.index: self.BINARY_MODULO(oparg, next_instr) elif opcode == opcodedesc.BINARY_MULTIPLY.index: self.BINARY_MULTIPLY(oparg, next_instr) elif opcode == opcodedesc.BINARY_OR.index: self.BINARY_OR(oparg, next_instr) elif opcode == opcodedesc.BINARY_POWER.index: self.BINARY_POWER(oparg, next_instr) elif opcode == opcodedesc.BINARY_RSHIFT.index: self.BINARY_RSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBSCR.index: self.BINARY_SUBSCR(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBTRACT.index: self.BINARY_SUBTRACT(oparg, next_instr) elif opcode == opcodedesc.BINARY_TRUE_DIVIDE.index: self.BINARY_TRUE_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_XOR.index: self.BINARY_XOR(oparg, next_instr) elif opcode == opcodedesc.BUILD_CLASS.index: self.BUILD_CLASS(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST.index: self.BUILD_LIST(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST_FROM_ARG.index: self.BUILD_LIST_FROM_ARG(oparg, next_instr) elif opcode == opcodedesc.BUILD_MAP.index: self.BUILD_MAP(oparg, next_instr) elif opcode == opcodedesc.BUILD_SET.index: self.BUILD_SET(oparg, next_instr) elif opcode == opcodedesc.BUILD_SLICE.index: self.BUILD_SLICE(oparg, next_instr) elif opcode == opcodedesc.BUILD_TUPLE.index: self.BUILD_TUPLE(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION.index: self.CALL_FUNCTION(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_KW.index: self.CALL_FUNCTION_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR.index: self.CALL_FUNCTION_VAR(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR_KW.index: self.CALL_FUNCTION_VAR_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_METHOD.index: > self.CALL_METHOD(oparg, next_instr) interpreter\pyopcode.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ f = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_typedef_...ld\pypy\module\_cffi_backend\test\test_recompiler.py:1912]', line 1> at line 13 oparg = 259, ignored = (24L,), n_args = 3, n_kwargs = -1, w_self = None @jit.unroll_safe def CALL_METHOD(f, oparg, *ignored): # opargs contains the arg, and kwarg count, excluding the implicit 'self' n_args = oparg & 0xff n_kwargs = (oparg >> 8) & 0xff w_self = f.peekvalue_maybe_none(n_args + (2 * n_kwargs)) n = n_args + (w_self is not None) if not n_kwargs: w_callable = f.peekvalue(n_args + (2 * n_kwargs) + 1) w_result = f.space.call_valuestack( w_callable, n, f, methodcall=w_self is not None, dropvalues=n_args + 2) else: keywords = [None] * n_kwargs keywords_w = [None] * n_kwargs while True: n_kwargs -= 1 if n_kwargs < 0: break w_value = f.popvalue() w_key = f.popvalue() key = f.space.text_w(w_key) keywords[n_kwargs] = key keywords_w[n_kwargs] = w_value arguments = f.popvalues(n) # includes w_self if it is not None args = f.argument_factory( arguments, keywords, keywords_w, None, None, methodcall=w_self is not None) if w_self is None: f.popvalue_maybe_none() # removes w_self, which is None w_callable = f.popvalue() if f.get_is_being_profiled() and function.is_builtin_code(w_callable): w_result = f.space.call_args_and_c_profile(f, w_callable, args) else: > w_result = f.space.call_args(w_callable, args) objspace\std\callmethod.py:120: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace, w_obj = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('\n typedef int foo_t[...], bar_t[...];\n ...min_version'], [W_TupleObject(W_IntObject(1), W_IntObject(8), W_IntObject(4))]) def call_args(space, w_obj, args): # two special cases for performance if isinstance(w_obj, Function): > return w_obj.call_args(args) objspace\descroperation.py:186: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('\n typedef int foo_t[...], bar_t[...];\n ...min_version'], [W_TupleObject(W_IntObject(1), W_IntObject(8), W_IntObject(4))]) def call_args(self, args): # delegate activation to code > w_res = self.getcode().funcrun(self, args) interpreter\function.py:68: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('\n typedef int foo_t[...], bar_t[...];\n ...min_version'], [W_TupleObject(W_IntObject(1), W_IntObject(8), W_IntObject(4))]) def funcrun(self, func, args): > return BuiltinCode.funcrun_obj(self, func, None, args) interpreter\gateway.py:781: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('\n typedef int foo_t[...], bar_t[...];\n ...min_version'], [W_TupleObject(W_IntObject(1), W_IntObject(8), W_IntObject(4))]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: w_result = activation._run(space, scope_w) except DescrMismatch: if w_obj is not None: args = args.prepend(w_obj) return self._type_unwrap_mismatch(space, args) except Exception as e: > self.handle_exception(space, e) interpreter\gateway.py:795: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> space = StdObjSpace e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def handle_exception(self, space, e): try: if not we_are_translated(): raise raise e except OperationError: raise except Exception as e: # general fall-back from pypy.interpreter import error > raise error.get_converted_unexpected_exception(space, e) interpreter\gateway.py:819: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('\n typedef int foo_t[...], bar_t[...];\n ...min_version'], [W_TupleObject(W_IntObject(1), W_IntObject(8), W_IntObject(4))]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: > w_result = activation._run(space, scope_w) interpreter\gateway.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinActivation_UwS_ObjSpace_text_text_text_W_Root_W_Root_W_Root_int_W_Root object at 0x000002791c13af38> space = StdObjSpace scope_w = [W_BytesObject('\n typedef int foo_t[...], bar_t[...];\n ...ef int mat_t[...][...];\n ... typedef int vmat_t[][8];\n '), None, None, W_TupleObject(W_IntObject(1), W_IntObject(8), W_IntObject(4)), ...] def _run(self, space, scope_w): > return self.behavior(space, space.text_w(scope_w[0]), space.text_w(scope_w[1]), space.text_w(scope_w[2]), scope_w[3], scope_w[4], scope_w[5], space.gateway_int_w(scope_w[6]), scope_w[7]) <3152-codegen d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\rpython\tool\sourcetools.py:200>:3: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace cdef = '\n typedef int foo_t[...], bar_t[...];\n int gv[...];\n typedef int mat_t[...][...];\n typedef int vmat_t[][...];\n ' module_name = '_CFFI_test_typedef_array_dotdotdot' source = '\n typedef int foo_t[50], bar_t[50];\n int gv[23];\n typedef int mat_t[6][7];\n typedef int vmat_t[][8];\n ' w_includes = None, w_extra_source = None w_min_version = W_TupleObject(W_IntObject(1), W_IntObject(8), W_IntObject(4)) packed = 0, w_extra_compile_args = None @unwrap_spec(cdef='text', module_name='text', source='text', packed=int) def prepare(space, cdef, module_name, source, w_includes=None, w_extra_source=None, w_min_version=None, packed=False, w_extra_compile_args=None): try: import cffi from cffi import FFI # <== the system one, which from cffi import recompiler # needs to be at least cffi 1.0.4 from cffi import ffiplatform except ImportError: pytest.skip("system cffi module not found or older than 1.0.0") if w_min_version is None: min_version = (1, 4, 0) else: min_version = tuple(space.unwrap(w_min_version)) if cffi.__version_info__ < min_version: pytest.skip("system cffi module needs to be at least %s, got %s" % ( min_version, cffi.__version_info__)) space.appexec([], """(): import _cffi_backend # force it to be initialized """) includes = [] if w_includes: includes += space.unpackiterable(w_includes) assert module_name.startswith('test_') module_name = '_CFFI_' + module_name rdir = udir.ensure('recompiler', dir=1) rdir.join('Python.h').write( '#include <stdio.h>\n' '#define PYPY_VERSION XX\n' '#define PyMODINIT_FUNC /*exported*/ void\n' ) path = module_name.replace('.', os.sep) if '.' in module_name: subrdir = rdir.join(module_name[:module_name.index('.')]) os.mkdir(str(subrdir)) else: subrdir = rdir c_file = str(rdir.join('%s.c' % path)) ffi = FFI() for include_ffi_object in includes: ffi.include(include_ffi_object._test_recompiler_source_ffi) ffi.cdef(cdef, packed=packed) ffi.set_source(module_name, source) ffi.emit_c_code(c_file) base_module_name = module_name.split('.')[-1] sources = [] if w_extra_source is not None: sources.append(space.str_w(w_extra_source)) kwargs = {} # GCC 14 promotes -Wincompatible-pointer-types from a warning to an error # by default, which breaks cffi's intentionally-mismatched field-check # probes (e.g. test_misdeclared_field_1). Keep it a warning so the module # compiles and cffi's runtime checks can run. extra = ['-Wno-error=incompatible-pointer-types'] if w_extra_compile_args is not None: extra = extra + space.unwrap(w_extra_compile_args) kwargs['extra_compile_args'] = extra ext = ffiplatform.get_extension(c_file, module_name, include_dirs=[str(rdir)], export_symbols=['_cffi_pypyinit_' + base_module_name], sources=sources, **kwargs) > ffiplatform.compile(str(rdir), ext) module\_cffi_backend\test\test_recompiler.py:86: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x0000027924ea5fa0> compiler_verbose = 0, debug = None def compile(tmpdir, ext, compiler_verbose=0, debug=None): """Compile a C extension module using distutils.""" saved_environ = os.environ.copy() try: > outputfilename = _build(tmpdir, ext, compiler_verbose, debug) d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x0000027924ea5fa0> compiler_verbose = 0, debug = 0 def _build(tmpdir, ext, compiler_verbose=0, debug=None): # XXX compact but horrible :-( from cffi._shimmed_dist_utils import Distribution, CompileError, LinkError, set_threshold, set_verbosity dist = Distribution({'ext_modules': [ext]}) dist.parse_config_files() options = dist.get_option_dict('build_ext') if debug is None: debug = sys.flags.debug options['debug'] = ('ffiplatform', debug) options['force'] = ('ffiplatform', True) options['build_lib'] = ('ffiplatform', tmpdir) options['build_temp'] = ('ffiplatform', tmpdir) # try: old_level = set_threshold(0) or 0 try: set_verbosity(compiler_verbose) dist.run_command('build_ext') cmd_obj = dist.get_command_obj('build_ext') [soname] = cmd_obj.get_outputs() finally: set_threshold(old_level) except (CompileError, LinkError) as e: > raise VerificationError('%s: %s' % (e.__class__.__name__, e)) E VerificationError: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2 d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:54: VerificationError ---------------------------- Captured stdout call ----------------------------- generating d:\systemtemp\pytest\usession-main-595\recompiler\_CFFI_test_typedef_array_dotdotdot.c ---------------------------- Captured stderr call ----------------------------- d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\cparser.py:165: UserWarning: Global variable 'gv' in cdef(): for consistency with C it should have a storage class specifier (usually 'extern') "(usually 'extern')" % (decl.name,)) cl : Command line error D8021 : invalid numeric argument '/Wno-error=incompatible-pointer-types' ______________ AppTestRecompiler.test_call_with_custom_field_pos ______________ self = <CallInfo when='call' exception: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2> func = <function <lambda> at 0x0000027929dd9718>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ..\_pytest\runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ..\_pytest\runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_call_with_custom_field_pos'>, '...lticall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_call_with_custom_field_pos'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ..\_pytest\vendored_packages\pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00000279153616a8> hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_call_with_custom_field_pos'>, '...lticall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_call_with_custom_field_pos'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ..\_pytest\vendored_packages\pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_call_with_custom_field_pos'>, '...lticall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_call_with_custom_field_pos'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ..\_pytest\vendored_packages\pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_call_with_custom_field_pos'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00000279190af718> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i..._field_pos'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00000279271e3420> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00000279271e3420> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i..._field_pos'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_call_with_custom_field_pos'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00000279190af6c8> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i..._field_pos'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00000279271e33e0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00000279271e33e0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i..._field_pos'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_call_with_custom_field_pos'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ..\_pytest\vendored_packages\pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_call_with_custom_field_pos'> def pytest_runtest_call(item): try: > item.runtest() ..\_pytest\runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_call_with_custom_field_pos'> def runtest(self): target = self.obj if self.config.option.runappdirect: return target() space = target.im_self.space filename = self._getdynfilename(target) func = app2interp_temp(target.im_func, filename=filename) w_instance = self.parent.w_instance > self.execute_appex(space, func, space, w_instance) tool\pytest\apptest.py:89: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_call_with_custom_field_pos'>, space = StdObjSpace target = <function test_call_with_custom_field_pos at 0x0000027929dd9790> args = (StdObjSpace, <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>) def execute_appex(self, space, target, *args): self.space = space try: > target(*args) tool\pytest\apptest.py:30: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) w_func = <Function test_call_with_custom_field_pos> args = <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8> def appcaller(space, *args_w): if not isinstance(space, ObjSpace): raise TypeError("first argument must be a space instance.") # the last argument can be an Arguments w_func = self.wget(space, name) if not args_w: return space.call_function(w_func) else: args = args_w[-1] assert args is not None if not isinstance(args, Arguments): > return space.call_function(w_func, *args_w) interpreter\gateway.py:1227: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <Function test_call_with_custom_field_pos> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) nargs = 1, Function = <class 'pypy.interpreter.function.Function'> Method = <class 'pypy.interpreter.function.Method'> def call_function(self, w_func, *args_w): nargs = len(args_w) # used for pruning funccall versions if not self.config.objspace.disable_call_speedhacks and nargs < 5: # start of hack for performance from pypy.interpreter.function import Function, Method if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: if nargs < 4: func = w_func.w_function if isinstance(func, Function): return func.funccall(w_inst, *args_w) elif args_w and ( self.abstract_isinstance_w(args_w[0], w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): > return w_func.funccall(*args_w) interpreter\baseobjspace.py:1210: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <Function test_call_with_custom_field_pos> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) gateway = <module 'pypy.interpreter.gateway' from 'd:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\interpreter\\gateway.pyc'> PyCode = <class 'pypy.interpreter.pycode.PyCode'> code = <code object test_call_with_custom_field_pos, file '[d:\pypy_stuff\buildbot64\...-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:1937]', line 1> def funccall(self, *args_w): # speed hack from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit nargs = len(args_w) fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, args_w[0]) elif nargs == 2: assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, args_w[0], args_w[1]) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) return code.fastcall_3(self.space, self, args_w[0], args_w[1], args_w[2]) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) return code.fastcall_4(self.space, self, args_w[0], args_w[1], args_w[2], args_w[3]) elif (nargs | PyCode.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) if nargs < 5: new_frame = self.space.createframe(code, self.w_func_globals, self) for i in funccallunrolling: if i < nargs: new_frame.locals_cells_stack_w[i] = args_w[i] > return new_frame.run() interpreter\function.py:118: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_call_wit...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1937]', line 1> at line 6 def run(self): """Start this frame's execution.""" if self.getcode().co_flags & pycode.CO_GENERATOR: from pypy.interpreter.generator import GeneratorIterator return GeneratorIterator(self) else: > return self.execute_frame() interpreter\pyframe.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_call_wit...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1937]', line 1> at line 6 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, executioncontext) except OperationError: raise except Exception as e: # general fall-back > raise self._convert_unexpected_exception(e) interpreter\pyframe.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_call_wit...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1937]', line 1> at line 6 e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def _convert_unexpected_exception(self, e): from pypy.interpreter import error > operr = error.get_converted_unexpected_exception(self.space, e) interpreter\pyframe.py:943: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_call_wit...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1937]', line 1> at line 6 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, > executioncontext) interpreter\pyframe.py:286: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_call_wit...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1937]', line 1> at line 6 pycode = <code object test_call_with_custom_field_pos, file '[d:\pypy_stuff\buildbot64\...-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:1937]', line 1> next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def dispatch(self, pycode, next_instr, ec): # For the sequel, force 'next_instr' to be unsigned for performance next_instr = r_uint(next_instr) co_code = pycode.co_code try: while True: > next_instr = self.handle_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:64: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_call_wit...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1937]', line 1> at line 6 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00\xcc\x1b\x00|\x02\x00\xc9\x01...00t\x07\x00|\x03\x00j\x08\x00\x83\x01\x00d\x06\x00k\x02\x00sl\x00t\x03\x00\x82\x01\x00d\x00\x00S\x82\x01\x00d\x00\x00S' next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def handle_bytecode(self, co_code, next_instr, ec): try: > next_instr = self.dispatch_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:71: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_call_wit...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1937]', line 1> at line 6 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00\xcc\x1b\x00|\x02\x00\xc9\x01...00t\x07\x00|\x03\x00j\x08\x00\x83\x01\x00d\x06\x00k\x02\x00sl\x00t\x03\x00\x82\x01\x00d\x00\x00S\x82\x01\x00d\x00\x00S' next_instr = 18L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> @jit.unroll_safe def dispatch_bytecode(self, co_code, next_instr, ec): while True: self.last_instr = intmask(next_instr) if jit.we_are_jitted(): if self.debugdata: ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) else: # Only reload next_instr from last_instr when something that # can modify it actually ran (trace function or action # dispatcher). In the common case (no trace, positive ticker) # next_instr is unchanged and the round-trip is skipped. _d = self.debugdata if ec.space.reverse_debugging or ( _d is not None and _d.w_f_trace is not None) or ( not we_are_translated() and 'bytecode_only_trace' in ec.__dict__): ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) actionflag = ec.space.actionflag if actionflag.decrement_ticker(TICK_COUNTER_STEP) < 0: actionflag.action_dispatcher(ec, self) next_instr = r_uint(self.last_instr) opcode = ord(co_code[next_instr]) next_instr += 1 if opcode >= HAVE_ARGUMENT: lo = ord(co_code[next_instr]) hi = ord(co_code[next_instr+1]) next_instr += 2 oparg = (hi * 256) | lo else: oparg = 0 # note: the structure of the code here is such that it makes # (after translation) a big "if/elif" chain, which is then # turned into a switch(). while opcode == opcodedesc.EXTENDED_ARG.index: opcode = ord(co_code[next_instr]) if opcode < HAVE_ARGUMENT: raise BytecodeCorruption lo = ord(co_code[next_instr+1]) hi = ord(co_code[next_instr+2]) next_instr += 3 oparg = (oparg * 65536) | (hi * 256) | lo if opcode == opcodedesc.RETURN_VALUE.index: if not self.blockstack_non_empty(): self.frame_finished_execution = True # for generators raise Return w_returnvalue = self.popvalue() block = self.unrollstack(SReturnValue.kind) if block is None: self.pushvalue(w_returnvalue) raise Return else: unroller = SReturnValue(w_returnvalue) next_instr = block.handle(self, unroller) return next_instr # now inside a 'finally' block elif opcode == opcodedesc.END_FINALLY.index: unroller = self.end_finally() if isinstance(unroller, SuspendedUnroller): # go on unrolling the stack block = self.unrollstack(unroller.kind) if block is None: w_result = unroller.nomoreblocks() self.pushvalue(w_result) raise Return else: next_instr = block.handle(self, unroller) return next_instr elif opcode == opcodedesc.JUMP_ABSOLUTE.index: return self.jump_absolute(oparg, ec) elif opcode == opcodedesc.BREAK_LOOP.index: next_instr = self.BREAK_LOOP(oparg, next_instr) elif opcode == opcodedesc.CONTINUE_LOOP.index: return self.CONTINUE_LOOP(oparg, next_instr) elif opcode == opcodedesc.FOR_ITER.index: next_instr = self.FOR_ITER(oparg, next_instr) elif opcode == opcodedesc.JUMP_FORWARD.index: next_instr = self.JUMP_FORWARD(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_FALSE_OR_POP.index: next_instr = self.JUMP_IF_FALSE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_NOT_DEBUG.index: next_instr = self.JUMP_IF_NOT_DEBUG(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_TRUE_OR_POP.index: next_instr = self.JUMP_IF_TRUE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_FALSE.index: next_instr = self.POP_JUMP_IF_FALSE(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_TRUE.index: next_instr = self.POP_JUMP_IF_TRUE(oparg, next_instr) elif opcode == opcodedesc.BINARY_ADD.index: self.BINARY_ADD(oparg, next_instr) elif opcode == opcodedesc.BINARY_AND.index: self.BINARY_AND(oparg, next_instr) elif opcode == opcodedesc.BINARY_DIVIDE.index: self.BINARY_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_FLOOR_DIVIDE.index: self.BINARY_FLOOR_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_LSHIFT.index: self.BINARY_LSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_MODULO.index: self.BINARY_MODULO(oparg, next_instr) elif opcode == opcodedesc.BINARY_MULTIPLY.index: self.BINARY_MULTIPLY(oparg, next_instr) elif opcode == opcodedesc.BINARY_OR.index: self.BINARY_OR(oparg, next_instr) elif opcode == opcodedesc.BINARY_POWER.index: self.BINARY_POWER(oparg, next_instr) elif opcode == opcodedesc.BINARY_RSHIFT.index: self.BINARY_RSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBSCR.index: self.BINARY_SUBSCR(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBTRACT.index: self.BINARY_SUBTRACT(oparg, next_instr) elif opcode == opcodedesc.BINARY_TRUE_DIVIDE.index: self.BINARY_TRUE_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_XOR.index: self.BINARY_XOR(oparg, next_instr) elif opcode == opcodedesc.BUILD_CLASS.index: self.BUILD_CLASS(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST.index: self.BUILD_LIST(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST_FROM_ARG.index: self.BUILD_LIST_FROM_ARG(oparg, next_instr) elif opcode == opcodedesc.BUILD_MAP.index: self.BUILD_MAP(oparg, next_instr) elif opcode == opcodedesc.BUILD_SET.index: self.BUILD_SET(oparg, next_instr) elif opcode == opcodedesc.BUILD_SLICE.index: self.BUILD_SLICE(oparg, next_instr) elif opcode == opcodedesc.BUILD_TUPLE.index: self.BUILD_TUPLE(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION.index: self.CALL_FUNCTION(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_KW.index: self.CALL_FUNCTION_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR.index: self.CALL_FUNCTION_VAR(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR_KW.index: self.CALL_FUNCTION_VAR_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_METHOD.index: > self.CALL_METHOD(oparg, next_instr) interpreter\pyopcode.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ f = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_call_wit...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1937]', line 1> at line 6 oparg = 3, ignored = (18L,), n_args = 3, n_kwargs = 0, w_self = None @jit.unroll_safe def CALL_METHOD(f, oparg, *ignored): # opargs contains the arg, and kwarg count, excluding the implicit 'self' n_args = oparg & 0xff n_kwargs = (oparg >> 8) & 0xff w_self = f.peekvalue_maybe_none(n_args + (2 * n_kwargs)) n = n_args + (w_self is not None) if not n_kwargs: w_callable = f.peekvalue(n_args + (2 * n_kwargs) + 1) w_result = f.space.call_valuestack( > w_callable, n, f, methodcall=w_self is not None, dropvalues=n_args + 2) objspace\std\callmethod.py:96: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_call_wit...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1937]', line 1> at line 6 dropvalues = 5, methodcall = False def call_valuestack(self, w_func, nargs, frame, dropvalues, methodcall=False): # methodcall is only used for better error messages in argument.py from pypy.interpreter.function import Function, Method, is_builtin_code if frame.get_is_being_profiled() and is_builtin_code(w_func): # XXX: this code is copied&pasted :-( from the slow path below # call_valuestack(). args = frame.make_arguments(nargs) frame.dropvalues(dropvalues) return self.call_args_and_c_profile(frame, w_func, args) if not self.config.objspace.disable_call_speedhacks: # start of hack for performance if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: w_func = w_func.w_function # reuse callable stack place for w_inst frame.settopvalue(w_inst, nargs) nargs += 1 methodcall = True elif nargs > 0 and ( self.abstract_isinstance_w(frame.peekvalue(nargs-1), # :-( w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): return w_func.funccall_valuestack( > nargs, frame, methodcall=methodcall, dropvalues=dropvalues) interpreter\baseobjspace.py:1243: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_call_wit...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1937]', line 1> at line 6 dropvalues = 5, methodcall = False def funccall_valuestack(self, nargs, frame, dropvalues, methodcall=False): # speed hack # methodcall is only for better error messages from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit # if (jit.we_are_jitted() and code is self.space._code_of_sys_exc_info and nargs == 0): frame.dropvalues(dropvalues) from pypy.module.sys.vm import exc_info_direct return exc_info_direct(self.space, frame) # fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: f_0 = frame.peekvalue(0) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, f_0) elif nargs == 2: f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, f_1, f_0) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) frame.dropvalues(dropvalues) return code.fastcall_3(self.space, self, f_2, f_1, f_0) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) f_3 = frame.peekvalue(3) frame.dropvalues(dropvalues) return code.fastcall_4(self.space, self, f_3, f_2, f_1, f_0) elif (nargs | Code.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) return self._flat_pycall(code, nargs, frame, dropvalues) elif fast_natural_arity & Code.FLATPYCALL: natural_arity = fast_natural_arity & 0xff if natural_arity > nargs >= natural_arity - len(self.defs_w): assert isinstance(code, PyCode) return self._flat_pycall_defaults(code, nargs, frame, natural_arity - nargs, dropvalues) elif fast_natural_arity == Code.PASSTHROUGHARGS1 and nargs >= 1: assert isinstance(code, gateway.BuiltinCodePassThroughArguments1) w_obj = frame.peekvalue(nargs-1) args = frame.make_arguments(nargs-1) frame.dropvalues(dropvalues) return code.funcrun_obj(self, w_obj, args) args = frame.make_arguments(nargs, methodcall=methodcall) frame.dropvalues(dropvalues) > return self.call_args(args) interpreter\function.py:190: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('\n struct foo { int x; ...; };\n ...eturn s;\n }\n struct foo g(int a, ...) { }\n ')]) def call_args(self, args): # delegate activation to code > w_res = self.getcode().funcrun(self, args) interpreter\function.py:68: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('\n struct foo { int x; ...; };\n ...eturn s;\n }\n struct foo g(int a, ...) { }\n ')]) def funcrun(self, func, args): > return BuiltinCode.funcrun_obj(self, func, None, args) interpreter\gateway.py:781: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('\n struct foo { int x; ...; };\n ...eturn s;\n }\n struct foo g(int a, ...) { }\n ')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: w_result = activation._run(space, scope_w) except DescrMismatch: if w_obj is not None: args = args.prepend(w_obj) return self._type_unwrap_mismatch(space, args) except Exception as e: > self.handle_exception(space, e) interpreter\gateway.py:795: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> space = StdObjSpace e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def handle_exception(self, space, e): try: if not we_are_translated(): raise raise e except OperationError: raise except Exception as e: # general fall-back from pypy.interpreter import error > raise error.get_converted_unexpected_exception(space, e) interpreter\gateway.py:819: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('\n struct foo { int x; ...; };\n ...eturn s;\n }\n struct foo g(int a, ...) { }\n ')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: > w_result = activation._run(space, scope_w) interpreter\gateway.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinActivation_UwS_ObjSpace_text_text_text_W_Root_W_Root_W_Root_int_W_Root object at 0x000002791c13af38> space = StdObjSpace scope_w = [W_BytesObject('\n struct foo { int x; ...; };\n struct foo f(void);\n struct foo g(i... struct foo... return s;\n }\n struct foo g(int a, ...) { }\n '), None, None, None, ...] def _run(self, space, scope_w): > return self.behavior(space, space.text_w(scope_w[0]), space.text_w(scope_w[1]), space.text_w(scope_w[2]), scope_w[3], scope_w[4], scope_w[5], space.gateway_int_w(scope_w[6]), scope_w[7]) <3152-codegen d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\rpython\tool\sourcetools.py:200>:3: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace cdef = '\n struct foo { int x; ...; };\n struct foo f(void);\n struct foo g(int, ...);\n ' module_name = '_CFFI_test_call_with_custom_field_pos' source = '\n struct foo { int y, x; };\n struct foo f(void) {\n struct foo s = { 40, 200 };\n return s;\n }\n struct foo g(int a, ...) { }\n ' w_includes = None, w_extra_source = None, w_min_version = None, packed = 0 w_extra_compile_args = None @unwrap_spec(cdef='text', module_name='text', source='text', packed=int) def prepare(space, cdef, module_name, source, w_includes=None, w_extra_source=None, w_min_version=None, packed=False, w_extra_compile_args=None): try: import cffi from cffi import FFI # <== the system one, which from cffi import recompiler # needs to be at least cffi 1.0.4 from cffi import ffiplatform except ImportError: pytest.skip("system cffi module not found or older than 1.0.0") if w_min_version is None: min_version = (1, 4, 0) else: min_version = tuple(space.unwrap(w_min_version)) if cffi.__version_info__ < min_version: pytest.skip("system cffi module needs to be at least %s, got %s" % ( min_version, cffi.__version_info__)) space.appexec([], """(): import _cffi_backend # force it to be initialized """) includes = [] if w_includes: includes += space.unpackiterable(w_includes) assert module_name.startswith('test_') module_name = '_CFFI_' + module_name rdir = udir.ensure('recompiler', dir=1) rdir.join('Python.h').write( '#include <stdio.h>\n' '#define PYPY_VERSION XX\n' '#define PyMODINIT_FUNC /*exported*/ void\n' ) path = module_name.replace('.', os.sep) if '.' in module_name: subrdir = rdir.join(module_name[:module_name.index('.')]) os.mkdir(str(subrdir)) else: subrdir = rdir c_file = str(rdir.join('%s.c' % path)) ffi = FFI() for include_ffi_object in includes: ffi.include(include_ffi_object._test_recompiler_source_ffi) ffi.cdef(cdef, packed=packed) ffi.set_source(module_name, source) ffi.emit_c_code(c_file) base_module_name = module_name.split('.')[-1] sources = [] if w_extra_source is not None: sources.append(space.str_w(w_extra_source)) kwargs = {} # GCC 14 promotes -Wincompatible-pointer-types from a warning to an error # by default, which breaks cffi's intentionally-mismatched field-check # probes (e.g. test_misdeclared_field_1). Keep it a warning so the module # compiles and cffi's runtime checks can run. extra = ['-Wno-error=incompatible-pointer-types'] if w_extra_compile_args is not None: extra = extra + space.unwrap(w_extra_compile_args) kwargs['extra_compile_args'] = extra ext = ffiplatform.get_extension(c_file, module_name, include_dirs=[str(rdir)], export_symbols=['_cffi_pypyinit_' + base_module_name], sources=sources, **kwargs) > ffiplatform.compile(str(rdir), ext) module\_cffi_backend\test\test_recompiler.py:86: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x000002792c1669e0> compiler_verbose = 0, debug = None def compile(tmpdir, ext, compiler_verbose=0, debug=None): """Compile a C extension module using distutils.""" saved_environ = os.environ.copy() try: > outputfilename = _build(tmpdir, ext, compiler_verbose, debug) d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x000002792c1669e0> compiler_verbose = 0, debug = 0 def _build(tmpdir, ext, compiler_verbose=0, debug=None): # XXX compact but horrible :-( from cffi._shimmed_dist_utils import Distribution, CompileError, LinkError, set_threshold, set_verbosity dist = Distribution({'ext_modules': [ext]}) dist.parse_config_files() options = dist.get_option_dict('build_ext') if debug is None: debug = sys.flags.debug options['debug'] = ('ffiplatform', debug) options['force'] = ('ffiplatform', True) options['build_lib'] = ('ffiplatform', tmpdir) options['build_temp'] = ('ffiplatform', tmpdir) # try: old_level = set_threshold(0) or 0 try: set_verbosity(compiler_verbose) dist.run_command('build_ext') cmd_obj = dist.get_command_obj('build_ext') [soname] = cmd_obj.get_outputs() finally: set_threshold(old_level) except (CompileError, LinkError) as e: > raise VerificationError('%s: %s' % (e.__class__.__name__, e)) E VerificationError: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2 d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:54: VerificationError ---------------------------- Captured stdout call ----------------------------- generating d:\systemtemp\pytest\usession-main-595\recompiler\_CFFI_test_call_with_custom_field_pos.c ---------------------------- Captured stderr call ----------------------------- cl : Command line error D8021 : invalid numeric argument '/Wno-error=incompatible-pointer-types' __________________ AppTestRecompiler.test_call_with_bitfield __________________ self = <CallInfo when='call' exception: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2> func = <function <lambda> at 0x000002792a7d2b60>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ..\_pytest\runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ..\_pytest\runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_call_with_bitfield'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_call_with_bitfield'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ..\_pytest\vendored_packages\pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00000279153616a8> hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_call_with_bitfield'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_call_with_bitfield'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ..\_pytest\vendored_packages\pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_call_with_bitfield'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_call_with_bitfield'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ..\_pytest\vendored_packages\pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_call_with_bitfield'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002792ba84110> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...h_bitfield'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027924889b20> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027924889b20> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...h_bitfield'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_call_with_bitfield'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002792ba840c0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...h_bitfield'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027924889ae0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027924889ae0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...h_bitfield'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_call_with_bitfield'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ..\_pytest\vendored_packages\pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_call_with_bitfield'> def pytest_runtest_call(item): try: > item.runtest() ..\_pytest\runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_call_with_bitfield'> def runtest(self): target = self.obj if self.config.option.runappdirect: return target() space = target.im_self.space filename = self._getdynfilename(target) func = app2interp_temp(target.im_func, filename=filename) w_instance = self.parent.w_instance > self.execute_appex(space, func, space, w_instance) tool\pytest\apptest.py:89: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_call_with_bitfield'>, space = StdObjSpace target = <function test_call_with_bitfield at 0x000002792a7d2bd8> args = (StdObjSpace, <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>) def execute_appex(self, space, target, *args): self.space = space try: > target(*args) tool\pytest\apptest.py:30: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) w_func = <Function test_call_with_bitfield> args = <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8> def appcaller(space, *args_w): if not isinstance(space, ObjSpace): raise TypeError("first argument must be a space instance.") # the last argument can be an Arguments w_func = self.wget(space, name) if not args_w: return space.call_function(w_func) else: args = args_w[-1] assert args is not None if not isinstance(args, Arguments): > return space.call_function(w_func, *args_w) interpreter\gateway.py:1227: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <Function test_call_with_bitfield> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) nargs = 1, Function = <class 'pypy.interpreter.function.Function'> Method = <class 'pypy.interpreter.function.Method'> def call_function(self, w_func, *args_w): nargs = len(args_w) # used for pruning funccall versions if not self.config.objspace.disable_call_speedhacks and nargs < 5: # start of hack for performance from pypy.interpreter.function import Function, Method if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: if nargs < 4: func = w_func.w_function if isinstance(func, Function): return func.funccall(w_inst, *args_w) elif args_w and ( self.abstract_isinstance_w(args_w[0], w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): > return w_func.funccall(*args_w) interpreter\baseobjspace.py:1210: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <Function test_call_with_bitfield> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) gateway = <module 'pypy.interpreter.gateway' from 'd:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\interpreter\\gateway.pyc'> PyCode = <class 'pypy.interpreter.pycode.PyCode'> code = <code object test_call_with_bitfield, file '[d:\pypy_stuff\buildbot64\slave\ow...-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:1989]', line 1> def funccall(self, *args_w): # speed hack from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit nargs = len(args_w) fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, args_w[0]) elif nargs == 2: assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, args_w[0], args_w[1]) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) return code.fastcall_3(self.space, self, args_w[0], args_w[1], args_w[2]) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) return code.fastcall_4(self.space, self, args_w[0], args_w[1], args_w[2], args_w[3]) elif (nargs | PyCode.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) if nargs < 5: new_frame = self.space.createframe(code, self.w_func_globals, self) for i in funccallunrolling: if i < nargs: new_frame.locals_cells_stack_w[i] = args_w[i] > return new_frame.run() interpreter\function.py:118: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_call_wit...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1989]', line 1> at line 6 def run(self): """Start this frame's execution.""" if self.getcode().co_flags & pycode.CO_GENERATOR: from pypy.interpreter.generator import GeneratorIterator return GeneratorIterator(self) else: > return self.execute_frame() interpreter\pyframe.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_call_wit...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1989]', line 1> at line 6 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, executioncontext) except OperationError: raise except Exception as e: # general fall-back > raise self._convert_unexpected_exception(e) interpreter\pyframe.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_call_wit...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1989]', line 1> at line 6 e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def _convert_unexpected_exception(self, e): from pypy.interpreter import error > operr = error.get_converted_unexpected_exception(self.space, e) interpreter\pyframe.py:943: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_call_wit...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1989]', line 1> at line 6 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, > executioncontext) interpreter\pyframe.py:286: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_call_wit...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1989]', line 1> at line 6 pycode = <code object test_call_with_bitfield, file '[d:\pypy_stuff\buildbot64\slave\ow...-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:1989]', line 1> next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def dispatch(self, pycode, next_instr, ec): # For the sequel, force 'next_instr' to be unsigned for performance next_instr = r_uint(next_instr) co_code = pycode.co_code try: while True: > next_instr = self.handle_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:64: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_call_wit...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1989]', line 1> at line 6 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00\xcc\x1b\x00|\x02\x00\xc9\x01...00t\x07\x00|\x03\x00j\x08\x00\x83\x01\x00d\x06\x00k\x02\x00sl\x00t\x03\x00\x82\x01\x00d\x00\x00S\x82\x01\x00d\x00\x00S' next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def handle_bytecode(self, co_code, next_instr, ec): try: > next_instr = self.dispatch_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:71: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_call_wit...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1989]', line 1> at line 6 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00\xcc\x1b\x00|\x02\x00\xc9\x01...00t\x07\x00|\x03\x00j\x08\x00\x83\x01\x00d\x06\x00k\x02\x00sl\x00t\x03\x00\x82\x01\x00d\x00\x00S\x82\x01\x00d\x00\x00S' next_instr = 18L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> @jit.unroll_safe def dispatch_bytecode(self, co_code, next_instr, ec): while True: self.last_instr = intmask(next_instr) if jit.we_are_jitted(): if self.debugdata: ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) else: # Only reload next_instr from last_instr when something that # can modify it actually ran (trace function or action # dispatcher). In the common case (no trace, positive ticker) # next_instr is unchanged and the round-trip is skipped. _d = self.debugdata if ec.space.reverse_debugging or ( _d is not None and _d.w_f_trace is not None) or ( not we_are_translated() and 'bytecode_only_trace' in ec.__dict__): ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) actionflag = ec.space.actionflag if actionflag.decrement_ticker(TICK_COUNTER_STEP) < 0: actionflag.action_dispatcher(ec, self) next_instr = r_uint(self.last_instr) opcode = ord(co_code[next_instr]) next_instr += 1 if opcode >= HAVE_ARGUMENT: lo = ord(co_code[next_instr]) hi = ord(co_code[next_instr+1]) next_instr += 2 oparg = (hi * 256) | lo else: oparg = 0 # note: the structure of the code here is such that it makes # (after translation) a big "if/elif" chain, which is then # turned into a switch(). while opcode == opcodedesc.EXTENDED_ARG.index: opcode = ord(co_code[next_instr]) if opcode < HAVE_ARGUMENT: raise BytecodeCorruption lo = ord(co_code[next_instr+1]) hi = ord(co_code[next_instr+2]) next_instr += 3 oparg = (oparg * 65536) | (hi * 256) | lo if opcode == opcodedesc.RETURN_VALUE.index: if not self.blockstack_non_empty(): self.frame_finished_execution = True # for generators raise Return w_returnvalue = self.popvalue() block = self.unrollstack(SReturnValue.kind) if block is None: self.pushvalue(w_returnvalue) raise Return else: unroller = SReturnValue(w_returnvalue) next_instr = block.handle(self, unroller) return next_instr # now inside a 'finally' block elif opcode == opcodedesc.END_FINALLY.index: unroller = self.end_finally() if isinstance(unroller, SuspendedUnroller): # go on unrolling the stack block = self.unrollstack(unroller.kind) if block is None: w_result = unroller.nomoreblocks() self.pushvalue(w_result) raise Return else: next_instr = block.handle(self, unroller) return next_instr elif opcode == opcodedesc.JUMP_ABSOLUTE.index: return self.jump_absolute(oparg, ec) elif opcode == opcodedesc.BREAK_LOOP.index: next_instr = self.BREAK_LOOP(oparg, next_instr) elif opcode == opcodedesc.CONTINUE_LOOP.index: return self.CONTINUE_LOOP(oparg, next_instr) elif opcode == opcodedesc.FOR_ITER.index: next_instr = self.FOR_ITER(oparg, next_instr) elif opcode == opcodedesc.JUMP_FORWARD.index: next_instr = self.JUMP_FORWARD(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_FALSE_OR_POP.index: next_instr = self.JUMP_IF_FALSE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_NOT_DEBUG.index: next_instr = self.JUMP_IF_NOT_DEBUG(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_TRUE_OR_POP.index: next_instr = self.JUMP_IF_TRUE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_FALSE.index: next_instr = self.POP_JUMP_IF_FALSE(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_TRUE.index: next_instr = self.POP_JUMP_IF_TRUE(oparg, next_instr) elif opcode == opcodedesc.BINARY_ADD.index: self.BINARY_ADD(oparg, next_instr) elif opcode == opcodedesc.BINARY_AND.index: self.BINARY_AND(oparg, next_instr) elif opcode == opcodedesc.BINARY_DIVIDE.index: self.BINARY_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_FLOOR_DIVIDE.index: self.BINARY_FLOOR_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_LSHIFT.index: self.BINARY_LSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_MODULO.index: self.BINARY_MODULO(oparg, next_instr) elif opcode == opcodedesc.BINARY_MULTIPLY.index: self.BINARY_MULTIPLY(oparg, next_instr) elif opcode == opcodedesc.BINARY_OR.index: self.BINARY_OR(oparg, next_instr) elif opcode == opcodedesc.BINARY_POWER.index: self.BINARY_POWER(oparg, next_instr) elif opcode == opcodedesc.BINARY_RSHIFT.index: self.BINARY_RSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBSCR.index: self.BINARY_SUBSCR(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBTRACT.index: self.BINARY_SUBTRACT(oparg, next_instr) elif opcode == opcodedesc.BINARY_TRUE_DIVIDE.index: self.BINARY_TRUE_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_XOR.index: self.BINARY_XOR(oparg, next_instr) elif opcode == opcodedesc.BUILD_CLASS.index: self.BUILD_CLASS(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST.index: self.BUILD_LIST(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST_FROM_ARG.index: self.BUILD_LIST_FROM_ARG(oparg, next_instr) elif opcode == opcodedesc.BUILD_MAP.index: self.BUILD_MAP(oparg, next_instr) elif opcode == opcodedesc.BUILD_SET.index: self.BUILD_SET(oparg, next_instr) elif opcode == opcodedesc.BUILD_SLICE.index: self.BUILD_SLICE(oparg, next_instr) elif opcode == opcodedesc.BUILD_TUPLE.index: self.BUILD_TUPLE(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION.index: self.CALL_FUNCTION(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_KW.index: self.CALL_FUNCTION_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR.index: self.CALL_FUNCTION_VAR(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR_KW.index: self.CALL_FUNCTION_VAR_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_METHOD.index: > self.CALL_METHOD(oparg, next_instr) interpreter\pyopcode.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ f = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_call_wit...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1989]', line 1> at line 6 oparg = 3, ignored = (18L,), n_args = 3, n_kwargs = 0, w_self = None @jit.unroll_safe def CALL_METHOD(f, oparg, *ignored): # opargs contains the arg, and kwarg count, excluding the implicit 'self' n_args = oparg & 0xff n_kwargs = (oparg >> 8) & 0xff w_self = f.peekvalue_maybe_none(n_args + (2 * n_kwargs)) n = n_args + (w_self is not None) if not n_kwargs: w_callable = f.peekvalue(n_args + (2 * n_kwargs) + 1) w_result = f.space.call_valuestack( > w_callable, n, f, methodcall=w_self is not None, dropvalues=n_args + 2) objspace\std\callmethod.py:96: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_call_wit...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1989]', line 1> at line 6 dropvalues = 5, methodcall = False def call_valuestack(self, w_func, nargs, frame, dropvalues, methodcall=False): # methodcall is only used for better error messages in argument.py from pypy.interpreter.function import Function, Method, is_builtin_code if frame.get_is_being_profiled() and is_builtin_code(w_func): # XXX: this code is copied&pasted :-( from the slow path below # call_valuestack(). args = frame.make_arguments(nargs) frame.dropvalues(dropvalues) return self.call_args_and_c_profile(frame, w_func, args) if not self.config.objspace.disable_call_speedhacks: # start of hack for performance if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: w_func = w_func.w_function # reuse callable stack place for w_inst frame.settopvalue(w_inst, nargs) nargs += 1 methodcall = True elif nargs > 0 and ( self.abstract_isinstance_w(frame.peekvalue(nargs-1), # :-( w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): return w_func.funccall_valuestack( > nargs, frame, methodcall=methodcall, dropvalues=dropvalues) interpreter\baseobjspace.py:1243: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_call_wit...ild\pypy\module\_cffi_backend\test\test_recompiler.py:1989]', line 1> at line 6 dropvalues = 5, methodcall = False def funccall_valuestack(self, nargs, frame, dropvalues, methodcall=False): # speed hack # methodcall is only for better error messages from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit # if (jit.we_are_jitted() and code is self.space._code_of_sys_exc_info and nargs == 0): frame.dropvalues(dropvalues) from pypy.module.sys.vm import exc_info_direct return exc_info_direct(self.space, frame) # fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: f_0 = frame.peekvalue(0) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, f_0) elif nargs == 2: f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, f_1, f_0) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) frame.dropvalues(dropvalues) return code.fastcall_3(self.space, self, f_2, f_1, f_0) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) f_3 = frame.peekvalue(3) frame.dropvalues(dropvalues) return code.fastcall_4(self.space, self, f_3, f_2, f_1, f_0) elif (nargs | Code.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) return self._flat_pycall(code, nargs, frame, dropvalues) elif fast_natural_arity & Code.FLATPYCALL: natural_arity = fast_natural_arity & 0xff if natural_arity > nargs >= natural_arity - len(self.defs_w): assert isinstance(code, PyCode) return self._flat_pycall_defaults(code, nargs, frame, natural_arity - nargs, dropvalues) elif fast_natural_arity == Code.PASSTHROUGHARGS1 and nargs >= 1: assert isinstance(code, gateway.BuiltinCodePassThroughArguments1) w_obj = frame.peekvalue(nargs-1) args = frame.make_arguments(nargs-1) frame.dropvalues(dropvalues) return code.funcrun_obj(self, w_obj, args) args = frame.make_arguments(nargs, methodcall=methodcall) frame.dropvalues(dropvalues) > return self.call_args(args) interpreter\function.py:190: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('\n struct foo { int x:5; };\n ...eturn s;\n }\n struct foo g(int a, ...) { }\n ')]) def call_args(self, args): # delegate activation to code > w_res = self.getcode().funcrun(self, args) interpreter\function.py:68: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('\n struct foo { int x:5; };\n ...eturn s;\n }\n struct foo g(int a, ...) { }\n ')]) def funcrun(self, func, args): > return BuiltinCode.funcrun_obj(self, func, None, args) interpreter\gateway.py:781: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('\n struct foo { int x:5; };\n ...eturn s;\n }\n struct foo g(int a, ...) { }\n ')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: w_result = activation._run(space, scope_w) except DescrMismatch: if w_obj is not None: args = args.prepend(w_obj) return self._type_unwrap_mismatch(space, args) except Exception as e: > self.handle_exception(space, e) interpreter\gateway.py:795: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> space = StdObjSpace e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def handle_exception(self, space, e): try: if not we_are_translated(): raise raise e except OperationError: raise except Exception as e: # general fall-back from pypy.interpreter import error > raise error.get_converted_unexpected_exception(space, e) interpreter\gateway.py:819: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('\n struct foo { int x:5; };\n ...eturn s;\n }\n struct foo g(int a, ...) { }\n ')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: > w_result = activation._run(space, scope_w) interpreter\gateway.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinActivation_UwS_ObjSpace_text_text_text_W_Root_W_Root_W_Root_int_W_Root object at 0x000002791c13af38> space = StdObjSpace scope_w = [W_BytesObject('\n struct foo { int x:5; };\n struct foo f(void);\n struct foo g(int,... struct foo ... return s;\n }\n struct foo g(int a, ...) { }\n '), None, None, None, ...] def _run(self, space, scope_w): > return self.behavior(space, space.text_w(scope_w[0]), space.text_w(scope_w[1]), space.text_w(scope_w[2]), scope_w[3], scope_w[4], scope_w[5], space.gateway_int_w(scope_w[6]), scope_w[7]) <3152-codegen d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\rpython\tool\sourcetools.py:200>:3: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace cdef = '\n struct foo { int x:5; };\n struct foo f(void);\n struct foo g(int, ...);\n ' module_name = '_CFFI_test_call_with_bitfield' source = '\n struct foo { int x:5; };\n struct foo f(void) {\n struct foo s = { 11 };\n return s;\n }\n struct foo g(int a, ...) { }\n ' w_includes = None, w_extra_source = None, w_min_version = None, packed = 0 w_extra_compile_args = None @unwrap_spec(cdef='text', module_name='text', source='text', packed=int) def prepare(space, cdef, module_name, source, w_includes=None, w_extra_source=None, w_min_version=None, packed=False, w_extra_compile_args=None): try: import cffi from cffi import FFI # <== the system one, which from cffi import recompiler # needs to be at least cffi 1.0.4 from cffi import ffiplatform except ImportError: pytest.skip("system cffi module not found or older than 1.0.0") if w_min_version is None: min_version = (1, 4, 0) else: min_version = tuple(space.unwrap(w_min_version)) if cffi.__version_info__ < min_version: pytest.skip("system cffi module needs to be at least %s, got %s" % ( min_version, cffi.__version_info__)) space.appexec([], """(): import _cffi_backend # force it to be initialized """) includes = [] if w_includes: includes += space.unpackiterable(w_includes) assert module_name.startswith('test_') module_name = '_CFFI_' + module_name rdir = udir.ensure('recompiler', dir=1) rdir.join('Python.h').write( '#include <stdio.h>\n' '#define PYPY_VERSION XX\n' '#define PyMODINIT_FUNC /*exported*/ void\n' ) path = module_name.replace('.', os.sep) if '.' in module_name: subrdir = rdir.join(module_name[:module_name.index('.')]) os.mkdir(str(subrdir)) else: subrdir = rdir c_file = str(rdir.join('%s.c' % path)) ffi = FFI() for include_ffi_object in includes: ffi.include(include_ffi_object._test_recompiler_source_ffi) ffi.cdef(cdef, packed=packed) ffi.set_source(module_name, source) ffi.emit_c_code(c_file) base_module_name = module_name.split('.')[-1] sources = [] if w_extra_source is not None: sources.append(space.str_w(w_extra_source)) kwargs = {} # GCC 14 promotes -Wincompatible-pointer-types from a warning to an error # by default, which breaks cffi's intentionally-mismatched field-check # probes (e.g. test_misdeclared_field_1). Keep it a warning so the module # compiles and cffi's runtime checks can run. extra = ['-Wno-error=incompatible-pointer-types'] if w_extra_compile_args is not None: extra = extra + space.unwrap(w_extra_compile_args) kwargs['extra_compile_args'] = extra ext = ffiplatform.get_extension(c_file, module_name, include_dirs=[str(rdir)], export_symbols=['_cffi_pypyinit_' + base_module_name], sources=sources, **kwargs) > ffiplatform.compile(str(rdir), ext) module\_cffi_backend\test\test_recompiler.py:86: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x00000279248694a0> compiler_verbose = 0, debug = None def compile(tmpdir, ext, compiler_verbose=0, debug=None): """Compile a C extension module using distutils.""" saved_environ = os.environ.copy() try: > outputfilename = _build(tmpdir, ext, compiler_verbose, debug) d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x00000279248694a0> compiler_verbose = 0, debug = 0 def _build(tmpdir, ext, compiler_verbose=0, debug=None): # XXX compact but horrible :-( from cffi._shimmed_dist_utils import Distribution, CompileError, LinkError, set_threshold, set_verbosity dist = Distribution({'ext_modules': [ext]}) dist.parse_config_files() options = dist.get_option_dict('build_ext') if debug is None: debug = sys.flags.debug options['debug'] = ('ffiplatform', debug) options['force'] = ('ffiplatform', True) options['build_lib'] = ('ffiplatform', tmpdir) options['build_temp'] = ('ffiplatform', tmpdir) # try: old_level = set_threshold(0) or 0 try: set_verbosity(compiler_verbose) dist.run_command('build_ext') cmd_obj = dist.get_command_obj('build_ext') [soname] = cmd_obj.get_outputs() finally: set_threshold(old_level) except (CompileError, LinkError) as e: > raise VerificationError('%s: %s' % (e.__class__.__name__, e)) E VerificationError: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2 d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:54: VerificationError ---------------------------- Captured stdout call ----------------------------- generating d:\systemtemp\pytest\usession-main-595\recompiler\_CFFI_test_call_with_bitfield.c ---------------------------- Captured stderr call ----------------------------- cl : Command line error D8021 : invalid numeric argument '/Wno-error=incompatible-pointer-types' ___________________ AppTestRecompiler.test_call_with_union ____________________ self = <CallInfo when='call' exception: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2> func = <function <lambda> at 0x000002792de27808>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ..\_pytest\runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ..\_pytest\runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_call_with_union'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_call_with_union'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ..\_pytest\vendored_packages\pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00000279153616a8> hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_call_with_union'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_call_with_union'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ..\_pytest\vendored_packages\pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_call_with_union'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_call_with_union'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ..\_pytest\vendored_packages\pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_call_with_union'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002792d702b38> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...with_union'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792875bce0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792875bce0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...with_union'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_call_with_union'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002792d702ac0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...with_union'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792875bca0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792875bca0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...with_union'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_call_with_union'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ..\_pytest\vendored_packages\pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_call_with_union'> def pytest_runtest_call(item): try: > item.runtest() ..\_pytest\runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_call_with_union'> def runtest(self): target = self.obj if self.config.option.runappdirect: return target() space = target.im_self.space filename = self._getdynfilename(target) func = app2interp_temp(target.im_func, filename=filename) w_instance = self.parent.w_instance > self.execute_appex(space, func, space, w_instance) tool\pytest\apptest.py:89: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_call_with_union'>, space = StdObjSpace target = <function test_call_with_union at 0x000002792de27880> args = (StdObjSpace, <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>) def execute_appex(self, space, target, *args): self.space = space try: > target(*args) tool\pytest\apptest.py:30: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) w_func = <Function test_call_with_union> args = <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8> def appcaller(space, *args_w): if not isinstance(space, ObjSpace): raise TypeError("first argument must be a space instance.") # the last argument can be an Arguments w_func = self.wget(space, name) if not args_w: return space.call_function(w_func) else: args = args_w[-1] assert args is not None if not isinstance(args, Arguments): > return space.call_function(w_func, *args_w) interpreter\gateway.py:1227: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <Function test_call_with_union> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) nargs = 1, Function = <class 'pypy.interpreter.function.Function'> Method = <class 'pypy.interpreter.function.Method'> def call_function(self, w_func, *args_w): nargs = len(args_w) # used for pruning funccall versions if not self.config.objspace.disable_call_speedhacks and nargs < 5: # start of hack for performance from pypy.interpreter.function import Function, Method if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: if nargs < 4: func = w_func.w_function if isinstance(func, Function): return func.funccall(w_inst, *args_w) elif args_w and ( self.abstract_isinstance_w(args_w[0], w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): > return w_func.funccall(*args_w) interpreter\baseobjspace.py:1210: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <Function test_call_with_union> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) gateway = <module 'pypy.interpreter.gateway' from 'd:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\interpreter\\gateway.pyc'> PyCode = <class 'pypy.interpreter.pycode.PyCode'> code = <code object test_call_with_union, file '[d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:2036]', line 1> def funccall(self, *args_w): # speed hack from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit nargs = len(args_w) fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, args_w[0]) elif nargs == 2: assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, args_w[0], args_w[1]) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) return code.fastcall_3(self.space, self, args_w[0], args_w[1], args_w[2]) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) return code.fastcall_4(self.space, self, args_w[0], args_w[1], args_w[2], args_w[3]) elif (nargs | PyCode.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) if nargs < 5: new_frame = self.space.createframe(code, self.w_func_globals, self) for i in funccallunrolling: if i < nargs: new_frame.locals_cells_stack_w[i] = args_w[i] > return new_frame.run() interpreter\function.py:118: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_call_wit...ild\pypy\module\_cffi_backend\test\test_recompiler.py:2036]', line 1> at line 6 def run(self): """Start this frame's execution.""" if self.getcode().co_flags & pycode.CO_GENERATOR: from pypy.interpreter.generator import GeneratorIterator return GeneratorIterator(self) else: > return self.execute_frame() interpreter\pyframe.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_call_wit...ild\pypy\module\_cffi_backend\test\test_recompiler.py:2036]', line 1> at line 6 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, executioncontext) except OperationError: raise except Exception as e: # general fall-back > raise self._convert_unexpected_exception(e) interpreter\pyframe.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_call_wit...ild\pypy\module\_cffi_backend\test\test_recompiler.py:2036]', line 1> at line 6 e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def _convert_unexpected_exception(self, e): from pypy.interpreter import error > operr = error.get_converted_unexpected_exception(self.space, e) interpreter\pyframe.py:943: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_call_wit...ild\pypy\module\_cffi_backend\test\test_recompiler.py:2036]', line 1> at line 6 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, > executioncontext) interpreter\pyframe.py:286: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_call_wit...ild\pypy\module\_cffi_backend\test\test_recompiler.py:2036]', line 1> at line 6 pycode = <code object test_call_with_union, file '[d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:2036]', line 1> next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def dispatch(self, pycode, next_instr, ec): # For the sequel, force 'next_instr' to be unsigned for performance next_instr = r_uint(next_instr) co_code = pycode.co_code try: while True: > next_instr = self.handle_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:64: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_call_wit...ild\pypy\module\_cffi_backend\test\test_recompiler.py:2036]', line 1> at line 6 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00\xcc\x1b\x00|\x02\x00\xc9\x01...00t\x07\x00|\x03\x00j\x08\x00\x83\x01\x00d\x06\x00k\x02\x00sl\x00t\x03\x00\x82\x01\x00d\x00\x00S\x82\x01\x00d\x00\x00S' next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def handle_bytecode(self, co_code, next_instr, ec): try: > next_instr = self.dispatch_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:71: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_call_wit...ild\pypy\module\_cffi_backend\test\test_recompiler.py:2036]', line 1> at line 6 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00\xcc\x1b\x00|\x02\x00\xc9\x01...00t\x07\x00|\x03\x00j\x08\x00\x83\x01\x00d\x06\x00k\x02\x00sl\x00t\x03\x00\x82\x01\x00d\x00\x00S\x82\x01\x00d\x00\x00S' next_instr = 18L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> @jit.unroll_safe def dispatch_bytecode(self, co_code, next_instr, ec): while True: self.last_instr = intmask(next_instr) if jit.we_are_jitted(): if self.debugdata: ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) else: # Only reload next_instr from last_instr when something that # can modify it actually ran (trace function or action # dispatcher). In the common case (no trace, positive ticker) # next_instr is unchanged and the round-trip is skipped. _d = self.debugdata if ec.space.reverse_debugging or ( _d is not None and _d.w_f_trace is not None) or ( not we_are_translated() and 'bytecode_only_trace' in ec.__dict__): ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) actionflag = ec.space.actionflag if actionflag.decrement_ticker(TICK_COUNTER_STEP) < 0: actionflag.action_dispatcher(ec, self) next_instr = r_uint(self.last_instr) opcode = ord(co_code[next_instr]) next_instr += 1 if opcode >= HAVE_ARGUMENT: lo = ord(co_code[next_instr]) hi = ord(co_code[next_instr+1]) next_instr += 2 oparg = (hi * 256) | lo else: oparg = 0 # note: the structure of the code here is such that it makes # (after translation) a big "if/elif" chain, which is then # turned into a switch(). while opcode == opcodedesc.EXTENDED_ARG.index: opcode = ord(co_code[next_instr]) if opcode < HAVE_ARGUMENT: raise BytecodeCorruption lo = ord(co_code[next_instr+1]) hi = ord(co_code[next_instr+2]) next_instr += 3 oparg = (oparg * 65536) | (hi * 256) | lo if opcode == opcodedesc.RETURN_VALUE.index: if not self.blockstack_non_empty(): self.frame_finished_execution = True # for generators raise Return w_returnvalue = self.popvalue() block = self.unrollstack(SReturnValue.kind) if block is None: self.pushvalue(w_returnvalue) raise Return else: unroller = SReturnValue(w_returnvalue) next_instr = block.handle(self, unroller) return next_instr # now inside a 'finally' block elif opcode == opcodedesc.END_FINALLY.index: unroller = self.end_finally() if isinstance(unroller, SuspendedUnroller): # go on unrolling the stack block = self.unrollstack(unroller.kind) if block is None: w_result = unroller.nomoreblocks() self.pushvalue(w_result) raise Return else: next_instr = block.handle(self, unroller) return next_instr elif opcode == opcodedesc.JUMP_ABSOLUTE.index: return self.jump_absolute(oparg, ec) elif opcode == opcodedesc.BREAK_LOOP.index: next_instr = self.BREAK_LOOP(oparg, next_instr) elif opcode == opcodedesc.CONTINUE_LOOP.index: return self.CONTINUE_LOOP(oparg, next_instr) elif opcode == opcodedesc.FOR_ITER.index: next_instr = self.FOR_ITER(oparg, next_instr) elif opcode == opcodedesc.JUMP_FORWARD.index: next_instr = self.JUMP_FORWARD(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_FALSE_OR_POP.index: next_instr = self.JUMP_IF_FALSE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_NOT_DEBUG.index: next_instr = self.JUMP_IF_NOT_DEBUG(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_TRUE_OR_POP.index: next_instr = self.JUMP_IF_TRUE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_FALSE.index: next_instr = self.POP_JUMP_IF_FALSE(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_TRUE.index: next_instr = self.POP_JUMP_IF_TRUE(oparg, next_instr) elif opcode == opcodedesc.BINARY_ADD.index: self.BINARY_ADD(oparg, next_instr) elif opcode == opcodedesc.BINARY_AND.index: self.BINARY_AND(oparg, next_instr) elif opcode == opcodedesc.BINARY_DIVIDE.index: self.BINARY_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_FLOOR_DIVIDE.index: self.BINARY_FLOOR_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_LSHIFT.index: self.BINARY_LSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_MODULO.index: self.BINARY_MODULO(oparg, next_instr) elif opcode == opcodedesc.BINARY_MULTIPLY.index: self.BINARY_MULTIPLY(oparg, next_instr) elif opcode == opcodedesc.BINARY_OR.index: self.BINARY_OR(oparg, next_instr) elif opcode == opcodedesc.BINARY_POWER.index: self.BINARY_POWER(oparg, next_instr) elif opcode == opcodedesc.BINARY_RSHIFT.index: self.BINARY_RSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBSCR.index: self.BINARY_SUBSCR(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBTRACT.index: self.BINARY_SUBTRACT(oparg, next_instr) elif opcode == opcodedesc.BINARY_TRUE_DIVIDE.index: self.BINARY_TRUE_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_XOR.index: self.BINARY_XOR(oparg, next_instr) elif opcode == opcodedesc.BUILD_CLASS.index: self.BUILD_CLASS(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST.index: self.BUILD_LIST(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST_FROM_ARG.index: self.BUILD_LIST_FROM_ARG(oparg, next_instr) elif opcode == opcodedesc.BUILD_MAP.index: self.BUILD_MAP(oparg, next_instr) elif opcode == opcodedesc.BUILD_SET.index: self.BUILD_SET(oparg, next_instr) elif opcode == opcodedesc.BUILD_SLICE.index: self.BUILD_SLICE(oparg, next_instr) elif opcode == opcodedesc.BUILD_TUPLE.index: self.BUILD_TUPLE(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION.index: self.CALL_FUNCTION(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_KW.index: self.CALL_FUNCTION_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR.index: self.CALL_FUNCTION_VAR(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR_KW.index: self.CALL_FUNCTION_VAR_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_METHOD.index: > self.CALL_METHOD(oparg, next_instr) interpreter\pyopcode.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ f = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_call_wit...ild\pypy\module\_cffi_backend\test\test_recompiler.py:2036]', line 1> at line 6 oparg = 3, ignored = (18L,), n_args = 3, n_kwargs = 0, w_self = None @jit.unroll_safe def CALL_METHOD(f, oparg, *ignored): # opargs contains the arg, and kwarg count, excluding the implicit 'self' n_args = oparg & 0xff n_kwargs = (oparg >> 8) & 0xff w_self = f.peekvalue_maybe_none(n_args + (2 * n_kwargs)) n = n_args + (w_self is not None) if not n_kwargs: w_callable = f.peekvalue(n_args + (2 * n_kwargs) + 1) w_result = f.space.call_valuestack( > w_callable, n, f, methodcall=w_self is not None, dropvalues=n_args + 2) objspace\std\callmethod.py:96: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_call_wit...ild\pypy\module\_cffi_backend\test\test_recompiler.py:2036]', line 1> at line 6 dropvalues = 5, methodcall = False def call_valuestack(self, w_func, nargs, frame, dropvalues, methodcall=False): # methodcall is only used for better error messages in argument.py from pypy.interpreter.function import Function, Method, is_builtin_code if frame.get_is_being_profiled() and is_builtin_code(w_func): # XXX: this code is copied&pasted :-( from the slow path below # call_valuestack(). args = frame.make_arguments(nargs) frame.dropvalues(dropvalues) return self.call_args_and_c_profile(frame, w_func, args) if not self.config.objspace.disable_call_speedhacks: # start of hack for performance if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: w_func = w_func.w_function # reuse callable stack place for w_inst frame.settopvalue(w_inst, nargs) nargs += 1 methodcall = True elif nargs > 0 and ( self.abstract_isinstance_w(frame.peekvalue(nargs-1), # :-( w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): return w_func.funccall_valuestack( > nargs, frame, methodcall=methodcall, dropvalues=dropvalues) interpreter\baseobjspace.py:1243: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_call_wit...ild\pypy\module\_cffi_backend\test\test_recompiler.py:2036]', line 1> at line 6 dropvalues = 5, methodcall = False def funccall_valuestack(self, nargs, frame, dropvalues, methodcall=False): # speed hack # methodcall is only for better error messages from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit # if (jit.we_are_jitted() and code is self.space._code_of_sys_exc_info and nargs == 0): frame.dropvalues(dropvalues) from pypy.module.sys.vm import exc_info_direct return exc_info_direct(self.space, frame) # fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: f_0 = frame.peekvalue(0) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, f_0) elif nargs == 2: f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, f_1, f_0) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) frame.dropvalues(dropvalues) return code.fastcall_3(self.space, self, f_2, f_1, f_0) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) f_3 = frame.peekvalue(3) frame.dropvalues(dropvalues) return code.fastcall_4(self.space, self, f_3, f_2, f_1, f_0) elif (nargs | Code.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) return self._flat_pycall(code, nargs, frame, dropvalues) elif fast_natural_arity & Code.FLATPYCALL: natural_arity = fast_natural_arity & 0xff if natural_arity > nargs >= natural_arity - len(self.defs_w): assert isinstance(code, PyCode) return self._flat_pycall_defaults(code, nargs, frame, natural_arity - nargs, dropvalues) elif fast_natural_arity == Code.PASSTHROUGHARGS1 and nargs >= 1: assert isinstance(code, gateway.BuiltinCodePassThroughArguments1) w_obj = frame.peekvalue(nargs-1) args = frame.make_arguments(nargs-1) frame.dropvalues(dropvalues) return code.funcrun_obj(self, w_obj, args) args = frame.make_arguments(nargs, methodcall=methodcall) frame.dropvalues(dropvalues) > return self.call_args(args) interpreter\function.py:190: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('\n union foo { int a; char b; };\n ...return s;\n }\n union foo g(int a, ...) { }\n ')]) def call_args(self, args): # delegate activation to code > w_res = self.getcode().funcrun(self, args) interpreter\function.py:68: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('\n union foo { int a; char b; };\n ...return s;\n }\n union foo g(int a, ...) { }\n ')]) def funcrun(self, func, args): > return BuiltinCode.funcrun_obj(self, func, None, args) interpreter\gateway.py:781: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('\n union foo { int a; char b; };\n ...return s;\n }\n union foo g(int a, ...) { }\n ')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: w_result = activation._run(space, scope_w) except DescrMismatch: if w_obj is not None: args = args.prepend(w_obj) return self._type_unwrap_mismatch(space, args) except Exception as e: > self.handle_exception(space, e) interpreter\gateway.py:795: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> space = StdObjSpace e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def handle_exception(self, space, e): try: if not we_are_translated(): raise raise e except OperationError: raise except Exception as e: # general fall-back from pypy.interpreter import error > raise error.get_converted_unexpected_exception(space, e) interpreter\gateway.py:819: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('\n union foo { int a; char b; };\n ...return s;\n }\n union foo g(int a, ...) { }\n ')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: > w_result = activation._run(space, scope_w) interpreter\gateway.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinActivation_UwS_ObjSpace_text_text_text_W_Root_W_Root_W_Root_int_W_Root object at 0x000002791c13af38> space = StdObjSpace scope_w = [W_BytesObject('\n union foo { int a; char b; };\n union foo f(void);\n union foo g(i... union ... return s;\n }\n union foo g(int a, ...) { }\n '), None, None, None, ...] def _run(self, space, scope_w): > return self.behavior(space, space.text_w(scope_w[0]), space.text_w(scope_w[1]), space.text_w(scope_w[2]), scope_w[3], scope_w[4], scope_w[5], space.gateway_int_w(scope_w[6]), scope_w[7]) <3152-codegen d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\rpython\tool\sourcetools.py:200>:3: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace cdef = '\n union foo { int a; char b; };\n union foo f(void);\n union foo g(int, ...);\n ' module_name = '_CFFI_test_call_with_union' source = '\n union foo { int a; char b; };\n union foo f(void) {\n union foo s = { 42 };\n return s;\n }\n union foo g(int a, ...) { }\n ' w_includes = None, w_extra_source = None, w_min_version = None, packed = 0 w_extra_compile_args = None @unwrap_spec(cdef='text', module_name='text', source='text', packed=int) def prepare(space, cdef, module_name, source, w_includes=None, w_extra_source=None, w_min_version=None, packed=False, w_extra_compile_args=None): try: import cffi from cffi import FFI # <== the system one, which from cffi import recompiler # needs to be at least cffi 1.0.4 from cffi import ffiplatform except ImportError: pytest.skip("system cffi module not found or older than 1.0.0") if w_min_version is None: min_version = (1, 4, 0) else: min_version = tuple(space.unwrap(w_min_version)) if cffi.__version_info__ < min_version: pytest.skip("system cffi module needs to be at least %s, got %s" % ( min_version, cffi.__version_info__)) space.appexec([], """(): import _cffi_backend # force it to be initialized """) includes = [] if w_includes: includes += space.unpackiterable(w_includes) assert module_name.startswith('test_') module_name = '_CFFI_' + module_name rdir = udir.ensure('recompiler', dir=1) rdir.join('Python.h').write( '#include <stdio.h>\n' '#define PYPY_VERSION XX\n' '#define PyMODINIT_FUNC /*exported*/ void\n' ) path = module_name.replace('.', os.sep) if '.' in module_name: subrdir = rdir.join(module_name[:module_name.index('.')]) os.mkdir(str(subrdir)) else: subrdir = rdir c_file = str(rdir.join('%s.c' % path)) ffi = FFI() for include_ffi_object in includes: ffi.include(include_ffi_object._test_recompiler_source_ffi) ffi.cdef(cdef, packed=packed) ffi.set_source(module_name, source) ffi.emit_c_code(c_file) base_module_name = module_name.split('.')[-1] sources = [] if w_extra_source is not None: sources.append(space.str_w(w_extra_source)) kwargs = {} # GCC 14 promotes -Wincompatible-pointer-types from a warning to an error # by default, which breaks cffi's intentionally-mismatched field-check # probes (e.g. test_misdeclared_field_1). Keep it a warning so the module # compiles and cffi's runtime checks can run. extra = ['-Wno-error=incompatible-pointer-types'] if w_extra_compile_args is not None: extra = extra + space.unwrap(w_extra_compile_args) kwargs['extra_compile_args'] = extra ext = ffiplatform.get_extension(c_file, module_name, include_dirs=[str(rdir)], export_symbols=['_cffi_pypyinit_' + base_module_name], sources=sources, **kwargs) > ffiplatform.compile(str(rdir), ext) module\_cffi_backend\test\test_recompiler.py:86: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x0000027928764a60> compiler_verbose = 0, debug = None def compile(tmpdir, ext, compiler_verbose=0, debug=None): """Compile a C extension module using distutils.""" saved_environ = os.environ.copy() try: > outputfilename = _build(tmpdir, ext, compiler_verbose, debug) d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x0000027928764a60> compiler_verbose = 0, debug = 0 def _build(tmpdir, ext, compiler_verbose=0, debug=None): # XXX compact but horrible :-( from cffi._shimmed_dist_utils import Distribution, CompileError, LinkError, set_threshold, set_verbosity dist = Distribution({'ext_modules': [ext]}) dist.parse_config_files() options = dist.get_option_dict('build_ext') if debug is None: debug = sys.flags.debug options['debug'] = ('ffiplatform', debug) options['force'] = ('ffiplatform', True) options['build_lib'] = ('ffiplatform', tmpdir) options['build_temp'] = ('ffiplatform', tmpdir) # try: old_level = set_threshold(0) or 0 try: set_verbosity(compiler_verbose) dist.run_command('build_ext') cmd_obj = dist.get_command_obj('build_ext') [soname] = cmd_obj.get_outputs() finally: set_threshold(old_level) except (CompileError, LinkError) as e: > raise VerificationError('%s: %s' % (e.__class__.__name__, e)) E VerificationError: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2 d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:54: VerificationError ---------------------------- Captured stdout call ----------------------------- generating d:\systemtemp\pytest\usession-main-595\recompiler\_CFFI_test_call_with_union.c ---------------------------- Captured stderr call ----------------------------- cl : Command line error D8021 : invalid numeric argument '/Wno-error=incompatible-pointer-types' _____________ AppTestRecompiler.test_override_default_definition ______________ self = <CallInfo when='call' exception: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2> func = <function <lambda> at 0x000002792cd7f2e0>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ..\_pytest\runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ..\_pytest\runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_override_default_definition'>, ...ticall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_override_default_definition'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ..\_pytest\vendored_packages\pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00000279153616a8> hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_override_default_definition'>, ...ticall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_override_default_definition'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ..\_pytest\vendored_packages\pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_override_default_definition'>, ...ticall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_override_default_definition'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ..\_pytest\vendored_packages\pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_override_default_definition'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x0000027928c39e20> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...definition'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027925667b60> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027925667b60> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...definition'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_override_default_definition'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x0000027928c39d30> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...definition'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027925667a60> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027925667a60> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...definition'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_override_default_definition'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ..\_pytest\vendored_packages\pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_override_default_definition'> def pytest_runtest_call(item): try: > item.runtest() ..\_pytest\runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_override_default_definition'> def runtest(self): target = self.obj if self.config.option.runappdirect: return target() space = target.im_self.space filename = self._getdynfilename(target) func = app2interp_temp(target.im_func, filename=filename) w_instance = self.parent.w_instance > self.execute_appex(space, func, space, w_instance) tool\pytest\apptest.py:89: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_override_default_definition'>, space = StdObjSpace target = <function test_override_default_definition at 0x000002792cd7f880> args = (StdObjSpace, <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>) def execute_appex(self, space, target, *args): self.space = space try: > target(*args) tool\pytest\apptest.py:30: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) w_func = <Function test_override_default_definition> args = <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8> def appcaller(space, *args_w): if not isinstance(space, ObjSpace): raise TypeError("first argument must be a space instance.") # the last argument can be an Arguments w_func = self.wget(space, name) if not args_w: return space.call_function(w_func) else: args = args_w[-1] assert args is not None if not isinstance(args, Arguments): > return space.call_function(w_func, *args_w) interpreter\gateway.py:1227: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <Function test_override_default_definition> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) nargs = 1, Function = <class 'pypy.interpreter.function.Function'> Method = <class 'pypy.interpreter.function.Method'> def call_function(self, w_func, *args_w): nargs = len(args_w) # used for pruning funccall versions if not self.config.objspace.disable_call_speedhacks and nargs < 5: # start of hack for performance from pypy.interpreter.function import Function, Method if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: if nargs < 4: func = w_func.w_function if isinstance(func, Function): return func.funccall(w_inst, *args_w) elif args_w and ( self.abstract_isinstance_w(args_w[0], w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): > return w_func.funccall(*args_w) interpreter\baseobjspace.py:1210: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <Function test_override_default_definition> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) gateway = <module 'pypy.interpreter.gateway' from 'd:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\interpreter\\gateway.pyc'> PyCode = <class 'pypy.interpreter.pycode.PyCode'> code = <code object test_override_default_definition, file '[d:\pypy_stuff\buildbot64...-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:2097]', line 1> def funccall(self, *args_w): # speed hack from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit nargs = len(args_w) fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, args_w[0]) elif nargs == 2: assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, args_w[0], args_w[1]) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) return code.fastcall_3(self.space, self, args_w[0], args_w[1], args_w[2]) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) return code.fastcall_4(self.space, self, args_w[0], args_w[1], args_w[2], args_w[3]) elif (nargs | PyCode.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) if nargs < 5: new_frame = self.space.createframe(code, self.w_func_globals, self) for i in funccallunrolling: if i < nargs: new_frame.locals_cells_stack_w[i] = args_w[i] > return new_frame.run() interpreter\function.py:118: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_override...ild\pypy\module\_cffi_backend\test\test_recompiler.py:2097]', line 1> at line 4 def run(self): """Start this frame's execution.""" if self.getcode().co_flags & pycode.CO_GENERATOR: from pypy.interpreter.generator import GeneratorIterator return GeneratorIterator(self) else: > return self.execute_frame() interpreter\pyframe.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_override...ild\pypy\module\_cffi_backend\test\test_recompiler.py:2097]', line 1> at line 4 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, executioncontext) except OperationError: raise except Exception as e: # general fall-back > raise self._convert_unexpected_exception(e) interpreter\pyframe.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_override...ild\pypy\module\_cffi_backend\test\test_recompiler.py:2097]', line 1> at line 4 e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def _convert_unexpected_exception(self, e): from pypy.interpreter import error > operr = error.get_converted_unexpected_exception(self.space, e) interpreter\pyframe.py:943: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_override...ild\pypy\module\_cffi_backend\test\test_recompiler.py:2097]', line 1> at line 4 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, > executioncontext) interpreter\pyframe.py:286: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_override...ild\pypy\module\_cffi_backend\test\test_recompiler.py:2097]', line 1> at line 4 pycode = <code object test_override_default_definition, file '[d:\pypy_stuff\buildbot64...-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:2097]', line 1> next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def dispatch(self, pycode, next_instr, ec): # For the sequel, force 'next_instr' to be unsigned for performance next_instr = r_uint(next_instr) co_code = pycode.co_code try: while True: > next_instr = self.handle_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:64: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_override...ild\pypy\module\_cffi_backend\test\test_recompiler.py:2097]', line 1> at line 4 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00\xcc=\x00|\x01\x00\xc9\x01\x0...02\x01s[\x00t\x02\x00\x82\x01\x00d\x00\x00S\xca\x01\x00k\x08\x00n\x02\x00\x02\x01s[\x00t\x02\x00\x82\x01\x00d\x00\x00S' next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def handle_bytecode(self, co_code, next_instr, ec): try: > next_instr = self.dispatch_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:71: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_override...ild\pypy\module\_cffi_backend\test\test_recompiler.py:2097]', line 1> at line 4 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00\xcc=\x00|\x01\x00\xc9\x01\x0...02\x01s[\x00t\x02\x00\x82\x01\x00d\x00\x00S\xca\x01\x00k\x08\x00n\x02\x00\x02\x01s[\x00t\x02\x00\x82\x01\x00d\x00\x00S' next_instr = 18L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> @jit.unroll_safe def dispatch_bytecode(self, co_code, next_instr, ec): while True: self.last_instr = intmask(next_instr) if jit.we_are_jitted(): if self.debugdata: ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) else: # Only reload next_instr from last_instr when something that # can modify it actually ran (trace function or action # dispatcher). In the common case (no trace, positive ticker) # next_instr is unchanged and the round-trip is skipped. _d = self.debugdata if ec.space.reverse_debugging or ( _d is not None and _d.w_f_trace is not None) or ( not we_are_translated() and 'bytecode_only_trace' in ec.__dict__): ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) actionflag = ec.space.actionflag if actionflag.decrement_ticker(TICK_COUNTER_STEP) < 0: actionflag.action_dispatcher(ec, self) next_instr = r_uint(self.last_instr) opcode = ord(co_code[next_instr]) next_instr += 1 if opcode >= HAVE_ARGUMENT: lo = ord(co_code[next_instr]) hi = ord(co_code[next_instr+1]) next_instr += 2 oparg = (hi * 256) | lo else: oparg = 0 # note: the structure of the code here is such that it makes # (after translation) a big "if/elif" chain, which is then # turned into a switch(). while opcode == opcodedesc.EXTENDED_ARG.index: opcode = ord(co_code[next_instr]) if opcode < HAVE_ARGUMENT: raise BytecodeCorruption lo = ord(co_code[next_instr+1]) hi = ord(co_code[next_instr+2]) next_instr += 3 oparg = (oparg * 65536) | (hi * 256) | lo if opcode == opcodedesc.RETURN_VALUE.index: if not self.blockstack_non_empty(): self.frame_finished_execution = True # for generators raise Return w_returnvalue = self.popvalue() block = self.unrollstack(SReturnValue.kind) if block is None: self.pushvalue(w_returnvalue) raise Return else: unroller = SReturnValue(w_returnvalue) next_instr = block.handle(self, unroller) return next_instr # now inside a 'finally' block elif opcode == opcodedesc.END_FINALLY.index: unroller = self.end_finally() if isinstance(unroller, SuspendedUnroller): # go on unrolling the stack block = self.unrollstack(unroller.kind) if block is None: w_result = unroller.nomoreblocks() self.pushvalue(w_result) raise Return else: next_instr = block.handle(self, unroller) return next_instr elif opcode == opcodedesc.JUMP_ABSOLUTE.index: return self.jump_absolute(oparg, ec) elif opcode == opcodedesc.BREAK_LOOP.index: next_instr = self.BREAK_LOOP(oparg, next_instr) elif opcode == opcodedesc.CONTINUE_LOOP.index: return self.CONTINUE_LOOP(oparg, next_instr) elif opcode == opcodedesc.FOR_ITER.index: next_instr = self.FOR_ITER(oparg, next_instr) elif opcode == opcodedesc.JUMP_FORWARD.index: next_instr = self.JUMP_FORWARD(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_FALSE_OR_POP.index: next_instr = self.JUMP_IF_FALSE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_NOT_DEBUG.index: next_instr = self.JUMP_IF_NOT_DEBUG(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_TRUE_OR_POP.index: next_instr = self.JUMP_IF_TRUE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_FALSE.index: next_instr = self.POP_JUMP_IF_FALSE(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_TRUE.index: next_instr = self.POP_JUMP_IF_TRUE(oparg, next_instr) elif opcode == opcodedesc.BINARY_ADD.index: self.BINARY_ADD(oparg, next_instr) elif opcode == opcodedesc.BINARY_AND.index: self.BINARY_AND(oparg, next_instr) elif opcode == opcodedesc.BINARY_DIVIDE.index: self.BINARY_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_FLOOR_DIVIDE.index: self.BINARY_FLOOR_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_LSHIFT.index: self.BINARY_LSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_MODULO.index: self.BINARY_MODULO(oparg, next_instr) elif opcode == opcodedesc.BINARY_MULTIPLY.index: self.BINARY_MULTIPLY(oparg, next_instr) elif opcode == opcodedesc.BINARY_OR.index: self.BINARY_OR(oparg, next_instr) elif opcode == opcodedesc.BINARY_POWER.index: self.BINARY_POWER(oparg, next_instr) elif opcode == opcodedesc.BINARY_RSHIFT.index: self.BINARY_RSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBSCR.index: self.BINARY_SUBSCR(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBTRACT.index: self.BINARY_SUBTRACT(oparg, next_instr) elif opcode == opcodedesc.BINARY_TRUE_DIVIDE.index: self.BINARY_TRUE_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_XOR.index: self.BINARY_XOR(oparg, next_instr) elif opcode == opcodedesc.BUILD_CLASS.index: self.BUILD_CLASS(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST.index: self.BUILD_LIST(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST_FROM_ARG.index: self.BUILD_LIST_FROM_ARG(oparg, next_instr) elif opcode == opcodedesc.BUILD_MAP.index: self.BUILD_MAP(oparg, next_instr) elif opcode == opcodedesc.BUILD_SET.index: self.BUILD_SET(oparg, next_instr) elif opcode == opcodedesc.BUILD_SLICE.index: self.BUILD_SLICE(oparg, next_instr) elif opcode == opcodedesc.BUILD_TUPLE.index: self.BUILD_TUPLE(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION.index: self.CALL_FUNCTION(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_KW.index: self.CALL_FUNCTION_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR.index: self.CALL_FUNCTION_VAR(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR_KW.index: self.CALL_FUNCTION_VAR_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_METHOD.index: > self.CALL_METHOD(oparg, next_instr) interpreter\pyopcode.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ f = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_override...ild\pypy\module\_cffi_backend\test\test_recompiler.py:2097]', line 1> at line 4 oparg = 3, ignored = (18L,), n_args = 3, n_kwargs = 0, w_self = None @jit.unroll_safe def CALL_METHOD(f, oparg, *ignored): # opargs contains the arg, and kwarg count, excluding the implicit 'self' n_args = oparg & 0xff n_kwargs = (oparg >> 8) & 0xff w_self = f.peekvalue_maybe_none(n_args + (2 * n_kwargs)) n = n_args + (w_self is not None) if not n_kwargs: w_callable = f.peekvalue(n_args + (2 * n_kwargs) + 1) w_result = f.space.call_valuestack( > w_callable, n, f, methodcall=w_self is not None, dropvalues=n_args + 2) objspace\std\callmethod.py:96: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_override...ild\pypy\module\_cffi_backend\test\test_recompiler.py:2097]', line 1> at line 4 dropvalues = 5, methodcall = False def call_valuestack(self, w_func, nargs, frame, dropvalues, methodcall=False): # methodcall is only used for better error messages in argument.py from pypy.interpreter.function import Function, Method, is_builtin_code if frame.get_is_being_profiled() and is_builtin_code(w_func): # XXX: this code is copied&pasted :-( from the slow path below # call_valuestack(). args = frame.make_arguments(nargs) frame.dropvalues(dropvalues) return self.call_args_and_c_profile(frame, w_func, args) if not self.config.objspace.disable_call_speedhacks: # start of hack for performance if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: w_func = w_func.w_function # reuse callable stack place for w_inst frame.settopvalue(w_inst, nargs) nargs += 1 methodcall = True elif nargs > 0 and ( self.abstract_isinstance_w(frame.peekvalue(nargs-1), # :-( w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): return w_func.funccall_valuestack( > nargs, frame, methodcall=methodcall, dropvalues=dropvalues) interpreter\baseobjspace.py:1243: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_override...ild\pypy\module\_cffi_backend\test\test_recompiler.py:2097]', line 1> at line 4 dropvalues = 5, methodcall = False def funccall_valuestack(self, nargs, frame, dropvalues, methodcall=False): # speed hack # methodcall is only for better error messages from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit # if (jit.we_are_jitted() and code is self.space._code_of_sys_exc_info and nargs == 0): frame.dropvalues(dropvalues) from pypy.module.sys.vm import exc_info_direct return exc_info_direct(self.space, frame) # fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: f_0 = frame.peekvalue(0) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, f_0) elif nargs == 2: f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, f_1, f_0) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) frame.dropvalues(dropvalues) return code.fastcall_3(self.space, self, f_2, f_1, f_0) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) f_3 = frame.peekvalue(3) frame.dropvalues(dropvalues) return code.fastcall_4(self.space, self, f_3, f_2, f_1, f_0) elif (nargs | Code.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) return self._flat_pycall(code, nargs, frame, dropvalues) elif fast_natural_arity & Code.FLATPYCALL: natural_arity = fast_natural_arity & 0xff if natural_arity > nargs >= natural_arity - len(self.defs_w): assert isinstance(code, PyCode) return self._flat_pycall_defaults(code, nargs, frame, natural_arity - nargs, dropvalues) elif fast_natural_arity == Code.PASSTHROUGHARGS1 and nargs >= 1: assert isinstance(code, gateway.BuiltinCodePassThroughArguments1) w_obj = frame.peekvalue(nargs-1) args = frame.make_arguments(nargs-1) frame.dropvalues(dropvalues) return code.funcrun_obj(self, w_obj, args) args = frame.make_arguments(nargs, methodcall=methodcall) frame.dropvalues(dropvalues) > return self.call_args(args) interpreter\function.py:190: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('\n typedef long int16_t, char16_t;\n '..._BytesObject('test_override_default_definition'), W_BytesObject('\n ')]) def call_args(self, args): # delegate activation to code > w_res = self.getcode().funcrun(self, args) interpreter\function.py:68: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('\n typedef long int16_t, char16_t;\n '..._BytesObject('test_override_default_definition'), W_BytesObject('\n ')]) def funcrun(self, func, args): > return BuiltinCode.funcrun_obj(self, func, None, args) interpreter\gateway.py:781: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('\n typedef long int16_t, char16_t;\n '..._BytesObject('test_override_default_definition'), W_BytesObject('\n ')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: w_result = activation._run(space, scope_w) except DescrMismatch: if w_obj is not None: args = args.prepend(w_obj) return self._type_unwrap_mismatch(space, args) except Exception as e: > self.handle_exception(space, e) interpreter\gateway.py:795: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> space = StdObjSpace e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def handle_exception(self, space, e): try: if not we_are_translated(): raise raise e except OperationError: raise except Exception as e: # general fall-back from pypy.interpreter import error > raise error.get_converted_unexpected_exception(space, e) interpreter\gateway.py:819: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('\n typedef long int16_t, char16_t;\n '..._BytesObject('test_override_default_definition'), W_BytesObject('\n ')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: > w_result = activation._run(space, scope_w) interpreter\gateway.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinActivation_UwS_ObjSpace_text_text_text_W_Root_W_Root_W_Root_int_W_Root object at 0x000002791c13af38> space = StdObjSpace scope_w = [W_BytesObject('\n typedef long int16_t, char16_t;\n '), W_BytesObject('test_override_default_definition'), W_BytesObject('\n '), None, None, None, ...] def _run(self, space, scope_w): > return self.behavior(space, space.text_w(scope_w[0]), space.text_w(scope_w[1]), space.text_w(scope_w[2]), scope_w[3], scope_w[4], scope_w[5], space.gateway_int_w(scope_w[6]), scope_w[7]) <3152-codegen d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\rpython\tool\sourcetools.py:200>:3: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace cdef = '\n typedef long int16_t, char16_t;\n ' module_name = '_CFFI_test_override_default_definition', source = '\n ' w_includes = None, w_extra_source = None, w_min_version = None, packed = 0 w_extra_compile_args = None @unwrap_spec(cdef='text', module_name='text', source='text', packed=int) def prepare(space, cdef, module_name, source, w_includes=None, w_extra_source=None, w_min_version=None, packed=False, w_extra_compile_args=None): try: import cffi from cffi import FFI # <== the system one, which from cffi import recompiler # needs to be at least cffi 1.0.4 from cffi import ffiplatform except ImportError: pytest.skip("system cffi module not found or older than 1.0.0") if w_min_version is None: min_version = (1, 4, 0) else: min_version = tuple(space.unwrap(w_min_version)) if cffi.__version_info__ < min_version: pytest.skip("system cffi module needs to be at least %s, got %s" % ( min_version, cffi.__version_info__)) space.appexec([], """(): import _cffi_backend # force it to be initialized """) includes = [] if w_includes: includes += space.unpackiterable(w_includes) assert module_name.startswith('test_') module_name = '_CFFI_' + module_name rdir = udir.ensure('recompiler', dir=1) rdir.join('Python.h').write( '#include <stdio.h>\n' '#define PYPY_VERSION XX\n' '#define PyMODINIT_FUNC /*exported*/ void\n' ) path = module_name.replace('.', os.sep) if '.' in module_name: subrdir = rdir.join(module_name[:module_name.index('.')]) os.mkdir(str(subrdir)) else: subrdir = rdir c_file = str(rdir.join('%s.c' % path)) ffi = FFI() for include_ffi_object in includes: ffi.include(include_ffi_object._test_recompiler_source_ffi) ffi.cdef(cdef, packed=packed) ffi.set_source(module_name, source) ffi.emit_c_code(c_file) base_module_name = module_name.split('.')[-1] sources = [] if w_extra_source is not None: sources.append(space.str_w(w_extra_source)) kwargs = {} # GCC 14 promotes -Wincompatible-pointer-types from a warning to an error # by default, which breaks cffi's intentionally-mismatched field-check # probes (e.g. test_misdeclared_field_1). Keep it a warning so the module # compiles and cffi's runtime checks can run. extra = ['-Wno-error=incompatible-pointer-types'] if w_extra_compile_args is not None: extra = extra + space.unwrap(w_extra_compile_args) kwargs['extra_compile_args'] = extra ext = ffiplatform.get_extension(c_file, module_name, include_dirs=[str(rdir)], export_symbols=['_cffi_pypyinit_' + base_module_name], sources=sources, **kwargs) > ffiplatform.compile(str(rdir), ext) module\_cffi_backend\test\test_recompiler.py:86: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x0000027925667ea0> compiler_verbose = 0, debug = None def compile(tmpdir, ext, compiler_verbose=0, debug=None): """Compile a C extension module using distutils.""" saved_environ = os.environ.copy() try: > outputfilename = _build(tmpdir, ext, compiler_verbose, debug) d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x0000027925667ea0> compiler_verbose = 0, debug = 0 def _build(tmpdir, ext, compiler_verbose=0, debug=None): # XXX compact but horrible :-( from cffi._shimmed_dist_utils import Distribution, CompileError, LinkError, set_threshold, set_verbosity dist = Distribution({'ext_modules': [ext]}) dist.parse_config_files() options = dist.get_option_dict('build_ext') if debug is None: debug = sys.flags.debug options['debug'] = ('ffiplatform', debug) options['force'] = ('ffiplatform', True) options['build_lib'] = ('ffiplatform', tmpdir) options['build_temp'] = ('ffiplatform', tmpdir) # try: old_level = set_threshold(0) or 0 try: set_verbosity(compiler_verbose) dist.run_command('build_ext') cmd_obj = dist.get_command_obj('build_ext') [soname] = cmd_obj.get_outputs() finally: set_threshold(old_level) except (CompileError, LinkError) as e: > raise VerificationError('%s: %s' % (e.__class__.__name__, e)) E VerificationError: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2 d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:54: VerificationError ---------------------------- Captured stdout call ----------------------------- generating d:\systemtemp\pytest\usession-main-595\recompiler\_CFFI_test_override_default_definition.c ---------------------------- Captured stderr call ----------------------------- cl : Command line error D8021 : invalid numeric argument '/Wno-error=incompatible-pointer-types' ________________ AppTestRecompiler.test_char16_char32_plain_c _________________ self = <CallInfo when='call' exception: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2> func = <function <lambda> at 0x000002792a548188>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ..\_pytest\runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ..\_pytest\runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_char16_char32_plain_c'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_char16_char32_plain_c'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ..\_pytest\vendored_packages\pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00000279153616a8> hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_char16_char32_plain_c'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_char16_char32_plain_c'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ..\_pytest\vendored_packages\pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_char16_char32_plain_c'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_char16_char32_plain_c'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ..\_pytest\vendored_packages\pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_char16_char32_plain_c'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791aba90d8> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...32_plain_c'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027927475a60> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027927475a60> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...32_plain_c'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_char16_char32_plain_c'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791aba9088> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...32_plain_c'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027927475a20> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x0000027927475a20> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...32_plain_c'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_char16_char32_plain_c'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ..\_pytest\vendored_packages\pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_char16_char32_plain_c'> def pytest_runtest_call(item): try: > item.runtest() ..\_pytest\runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_char16_char32_plain_c'> def runtest(self): target = self.obj if self.config.option.runappdirect: return target() space = target.im_self.space filename = self._getdynfilename(target) func = app2interp_temp(target.im_func, filename=filename) w_instance = self.parent.w_instance > self.execute_appex(space, func, space, w_instance) tool\pytest\apptest.py:89: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_char16_char32_plain_c'>, space = StdObjSpace target = <function test_char16_char32_plain_c at 0x000002792a548200> args = (StdObjSpace, <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>) def execute_appex(self, space, target, *args): self.space = space try: > target(*args) tool\pytest\apptest.py:30: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) w_func = <Function test_char16_char32_plain_c> args = <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8> def appcaller(space, *args_w): if not isinstance(space, ObjSpace): raise TypeError("first argument must be a space instance.") # the last argument can be an Arguments w_func = self.wget(space, name) if not args_w: return space.call_function(w_func) else: args = args_w[-1] assert args is not None if not isinstance(args, Arguments): > return space.call_function(w_func, *args_w) interpreter\gateway.py:1227: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <Function test_char16_char32_plain_c> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) nargs = 1, Function = <class 'pypy.interpreter.function.Function'> Method = <class 'pypy.interpreter.function.Method'> def call_function(self, w_func, *args_w): nargs = len(args_w) # used for pruning funccall versions if not self.config.objspace.disable_call_speedhacks and nargs < 5: # start of hack for performance from pypy.interpreter.function import Function, Method if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: if nargs < 4: func = w_func.w_function if isinstance(func, Function): return func.funccall(w_inst, *args_w) elif args_w and ( self.abstract_isinstance_w(args_w[0], w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): > return w_func.funccall(*args_w) interpreter\baseobjspace.py:1210: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <Function test_char16_char32_plain_c> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) gateway = <module 'pypy.interpreter.gateway' from 'd:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\interpreter\\gateway.pyc'> PyCode = <class 'pypy.interpreter.pycode.PyCode'> code = <code object test_char16_char32_plain_c, file '[d:\pypy_stuff\buildbot64\slave...-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:2104]', line 1> def funccall(self, *args_w): # speed hack from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit nargs = len(args_w) fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, args_w[0]) elif nargs == 2: assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, args_w[0], args_w[1]) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) return code.fastcall_3(self.space, self, args_w[0], args_w[1], args_w[2]) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) return code.fastcall_4(self.space, self, args_w[0], args_w[1], args_w[2], args_w[3]) elif (nargs | PyCode.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) if nargs < 5: new_frame = self.space.createframe(code, self.w_func_globals, self) for i in funccallunrolling: if i < nargs: new_frame.locals_cells_stack_w[i] = args_w[i] > return new_frame.run() interpreter\function.py:118: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_char16_c...ld\pypy\module\_cffi_backend\test\test_recompiler.py:2104]', line 1> at line 13 def run(self): """Start this frame's execution.""" if self.getcode().co_flags & pycode.CO_GENERATOR: from pypy.interpreter.generator import GeneratorIterator return GeneratorIterator(self) else: > return self.execute_frame() interpreter\pyframe.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_char16_c...ld\pypy\module\_cffi_backend\test\test_recompiler.py:2104]', line 1> at line 13 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, executioncontext) except OperationError: raise except Exception as e: # general fall-back > raise self._convert_unexpected_exception(e) interpreter\pyframe.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_char16_c...ld\pypy\module\_cffi_backend\test\test_recompiler.py:2104]', line 1> at line 13 e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def _convert_unexpected_exception(self, e): from pypy.interpreter import error > operr = error.get_converted_unexpected_exception(self.space, e) interpreter\pyframe.py:943: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_char16_c...ld\pypy\module\_cffi_backend\test\test_recompiler.py:2104]', line 1> at line 13 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, > executioncontext) interpreter\pyframe.py:286: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_char16_c...ld\pypy\module\_cffi_backend\test\test_recompiler.py:2104]', line 1> at line 13 pycode = <code object test_char16_char32_plain_c, file '[d:\pypy_stuff\buildbot64\slave...-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:2104]', line 1> next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def dispatch(self, pycode, next_instr, ec): # For the sequel, force 'next_instr' to be unsigned for performance next_instr = r_uint(next_instr) co_code = pycode.co_code try: while True: > next_instr = self.handle_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:64: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_char16_c...ld\pypy\module\_cffi_backend\test\test_recompiler.py:2104]', line 1> at line 13 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00d\x04\x00d\x05\x00\xca\x03\x01\\\x02\x00}\x01\x00}\x02\x00\xcc\x1b\x0...\x05\x00|\x02\x00j\x01\x00d\n\x00\x83\x03\x00\x01t\x04\x00t\x05\x00|\x02\x00j\x03\x00d\n\x00\x83\x03\x00\x01d\x00\x00S' next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def handle_bytecode(self, co_code, next_instr, ec): try: > next_instr = self.dispatch_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:71: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_char16_c...ld\pypy\module\_cffi_backend\test\test_recompiler.py:2104]', line 1> at line 13 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00d\x04\x00d\x05\x00\xca\x03\x01\\\x02\x00}\x01\x00}\x02\x00\xcc\x1b\x0...\x05\x00|\x02\x00j\x01\x00d\n\x00\x83\x03\x00\x01t\x04\x00t\x05\x00|\x02\x00j\x03\x00d\n\x00\x83\x03\x00\x01d\x00\x00S' next_instr = 24L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> @jit.unroll_safe def dispatch_bytecode(self, co_code, next_instr, ec): while True: self.last_instr = intmask(next_instr) if jit.we_are_jitted(): if self.debugdata: ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) else: # Only reload next_instr from last_instr when something that # can modify it actually ran (trace function or action # dispatcher). In the common case (no trace, positive ticker) # next_instr is unchanged and the round-trip is skipped. _d = self.debugdata if ec.space.reverse_debugging or ( _d is not None and _d.w_f_trace is not None) or ( not we_are_translated() and 'bytecode_only_trace' in ec.__dict__): ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) actionflag = ec.space.actionflag if actionflag.decrement_ticker(TICK_COUNTER_STEP) < 0: actionflag.action_dispatcher(ec, self) next_instr = r_uint(self.last_instr) opcode = ord(co_code[next_instr]) next_instr += 1 if opcode >= HAVE_ARGUMENT: lo = ord(co_code[next_instr]) hi = ord(co_code[next_instr+1]) next_instr += 2 oparg = (hi * 256) | lo else: oparg = 0 # note: the structure of the code here is such that it makes # (after translation) a big "if/elif" chain, which is then # turned into a switch(). while opcode == opcodedesc.EXTENDED_ARG.index: opcode = ord(co_code[next_instr]) if opcode < HAVE_ARGUMENT: raise BytecodeCorruption lo = ord(co_code[next_instr+1]) hi = ord(co_code[next_instr+2]) next_instr += 3 oparg = (oparg * 65536) | (hi * 256) | lo if opcode == opcodedesc.RETURN_VALUE.index: if not self.blockstack_non_empty(): self.frame_finished_execution = True # for generators raise Return w_returnvalue = self.popvalue() block = self.unrollstack(SReturnValue.kind) if block is None: self.pushvalue(w_returnvalue) raise Return else: unroller = SReturnValue(w_returnvalue) next_instr = block.handle(self, unroller) return next_instr # now inside a 'finally' block elif opcode == opcodedesc.END_FINALLY.index: unroller = self.end_finally() if isinstance(unroller, SuspendedUnroller): # go on unrolling the stack block = self.unrollstack(unroller.kind) if block is None: w_result = unroller.nomoreblocks() self.pushvalue(w_result) raise Return else: next_instr = block.handle(self, unroller) return next_instr elif opcode == opcodedesc.JUMP_ABSOLUTE.index: return self.jump_absolute(oparg, ec) elif opcode == opcodedesc.BREAK_LOOP.index: next_instr = self.BREAK_LOOP(oparg, next_instr) elif opcode == opcodedesc.CONTINUE_LOOP.index: return self.CONTINUE_LOOP(oparg, next_instr) elif opcode == opcodedesc.FOR_ITER.index: next_instr = self.FOR_ITER(oparg, next_instr) elif opcode == opcodedesc.JUMP_FORWARD.index: next_instr = self.JUMP_FORWARD(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_FALSE_OR_POP.index: next_instr = self.JUMP_IF_FALSE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_NOT_DEBUG.index: next_instr = self.JUMP_IF_NOT_DEBUG(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_TRUE_OR_POP.index: next_instr = self.JUMP_IF_TRUE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_FALSE.index: next_instr = self.POP_JUMP_IF_FALSE(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_TRUE.index: next_instr = self.POP_JUMP_IF_TRUE(oparg, next_instr) elif opcode == opcodedesc.BINARY_ADD.index: self.BINARY_ADD(oparg, next_instr) elif opcode == opcodedesc.BINARY_AND.index: self.BINARY_AND(oparg, next_instr) elif opcode == opcodedesc.BINARY_DIVIDE.index: self.BINARY_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_FLOOR_DIVIDE.index: self.BINARY_FLOOR_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_LSHIFT.index: self.BINARY_LSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_MODULO.index: self.BINARY_MODULO(oparg, next_instr) elif opcode == opcodedesc.BINARY_MULTIPLY.index: self.BINARY_MULTIPLY(oparg, next_instr) elif opcode == opcodedesc.BINARY_OR.index: self.BINARY_OR(oparg, next_instr) elif opcode == opcodedesc.BINARY_POWER.index: self.BINARY_POWER(oparg, next_instr) elif opcode == opcodedesc.BINARY_RSHIFT.index: self.BINARY_RSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBSCR.index: self.BINARY_SUBSCR(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBTRACT.index: self.BINARY_SUBTRACT(oparg, next_instr) elif opcode == opcodedesc.BINARY_TRUE_DIVIDE.index: self.BINARY_TRUE_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_XOR.index: self.BINARY_XOR(oparg, next_instr) elif opcode == opcodedesc.BUILD_CLASS.index: self.BUILD_CLASS(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST.index: self.BUILD_LIST(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST_FROM_ARG.index: self.BUILD_LIST_FROM_ARG(oparg, next_instr) elif opcode == opcodedesc.BUILD_MAP.index: self.BUILD_MAP(oparg, next_instr) elif opcode == opcodedesc.BUILD_SET.index: self.BUILD_SET(oparg, next_instr) elif opcode == opcodedesc.BUILD_SLICE.index: self.BUILD_SLICE(oparg, next_instr) elif opcode == opcodedesc.BUILD_TUPLE.index: self.BUILD_TUPLE(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION.index: self.CALL_FUNCTION(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_KW.index: self.CALL_FUNCTION_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR.index: self.CALL_FUNCTION_VAR(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR_KW.index: self.CALL_FUNCTION_VAR_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_METHOD.index: > self.CALL_METHOD(oparg, next_instr) interpreter\pyopcode.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ f = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_char16_c...ld\pypy\module\_cffi_backend\test\test_recompiler.py:2104]', line 1> at line 13 oparg = 259, ignored = (24L,), n_args = 3, n_kwargs = -1, w_self = None @jit.unroll_safe def CALL_METHOD(f, oparg, *ignored): # opargs contains the arg, and kwarg count, excluding the implicit 'self' n_args = oparg & 0xff n_kwargs = (oparg >> 8) & 0xff w_self = f.peekvalue_maybe_none(n_args + (2 * n_kwargs)) n = n_args + (w_self is not None) if not n_kwargs: w_callable = f.peekvalue(n_args + (2 * n_kwargs) + 1) w_result = f.space.call_valuestack( w_callable, n, f, methodcall=w_self is not None, dropvalues=n_args + 2) else: keywords = [None] * n_kwargs keywords_w = [None] * n_kwargs while True: n_kwargs -= 1 if n_kwargs < 0: break w_value = f.popvalue() w_key = f.popvalue() key = f.space.text_w(w_key) keywords[n_kwargs] = key keywords_w[n_kwargs] = w_value arguments = f.popvalues(n) # includes w_self if it is not None args = f.argument_factory( arguments, keywords, keywords_w, None, None, methodcall=w_self is not None) if w_self is None: f.popvalue_maybe_none() # removes w_self, which is None w_callable = f.popvalue() if f.get_is_being_profiled() and function.is_builtin_code(w_callable): w_result = f.space.call_args_and_c_profile(f, w_callable, args) else: > w_result = f.space.call_args(w_callable, args) objspace\std\callmethod.py:120: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace, w_obj = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('\n char16_t foo_2bytes(char16_t);\n ...in_version'], [W_TupleObject(W_IntObject(1), W_IntObject(11), W_IntObject(0))]) def call_args(space, w_obj, args): # two special cases for performance if isinstance(w_obj, Function): > return w_obj.call_args(args) objspace\descroperation.py:186: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('\n char16_t foo_2bytes(char16_t);\n ...in_version'], [W_TupleObject(W_IntObject(1), W_IntObject(11), W_IntObject(0))]) def call_args(self, args): # delegate activation to code > w_res = self.getcode().funcrun(self, args) interpreter\function.py:68: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('\n char16_t foo_2bytes(char16_t);\n ...in_version'], [W_TupleObject(W_IntObject(1), W_IntObject(11), W_IntObject(0))]) def funcrun(self, func, args): > return BuiltinCode.funcrun_obj(self, func, None, args) interpreter\gateway.py:781: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('\n char16_t foo_2bytes(char16_t);\n ...in_version'], [W_TupleObject(W_IntObject(1), W_IntObject(11), W_IntObject(0))]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: w_result = activation._run(space, scope_w) except DescrMismatch: if w_obj is not None: args = args.prepend(w_obj) return self._type_unwrap_mismatch(space, args) except Exception as e: > self.handle_exception(space, e) interpreter\gateway.py:795: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> space = StdObjSpace e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def handle_exception(self, space, e): try: if not we_are_translated(): raise raise e except OperationError: raise except Exception as e: # general fall-back from pypy.interpreter import error > raise error.get_converted_unexpected_exception(space, e) interpreter\gateway.py:819: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('\n char16_t foo_2bytes(char16_t);\n ...in_version'], [W_TupleObject(W_IntObject(1), W_IntObject(11), W_IntObject(0))]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: > w_result = activation._run(space, scope_w) interpreter\gateway.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinActivation_UwS_ObjSpace_text_text_text_W_Root_W_Root_W_Root_int_W_Root object at 0x000002791c13af38> space = StdObjSpace scope_w = [W_BytesObject('\n char16_t foo_2bytes(char16_t);\n char32_t foo_4bytes(char32_t);\n '), ...urn (char32_t)(a + 42); }\n '), None, None, W_TupleObject(W_IntObject(1), W_IntObject(11), W_IntObject(0)), ...] def _run(self, space, scope_w): > return self.behavior(space, space.text_w(scope_w[0]), space.text_w(scope_w[1]), space.text_w(scope_w[2]), scope_w[3], scope_w[4], scope_w[5], space.gateway_int_w(scope_w[6]), scope_w[7]) <3152-codegen d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\rpython\tool\sourcetools.py:200>:3: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace cdef = '\n char16_t foo_2bytes(char16_t);\n char32_t foo_4bytes(char32_t);\n ' module_name = '_CFFI_test_char16_char32_type_nocpp' source = '\n #if !defined(__cplusplus) || (!defined(_LIBCPP_VERSION) && __cplusplus < 201103L)\n typedef uint_lea..._t a) { return (char16_t)(a + 42); }\n char32_t foo_4bytes(char32_t a) { return (char32_t)(a + 42); }\n ' w_includes = None, w_extra_source = None w_min_version = W_TupleObject(W_IntObject(1), W_IntObject(11), W_IntObject(0)) packed = 0, w_extra_compile_args = None @unwrap_spec(cdef='text', module_name='text', source='text', packed=int) def prepare(space, cdef, module_name, source, w_includes=None, w_extra_source=None, w_min_version=None, packed=False, w_extra_compile_args=None): try: import cffi from cffi import FFI # <== the system one, which from cffi import recompiler # needs to be at least cffi 1.0.4 from cffi import ffiplatform except ImportError: pytest.skip("system cffi module not found or older than 1.0.0") if w_min_version is None: min_version = (1, 4, 0) else: min_version = tuple(space.unwrap(w_min_version)) if cffi.__version_info__ < min_version: pytest.skip("system cffi module needs to be at least %s, got %s" % ( min_version, cffi.__version_info__)) space.appexec([], """(): import _cffi_backend # force it to be initialized """) includes = [] if w_includes: includes += space.unpackiterable(w_includes) assert module_name.startswith('test_') module_name = '_CFFI_' + module_name rdir = udir.ensure('recompiler', dir=1) rdir.join('Python.h').write( '#include <stdio.h>\n' '#define PYPY_VERSION XX\n' '#define PyMODINIT_FUNC /*exported*/ void\n' ) path = module_name.replace('.', os.sep) if '.' in module_name: subrdir = rdir.join(module_name[:module_name.index('.')]) os.mkdir(str(subrdir)) else: subrdir = rdir c_file = str(rdir.join('%s.c' % path)) ffi = FFI() for include_ffi_object in includes: ffi.include(include_ffi_object._test_recompiler_source_ffi) ffi.cdef(cdef, packed=packed) ffi.set_source(module_name, source) ffi.emit_c_code(c_file) base_module_name = module_name.split('.')[-1] sources = [] if w_extra_source is not None: sources.append(space.str_w(w_extra_source)) kwargs = {} # GCC 14 promotes -Wincompatible-pointer-types from a warning to an error # by default, which breaks cffi's intentionally-mismatched field-check # probes (e.g. test_misdeclared_field_1). Keep it a warning so the module # compiles and cffi's runtime checks can run. extra = ['-Wno-error=incompatible-pointer-types'] if w_extra_compile_args is not None: extra = extra + space.unwrap(w_extra_compile_args) kwargs['extra_compile_args'] = extra ext = ffiplatform.get_extension(c_file, module_name, include_dirs=[str(rdir)], export_symbols=['_cffi_pypyinit_' + base_module_name], sources=sources, **kwargs) > ffiplatform.compile(str(rdir), ext) module\_cffi_backend\test\test_recompiler.py:86: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x000002792cb0efe0> compiler_verbose = 0, debug = None def compile(tmpdir, ext, compiler_verbose=0, debug=None): """Compile a C extension module using distutils.""" saved_environ = os.environ.copy() try: > outputfilename = _build(tmpdir, ext, compiler_verbose, debug) d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x000002792cb0efe0> compiler_verbose = 0, debug = 0 def _build(tmpdir, ext, compiler_verbose=0, debug=None): # XXX compact but horrible :-( from cffi._shimmed_dist_utils import Distribution, CompileError, LinkError, set_threshold, set_verbosity dist = Distribution({'ext_modules': [ext]}) dist.parse_config_files() options = dist.get_option_dict('build_ext') if debug is None: debug = sys.flags.debug options['debug'] = ('ffiplatform', debug) options['force'] = ('ffiplatform', True) options['build_lib'] = ('ffiplatform', tmpdir) options['build_temp'] = ('ffiplatform', tmpdir) # try: old_level = set_threshold(0) or 0 try: set_verbosity(compiler_verbose) dist.run_command('build_ext') cmd_obj = dist.get_command_obj('build_ext') [soname] = cmd_obj.get_outputs() finally: set_threshold(old_level) except (CompileError, LinkError) as e: > raise VerificationError('%s: %s' % (e.__class__.__name__, e)) E VerificationError: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2 d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:54: VerificationError ---------------------------- Captured stdout call ----------------------------- generating d:\systemtemp\pytest\usession-main-595\recompiler\_CFFI_test_char16_char32_type_nocpp.c ---------------------------- Captured stderr call ----------------------------- cl : Command line error D8021 : invalid numeric argument '/Wno-error=incompatible-pointer-types' _____________________ AppTestRecompiler.test_loader_spec ______________________ self = <CallInfo when='call' exception: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2> func = <function <lambda> at 0x000002792d5ae110>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ..\_pytest\runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ..\_pytest\runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_loader_spec'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_loader_spec'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ..\_pytest\vendored_packages\pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00000279153616a8> hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_loader_spec'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_loader_spec'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ..\_pytest\vendored_packages\pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_loader_spec'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_loader_spec'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ..\_pytest\vendored_packages\pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_loader_spec'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791fbf6bb0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...oader_spec'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792b9255e0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792b9255e0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...oader_spec'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_loader_spec'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791fbf6b60> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...oader_spec'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792b9255a0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792b9255a0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...oader_spec'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_loader_spec'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ..\_pytest\vendored_packages\pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_loader_spec'> def pytest_runtest_call(item): try: > item.runtest() ..\_pytest\runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_loader_spec'> def runtest(self): target = self.obj if self.config.option.runappdirect: return target() space = target.im_self.space filename = self._getdynfilename(target) func = app2interp_temp(target.im_func, filename=filename) w_instance = self.parent.w_instance > self.execute_appex(space, func, space, w_instance) tool\pytest\apptest.py:89: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_loader_spec'>, space = StdObjSpace target = <function test_loader_spec at 0x000002792d5ae188> args = (StdObjSpace, <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>) def execute_appex(self, space, target, *args): self.space = space try: > target(*args) tool\pytest\apptest.py:30: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) w_func = <Function test_loader_spec> args = <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8> def appcaller(space, *args_w): if not isinstance(space, ObjSpace): raise TypeError("first argument must be a space instance.") # the last argument can be an Arguments w_func = self.wget(space, name) if not args_w: return space.call_function(w_func) else: args = args_w[-1] assert args is not None if not isinstance(args, Arguments): > return space.call_function(w_func, *args_w) interpreter\gateway.py:1227: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <Function test_loader_spec> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) nargs = 1, Function = <class 'pypy.interpreter.function.Function'> Method = <class 'pypy.interpreter.function.Method'> def call_function(self, w_func, *args_w): nargs = len(args_w) # used for pruning funccall versions if not self.config.objspace.disable_call_speedhacks and nargs < 5: # start of hack for performance from pypy.interpreter.function import Function, Method if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: if nargs < 4: func = w_func.w_function if isinstance(func, Function): return func.funccall(w_inst, *args_w) elif args_w and ( self.abstract_isinstance_w(args_w[0], w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): > return w_func.funccall(*args_w) interpreter\baseobjspace.py:1210: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <Function test_loader_spec> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) gateway = <module 'pypy.interpreter.gateway' from 'd:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\interpreter\\gateway.pyc'> PyCode = <class 'pypy.interpreter.pycode.PyCode'> code = <code object test_loader_spec, file '[d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:2124]', line 1> def funccall(self, *args_w): # speed hack from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit nargs = len(args_w) fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, args_w[0]) elif nargs == 2: assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, args_w[0], args_w[1]) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) return code.fastcall_3(self.space, self, args_w[0], args_w[1], args_w[2]) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) return code.fastcall_4(self.space, self, args_w[0], args_w[1], args_w[2], args_w[3]) elif (nargs | PyCode.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) if nargs < 5: new_frame = self.space.createframe(code, self.w_func_globals, self) for i in funccallunrolling: if i < nargs: new_frame.locals_cells_stack_w[i] = args_w[i] > return new_frame.run() interpreter\function.py:118: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_loader_s...ild\pypy\module\_cffi_backend\test\test_recompiler.py:2124]', line 1> at line 3 def run(self): """Start this frame's execution.""" if self.getcode().co_flags & pycode.CO_GENERATOR: from pypy.interpreter.generator import GeneratorIterator return GeneratorIterator(self) else: > return self.execute_frame() interpreter\pyframe.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_loader_s...ild\pypy\module\_cffi_backend\test\test_recompiler.py:2124]', line 1> at line 3 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, executioncontext) except OperationError: raise except Exception as e: # general fall-back > raise self._convert_unexpected_exception(e) interpreter\pyframe.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_loader_s...ild\pypy\module\_cffi_backend\test\test_recompiler.py:2124]', line 1> at line 3 e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def _convert_unexpected_exception(self, e): from pypy.interpreter import error > operr = error.get_converted_unexpected_exception(self.space, e) interpreter\pyframe.py:943: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_loader_s...ild\pypy\module\_cffi_backend\test\test_recompiler.py:2124]', line 1> at line 3 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, > executioncontext) interpreter\pyframe.py:286: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_loader_s...ild\pypy\module\_cffi_backend\test\test_recompiler.py:2124]', line 1> at line 3 pycode = <code object test_loader_spec, file '[d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:2124]', line 1> next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def dispatch(self, pycode, next_instr, ec): # For the sequel, force 'next_instr' to be unsigned for performance next_instr = r_uint(next_instr) co_code = pycode.co_code try: while True: > next_instr = self.handle_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:64: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_loader_s...ild\pypy\module\_cffi_backend\test\test_recompiler.py:2124]', line 1> at line 3 co_code = 'd\x01\x00d\x00\x00l\x00\x00}\x01\x00|\x00\x00\xc9\x01\x00d\x02\x00d\x03\x00d\x02\x00\xca\x03\x00\\\x02\x00}\x02\x00}\...s\x81\x00t\x04\x00\x82\x01\x00\xcc\x15\x00|\x03\x00j\x06\x00d\x00\x00k\x08\x00s\x99\x00t\x04\x00\x82\x01\x00d\x00\x00S' next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def handle_bytecode(self, co_code, next_instr, ec): try: > next_instr = self.dispatch_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:71: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_loader_s...ild\pypy\module\_cffi_backend\test\test_recompiler.py:2124]', line 1> at line 3 co_code = 'd\x01\x00d\x00\x00l\x00\x00}\x01\x00|\x00\x00\xc9\x01\x00d\x02\x00d\x03\x00d\x02\x00\xca\x03\x00\\\x02\x00}\x02\x00}\...s\x81\x00t\x04\x00\x82\x01\x00\xcc\x15\x00|\x03\x00j\x06\x00d\x00\x00k\x08\x00s\x99\x00t\x04\x00\x82\x01\x00d\x00\x00S' next_instr = 30L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> @jit.unroll_safe def dispatch_bytecode(self, co_code, next_instr, ec): while True: self.last_instr = intmask(next_instr) if jit.we_are_jitted(): if self.debugdata: ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) else: # Only reload next_instr from last_instr when something that # can modify it actually ran (trace function or action # dispatcher). In the common case (no trace, positive ticker) # next_instr is unchanged and the round-trip is skipped. _d = self.debugdata if ec.space.reverse_debugging or ( _d is not None and _d.w_f_trace is not None) or ( not we_are_translated() and 'bytecode_only_trace' in ec.__dict__): ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) actionflag = ec.space.actionflag if actionflag.decrement_ticker(TICK_COUNTER_STEP) < 0: actionflag.action_dispatcher(ec, self) next_instr = r_uint(self.last_instr) opcode = ord(co_code[next_instr]) next_instr += 1 if opcode >= HAVE_ARGUMENT: lo = ord(co_code[next_instr]) hi = ord(co_code[next_instr+1]) next_instr += 2 oparg = (hi * 256) | lo else: oparg = 0 # note: the structure of the code here is such that it makes # (after translation) a big "if/elif" chain, which is then # turned into a switch(). while opcode == opcodedesc.EXTENDED_ARG.index: opcode = ord(co_code[next_instr]) if opcode < HAVE_ARGUMENT: raise BytecodeCorruption lo = ord(co_code[next_instr+1]) hi = ord(co_code[next_instr+2]) next_instr += 3 oparg = (oparg * 65536) | (hi * 256) | lo if opcode == opcodedesc.RETURN_VALUE.index: if not self.blockstack_non_empty(): self.frame_finished_execution = True # for generators raise Return w_returnvalue = self.popvalue() block = self.unrollstack(SReturnValue.kind) if block is None: self.pushvalue(w_returnvalue) raise Return else: unroller = SReturnValue(w_returnvalue) next_instr = block.handle(self, unroller) return next_instr # now inside a 'finally' block elif opcode == opcodedesc.END_FINALLY.index: unroller = self.end_finally() if isinstance(unroller, SuspendedUnroller): # go on unrolling the stack block = self.unrollstack(unroller.kind) if block is None: w_result = unroller.nomoreblocks() self.pushvalue(w_result) raise Return else: next_instr = block.handle(self, unroller) return next_instr elif opcode == opcodedesc.JUMP_ABSOLUTE.index: return self.jump_absolute(oparg, ec) elif opcode == opcodedesc.BREAK_LOOP.index: next_instr = self.BREAK_LOOP(oparg, next_instr) elif opcode == opcodedesc.CONTINUE_LOOP.index: return self.CONTINUE_LOOP(oparg, next_instr) elif opcode == opcodedesc.FOR_ITER.index: next_instr = self.FOR_ITER(oparg, next_instr) elif opcode == opcodedesc.JUMP_FORWARD.index: next_instr = self.JUMP_FORWARD(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_FALSE_OR_POP.index: next_instr = self.JUMP_IF_FALSE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_NOT_DEBUG.index: next_instr = self.JUMP_IF_NOT_DEBUG(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_TRUE_OR_POP.index: next_instr = self.JUMP_IF_TRUE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_FALSE.index: next_instr = self.POP_JUMP_IF_FALSE(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_TRUE.index: next_instr = self.POP_JUMP_IF_TRUE(oparg, next_instr) elif opcode == opcodedesc.BINARY_ADD.index: self.BINARY_ADD(oparg, next_instr) elif opcode == opcodedesc.BINARY_AND.index: self.BINARY_AND(oparg, next_instr) elif opcode == opcodedesc.BINARY_DIVIDE.index: self.BINARY_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_FLOOR_DIVIDE.index: self.BINARY_FLOOR_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_LSHIFT.index: self.BINARY_LSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_MODULO.index: self.BINARY_MODULO(oparg, next_instr) elif opcode == opcodedesc.BINARY_MULTIPLY.index: self.BINARY_MULTIPLY(oparg, next_instr) elif opcode == opcodedesc.BINARY_OR.index: self.BINARY_OR(oparg, next_instr) elif opcode == opcodedesc.BINARY_POWER.index: self.BINARY_POWER(oparg, next_instr) elif opcode == opcodedesc.BINARY_RSHIFT.index: self.BINARY_RSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBSCR.index: self.BINARY_SUBSCR(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBTRACT.index: self.BINARY_SUBTRACT(oparg, next_instr) elif opcode == opcodedesc.BINARY_TRUE_DIVIDE.index: self.BINARY_TRUE_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_XOR.index: self.BINARY_XOR(oparg, next_instr) elif opcode == opcodedesc.BUILD_CLASS.index: self.BUILD_CLASS(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST.index: self.BUILD_LIST(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST_FROM_ARG.index: self.BUILD_LIST_FROM_ARG(oparg, next_instr) elif opcode == opcodedesc.BUILD_MAP.index: self.BUILD_MAP(oparg, next_instr) elif opcode == opcodedesc.BUILD_SET.index: self.BUILD_SET(oparg, next_instr) elif opcode == opcodedesc.BUILD_SLICE.index: self.BUILD_SLICE(oparg, next_instr) elif opcode == opcodedesc.BUILD_TUPLE.index: self.BUILD_TUPLE(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION.index: self.CALL_FUNCTION(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_KW.index: self.CALL_FUNCTION_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR.index: self.CALL_FUNCTION_VAR(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR_KW.index: self.CALL_FUNCTION_VAR_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_METHOD.index: > self.CALL_METHOD(oparg, next_instr) interpreter\pyopcode.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ f = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_loader_s...ild\pypy\module\_cffi_backend\test\test_recompiler.py:2124]', line 1> at line 3 oparg = 3, ignored = (30L,), n_args = 3, n_kwargs = 0, w_self = None @jit.unroll_safe def CALL_METHOD(f, oparg, *ignored): # opargs contains the arg, and kwarg count, excluding the implicit 'self' n_args = oparg & 0xff n_kwargs = (oparg >> 8) & 0xff w_self = f.peekvalue_maybe_none(n_args + (2 * n_kwargs)) n = n_args + (w_self is not None) if not n_kwargs: w_callable = f.peekvalue(n_args + (2 * n_kwargs) + 1) w_result = f.space.call_valuestack( > w_callable, n, f, methodcall=w_self is not None, dropvalues=n_args + 2) objspace\std\callmethod.py:96: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_loader_s...ild\pypy\module\_cffi_backend\test\test_recompiler.py:2124]', line 1> at line 3 dropvalues = 5, methodcall = False def call_valuestack(self, w_func, nargs, frame, dropvalues, methodcall=False): # methodcall is only used for better error messages in argument.py from pypy.interpreter.function import Function, Method, is_builtin_code if frame.get_is_being_profiled() and is_builtin_code(w_func): # XXX: this code is copied&pasted :-( from the slow path below # call_valuestack(). args = frame.make_arguments(nargs) frame.dropvalues(dropvalues) return self.call_args_and_c_profile(frame, w_func, args) if not self.config.objspace.disable_call_speedhacks: # start of hack for performance if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: w_func = w_func.w_function # reuse callable stack place for w_inst frame.settopvalue(w_inst, nargs) nargs += 1 methodcall = True elif nargs > 0 and ( self.abstract_isinstance_w(frame.peekvalue(nargs-1), # :-( w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): return w_func.funccall_valuestack( > nargs, frame, methodcall=methodcall, dropvalues=dropvalues) interpreter\baseobjspace.py:1243: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_loader_s...ild\pypy\module\_cffi_backend\test\test_recompiler.py:2124]', line 1> at line 3 dropvalues = 5, methodcall = False def funccall_valuestack(self, nargs, frame, dropvalues, methodcall=False): # speed hack # methodcall is only for better error messages from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit # if (jit.we_are_jitted() and code is self.space._code_of_sys_exc_info and nargs == 0): frame.dropvalues(dropvalues) from pypy.module.sys.vm import exc_info_direct return exc_info_direct(self.space, frame) # fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: f_0 = frame.peekvalue(0) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, f_0) elif nargs == 2: f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, f_1, f_0) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) frame.dropvalues(dropvalues) return code.fastcall_3(self.space, self, f_2, f_1, f_0) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) f_3 = frame.peekvalue(3) frame.dropvalues(dropvalues) return code.fastcall_4(self.space, self, f_3, f_2, f_1, f_0) elif (nargs | Code.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) return self._flat_pycall(code, nargs, frame, dropvalues) elif fast_natural_arity & Code.FLATPYCALL: natural_arity = fast_natural_arity & 0xff if natural_arity > nargs >= natural_arity - len(self.defs_w): assert isinstance(code, PyCode) return self._flat_pycall_defaults(code, nargs, frame, natural_arity - nargs, dropvalues) elif fast_natural_arity == Code.PASSTHROUGHARGS1 and nargs >= 1: assert isinstance(code, gateway.BuiltinCodePassThroughArguments1) w_obj = frame.peekvalue(nargs-1) args = frame.make_arguments(nargs-1) frame.dropvalues(dropvalues) return code.funcrun_obj(self, w_obj, args) args = frame.make_arguments(nargs, methodcall=methodcall) frame.dropvalues(dropvalues) > return self.call_args(args) interpreter\function.py:190: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject(''), W_BytesObject('test_loader_spec'), W_BytesObject('')]) def call_args(self, args): # delegate activation to code > w_res = self.getcode().funcrun(self, args) interpreter\function.py:68: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject(''), W_BytesObject('test_loader_spec'), W_BytesObject('')]) def funcrun(self, func, args): > return BuiltinCode.funcrun_obj(self, func, None, args) interpreter\gateway.py:781: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject(''), W_BytesObject('test_loader_spec'), W_BytesObject('')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: w_result = activation._run(space, scope_w) except DescrMismatch: if w_obj is not None: args = args.prepend(w_obj) return self._type_unwrap_mismatch(space, args) except Exception as e: > self.handle_exception(space, e) interpreter\gateway.py:795: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> space = StdObjSpace e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def handle_exception(self, space, e): try: if not we_are_translated(): raise raise e except OperationError: raise except Exception as e: # general fall-back from pypy.interpreter import error > raise error.get_converted_unexpected_exception(space, e) interpreter\gateway.py:819: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject(''), W_BytesObject('test_loader_spec'), W_BytesObject('')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: > w_result = activation._run(space, scope_w) interpreter\gateway.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinActivation_UwS_ObjSpace_text_text_text_W_Root_W_Root_W_Root_int_W_Root object at 0x000002791c13af38> space = StdObjSpace scope_w = [W_BytesObject(''), W_BytesObject('test_loader_spec'), W_BytesObject(''), None, None, None, ...] def _run(self, space, scope_w): > return self.behavior(space, space.text_w(scope_w[0]), space.text_w(scope_w[1]), space.text_w(scope_w[2]), scope_w[3], scope_w[4], scope_w[5], space.gateway_int_w(scope_w[6]), scope_w[7]) <3152-codegen d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\rpython\tool\sourcetools.py:200>:3: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace, cdef = '', module_name = '_CFFI_test_loader_spec' source = '', w_includes = None, w_extra_source = None, w_min_version = None packed = 0, w_extra_compile_args = None @unwrap_spec(cdef='text', module_name='text', source='text', packed=int) def prepare(space, cdef, module_name, source, w_includes=None, w_extra_source=None, w_min_version=None, packed=False, w_extra_compile_args=None): try: import cffi from cffi import FFI # <== the system one, which from cffi import recompiler # needs to be at least cffi 1.0.4 from cffi import ffiplatform except ImportError: pytest.skip("system cffi module not found or older than 1.0.0") if w_min_version is None: min_version = (1, 4, 0) else: min_version = tuple(space.unwrap(w_min_version)) if cffi.__version_info__ < min_version: pytest.skip("system cffi module needs to be at least %s, got %s" % ( min_version, cffi.__version_info__)) space.appexec([], """(): import _cffi_backend # force it to be initialized """) includes = [] if w_includes: includes += space.unpackiterable(w_includes) assert module_name.startswith('test_') module_name = '_CFFI_' + module_name rdir = udir.ensure('recompiler', dir=1) rdir.join('Python.h').write( '#include <stdio.h>\n' '#define PYPY_VERSION XX\n' '#define PyMODINIT_FUNC /*exported*/ void\n' ) path = module_name.replace('.', os.sep) if '.' in module_name: subrdir = rdir.join(module_name[:module_name.index('.')]) os.mkdir(str(subrdir)) else: subrdir = rdir c_file = str(rdir.join('%s.c' % path)) ffi = FFI() for include_ffi_object in includes: ffi.include(include_ffi_object._test_recompiler_source_ffi) ffi.cdef(cdef, packed=packed) ffi.set_source(module_name, source) ffi.emit_c_code(c_file) base_module_name = module_name.split('.')[-1] sources = [] if w_extra_source is not None: sources.append(space.str_w(w_extra_source)) kwargs = {} # GCC 14 promotes -Wincompatible-pointer-types from a warning to an error # by default, which breaks cffi's intentionally-mismatched field-check # probes (e.g. test_misdeclared_field_1). Keep it a warning so the module # compiles and cffi's runtime checks can run. extra = ['-Wno-error=incompatible-pointer-types'] if w_extra_compile_args is not None: extra = extra + space.unwrap(w_extra_compile_args) kwargs['extra_compile_args'] = extra ext = ffiplatform.get_extension(c_file, module_name, include_dirs=[str(rdir)], export_symbols=['_cffi_pypyinit_' + base_module_name], sources=sources, **kwargs) > ffiplatform.compile(str(rdir), ext) module\_cffi_backend\test\test_recompiler.py:86: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x000002792ca7a8e0> compiler_verbose = 0, debug = None def compile(tmpdir, ext, compiler_verbose=0, debug=None): """Compile a C extension module using distutils.""" saved_environ = os.environ.copy() try: > outputfilename = _build(tmpdir, ext, compiler_verbose, debug) d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x000002792ca7a8e0> compiler_verbose = 0, debug = 0 def _build(tmpdir, ext, compiler_verbose=0, debug=None): # XXX compact but horrible :-( from cffi._shimmed_dist_utils import Distribution, CompileError, LinkError, set_threshold, set_verbosity dist = Distribution({'ext_modules': [ext]}) dist.parse_config_files() options = dist.get_option_dict('build_ext') if debug is None: debug = sys.flags.debug options['debug'] = ('ffiplatform', debug) options['force'] = ('ffiplatform', True) options['build_lib'] = ('ffiplatform', tmpdir) options['build_temp'] = ('ffiplatform', tmpdir) # try: old_level = set_threshold(0) or 0 try: set_verbosity(compiler_verbose) dist.run_command('build_ext') cmd_obj = dist.get_command_obj('build_ext') [soname] = cmd_obj.get_outputs() finally: set_threshold(old_level) except (CompileError, LinkError) as e: > raise VerificationError('%s: %s' % (e.__class__.__name__, e)) E VerificationError: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2 d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:54: VerificationError ---------------------------- Captured stdout call ----------------------------- generating d:\systemtemp\pytest\usession-main-595\recompiler\_CFFI_test_loader_spec.c ---------------------------- Captured stderr call ----------------------------- cl : Command line error D8021 : invalid numeric argument '/Wno-error=incompatible-pointer-types' _______________________ AppTestRecompiler.test_release ________________________ self = <CallInfo when='call' exception: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2> func = <function <lambda> at 0x00000279200314c0>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ..\_pytest\runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ..\_pytest\runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_release'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_release'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ..\_pytest\vendored_packages\pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00000279153616a8> hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_release'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_release'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ..\_pytest\vendored_packages\pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_release'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_release'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ..\_pytest\vendored_packages\pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_release'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00000279190f2c28> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...st_release'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792b9a50a0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792b9a50a0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...st_release'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_release'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00000279190f2818> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...st_release'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792b9a5060> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792b9a5060> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...st_release'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_release'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ..\_pytest\vendored_packages\pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_release'> def pytest_runtest_call(item): try: > item.runtest() ..\_pytest\runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_release'> def runtest(self): target = self.obj if self.config.option.runappdirect: return target() space = target.im_self.space filename = self._getdynfilename(target) func = app2interp_temp(target.im_func, filename=filename) w_instance = self.parent.w_instance > self.execute_appex(space, func, space, w_instance) tool\pytest\apptest.py:89: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_release'>, space = StdObjSpace target = <function test_release at 0x0000027920031538> args = (StdObjSpace, <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>) def execute_appex(self, space, target, *args): self.space = space try: > target(*args) tool\pytest\apptest.py:30: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) w_func = <Function test_release> args = <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8> def appcaller(space, *args_w): if not isinstance(space, ObjSpace): raise TypeError("first argument must be a space instance.") # the last argument can be an Arguments w_func = self.wget(space, name) if not args_w: return space.call_function(w_func) else: args = args_w[-1] assert args is not None if not isinstance(args, Arguments): > return space.call_function(w_func, *args_w) interpreter\gateway.py:1227: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <Function test_release> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) nargs = 1, Function = <class 'pypy.interpreter.function.Function'> Method = <class 'pypy.interpreter.function.Method'> def call_function(self, w_func, *args_w): nargs = len(args_w) # used for pruning funccall versions if not self.config.objspace.disable_call_speedhacks and nargs < 5: # start of hack for performance from pypy.interpreter.function import Function, Method if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: if nargs < 4: func = w_func.w_function if isinstance(func, Function): return func.funccall(w_inst, *args_w) elif args_w and ( self.abstract_isinstance_w(args_w[0], w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): > return w_func.funccall(*args_w) interpreter\baseobjspace.py:1210: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <Function test_release> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) gateway = <module 'pypy.interpreter.gateway' from 'd:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\interpreter\\gateway.pyc'> PyCode = <class 'pypy.interpreter.pycode.PyCode'> code = <code object test_release, file '[d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:2134]', line 1> def funccall(self, *args_w): # speed hack from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit nargs = len(args_w) fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, args_w[0]) elif nargs == 2: assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, args_w[0], args_w[1]) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) return code.fastcall_3(self.space, self, args_w[0], args_w[1], args_w[2]) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) return code.fastcall_4(self.space, self, args_w[0], args_w[1], args_w[2], args_w[3]) elif (nargs | PyCode.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) if nargs < 5: new_frame = self.space.createframe(code, self.w_func_globals, self) for i in funccallunrolling: if i < nargs: new_frame.locals_cells_stack_w[i] = args_w[i] > return new_frame.run() interpreter\function.py:118: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_release,...ild\pypy\module\_cffi_backend\test\test_recompiler.py:2134]', line 1> at line 2 def run(self): """Start this frame's execution.""" if self.getcode().co_flags & pycode.CO_GENERATOR: from pypy.interpreter.generator import GeneratorIterator return GeneratorIterator(self) else: > return self.execute_frame() interpreter\pyframe.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_release,...ild\pypy\module\_cffi_backend\test\test_recompiler.py:2134]', line 1> at line 2 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, executioncontext) except OperationError: raise except Exception as e: # general fall-back > raise self._convert_unexpected_exception(e) interpreter\pyframe.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_release,...ild\pypy\module\_cffi_backend\test\test_recompiler.py:2134]', line 1> at line 2 e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def _convert_unexpected_exception(self, e): from pypy.interpreter import error > operr = error.get_converted_unexpected_exception(self.space, e) interpreter\pyframe.py:943: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_release,...ild\pypy\module\_cffi_backend\test\test_recompiler.py:2134]', line 1> at line 2 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, > executioncontext) interpreter\pyframe.py:286: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_release,...ild\pypy\module\_cffi_backend\test\test_recompiler.py:2134]', line 1> at line 2 pycode = <code object test_release, file '[d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:2134]', line 1> next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def dispatch(self, pycode, next_instr, ec): # For the sequel, force 'next_instr' to be unsigned for performance next_instr = r_uint(next_instr) co_code = pycode.co_code try: while True: > next_instr = self.handle_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:64: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_release,...ild\pypy\module\_cffi_backend\test\test_recompiler.py:2134]', line 1> at line 2 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x01\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00|\x01\x00\xc9\x01\x00d\x03\x0...x02\x00}\x03\x00|\x01\x00\xc9\x02\x00|\x03\x00\xca\x01\x00\x01|\x01\x00\xc9\x02\x00|\x03\x00\xca\x01\x00\x01d\x00\x00S' next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def handle_bytecode(self, co_code, next_instr, ec): try: > next_instr = self.dispatch_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:71: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_release,...ild\pypy\module\_cffi_backend\test\test_recompiler.py:2134]', line 1> at line 2 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x01\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00|\x01\x00\xc9\x01\x00d\x03\x0...x02\x00}\x03\x00|\x01\x00\xc9\x02\x00|\x03\x00\xca\x01\x00\x01|\x01\x00\xc9\x02\x00|\x03\x00\xca\x01\x00\x01d\x00\x00S' next_instr = 18L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> @jit.unroll_safe def dispatch_bytecode(self, co_code, next_instr, ec): while True: self.last_instr = intmask(next_instr) if jit.we_are_jitted(): if self.debugdata: ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) else: # Only reload next_instr from last_instr when something that # can modify it actually ran (trace function or action # dispatcher). In the common case (no trace, positive ticker) # next_instr is unchanged and the round-trip is skipped. _d = self.debugdata if ec.space.reverse_debugging or ( _d is not None and _d.w_f_trace is not None) or ( not we_are_translated() and 'bytecode_only_trace' in ec.__dict__): ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) actionflag = ec.space.actionflag if actionflag.decrement_ticker(TICK_COUNTER_STEP) < 0: actionflag.action_dispatcher(ec, self) next_instr = r_uint(self.last_instr) opcode = ord(co_code[next_instr]) next_instr += 1 if opcode >= HAVE_ARGUMENT: lo = ord(co_code[next_instr]) hi = ord(co_code[next_instr+1]) next_instr += 2 oparg = (hi * 256) | lo else: oparg = 0 # note: the structure of the code here is such that it makes # (after translation) a big "if/elif" chain, which is then # turned into a switch(). while opcode == opcodedesc.EXTENDED_ARG.index: opcode = ord(co_code[next_instr]) if opcode < HAVE_ARGUMENT: raise BytecodeCorruption lo = ord(co_code[next_instr+1]) hi = ord(co_code[next_instr+2]) next_instr += 3 oparg = (oparg * 65536) | (hi * 256) | lo if opcode == opcodedesc.RETURN_VALUE.index: if not self.blockstack_non_empty(): self.frame_finished_execution = True # for generators raise Return w_returnvalue = self.popvalue() block = self.unrollstack(SReturnValue.kind) if block is None: self.pushvalue(w_returnvalue) raise Return else: unroller = SReturnValue(w_returnvalue) next_instr = block.handle(self, unroller) return next_instr # now inside a 'finally' block elif opcode == opcodedesc.END_FINALLY.index: unroller = self.end_finally() if isinstance(unroller, SuspendedUnroller): # go on unrolling the stack block = self.unrollstack(unroller.kind) if block is None: w_result = unroller.nomoreblocks() self.pushvalue(w_result) raise Return else: next_instr = block.handle(self, unroller) return next_instr elif opcode == opcodedesc.JUMP_ABSOLUTE.index: return self.jump_absolute(oparg, ec) elif opcode == opcodedesc.BREAK_LOOP.index: next_instr = self.BREAK_LOOP(oparg, next_instr) elif opcode == opcodedesc.CONTINUE_LOOP.index: return self.CONTINUE_LOOP(oparg, next_instr) elif opcode == opcodedesc.FOR_ITER.index: next_instr = self.FOR_ITER(oparg, next_instr) elif opcode == opcodedesc.JUMP_FORWARD.index: next_instr = self.JUMP_FORWARD(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_FALSE_OR_POP.index: next_instr = self.JUMP_IF_FALSE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_NOT_DEBUG.index: next_instr = self.JUMP_IF_NOT_DEBUG(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_TRUE_OR_POP.index: next_instr = self.JUMP_IF_TRUE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_FALSE.index: next_instr = self.POP_JUMP_IF_FALSE(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_TRUE.index: next_instr = self.POP_JUMP_IF_TRUE(oparg, next_instr) elif opcode == opcodedesc.BINARY_ADD.index: self.BINARY_ADD(oparg, next_instr) elif opcode == opcodedesc.BINARY_AND.index: self.BINARY_AND(oparg, next_instr) elif opcode == opcodedesc.BINARY_DIVIDE.index: self.BINARY_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_FLOOR_DIVIDE.index: self.BINARY_FLOOR_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_LSHIFT.index: self.BINARY_LSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_MODULO.index: self.BINARY_MODULO(oparg, next_instr) elif opcode == opcodedesc.BINARY_MULTIPLY.index: self.BINARY_MULTIPLY(oparg, next_instr) elif opcode == opcodedesc.BINARY_OR.index: self.BINARY_OR(oparg, next_instr) elif opcode == opcodedesc.BINARY_POWER.index: self.BINARY_POWER(oparg, next_instr) elif opcode == opcodedesc.BINARY_RSHIFT.index: self.BINARY_RSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBSCR.index: self.BINARY_SUBSCR(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBTRACT.index: self.BINARY_SUBTRACT(oparg, next_instr) elif opcode == opcodedesc.BINARY_TRUE_DIVIDE.index: self.BINARY_TRUE_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_XOR.index: self.BINARY_XOR(oparg, next_instr) elif opcode == opcodedesc.BUILD_CLASS.index: self.BUILD_CLASS(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST.index: self.BUILD_LIST(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST_FROM_ARG.index: self.BUILD_LIST_FROM_ARG(oparg, next_instr) elif opcode == opcodedesc.BUILD_MAP.index: self.BUILD_MAP(oparg, next_instr) elif opcode == opcodedesc.BUILD_SET.index: self.BUILD_SET(oparg, next_instr) elif opcode == opcodedesc.BUILD_SLICE.index: self.BUILD_SLICE(oparg, next_instr) elif opcode == opcodedesc.BUILD_TUPLE.index: self.BUILD_TUPLE(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION.index: self.CALL_FUNCTION(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_KW.index: self.CALL_FUNCTION_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR.index: self.CALL_FUNCTION_VAR(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR_KW.index: self.CALL_FUNCTION_VAR_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_METHOD.index: > self.CALL_METHOD(oparg, next_instr) interpreter\pyopcode.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ f = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_release,...ild\pypy\module\_cffi_backend\test\test_recompiler.py:2134]', line 1> at line 2 oparg = 3, ignored = (18L,), n_args = 3, n_kwargs = 0, w_self = None @jit.unroll_safe def CALL_METHOD(f, oparg, *ignored): # opargs contains the arg, and kwarg count, excluding the implicit 'self' n_args = oparg & 0xff n_kwargs = (oparg >> 8) & 0xff w_self = f.peekvalue_maybe_none(n_args + (2 * n_kwargs)) n = n_args + (w_self is not None) if not n_kwargs: w_callable = f.peekvalue(n_args + (2 * n_kwargs) + 1) w_result = f.space.call_valuestack( > w_callable, n, f, methodcall=w_self is not None, dropvalues=n_args + 2) objspace\std\callmethod.py:96: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_release,...ild\pypy\module\_cffi_backend\test\test_recompiler.py:2134]', line 1> at line 2 dropvalues = 5, methodcall = False def call_valuestack(self, w_func, nargs, frame, dropvalues, methodcall=False): # methodcall is only used for better error messages in argument.py from pypy.interpreter.function import Function, Method, is_builtin_code if frame.get_is_being_profiled() and is_builtin_code(w_func): # XXX: this code is copied&pasted :-( from the slow path below # call_valuestack(). args = frame.make_arguments(nargs) frame.dropvalues(dropvalues) return self.call_args_and_c_profile(frame, w_func, args) if not self.config.objspace.disable_call_speedhacks: # start of hack for performance if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: w_func = w_func.w_function # reuse callable stack place for w_inst frame.settopvalue(w_inst, nargs) nargs += 1 methodcall = True elif nargs > 0 and ( self.abstract_isinstance_w(frame.peekvalue(nargs-1), # :-( w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): return w_func.funccall_valuestack( > nargs, frame, methodcall=methodcall, dropvalues=dropvalues) interpreter\baseobjspace.py:1243: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_release,...ild\pypy\module\_cffi_backend\test\test_recompiler.py:2134]', line 1> at line 2 dropvalues = 5, methodcall = False def funccall_valuestack(self, nargs, frame, dropvalues, methodcall=False): # speed hack # methodcall is only for better error messages from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit # if (jit.we_are_jitted() and code is self.space._code_of_sys_exc_info and nargs == 0): frame.dropvalues(dropvalues) from pypy.module.sys.vm import exc_info_direct return exc_info_direct(self.space, frame) # fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: f_0 = frame.peekvalue(0) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, f_0) elif nargs == 2: f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, f_1, f_0) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) frame.dropvalues(dropvalues) return code.fastcall_3(self.space, self, f_2, f_1, f_0) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) f_3 = frame.peekvalue(3) frame.dropvalues(dropvalues) return code.fastcall_4(self.space, self, f_3, f_2, f_1, f_0) elif (nargs | Code.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) return self._flat_pycall(code, nargs, frame, dropvalues) elif fast_natural_arity & Code.FLATPYCALL: natural_arity = fast_natural_arity & 0xff if natural_arity > nargs >= natural_arity - len(self.defs_w): assert isinstance(code, PyCode) return self._flat_pycall_defaults(code, nargs, frame, natural_arity - nargs, dropvalues) elif fast_natural_arity == Code.PASSTHROUGHARGS1 and nargs >= 1: assert isinstance(code, gateway.BuiltinCodePassThroughArguments1) w_obj = frame.peekvalue(nargs-1) args = frame.make_arguments(nargs-1) frame.dropvalues(dropvalues) return code.funcrun_obj(self, w_obj, args) args = frame.make_arguments(nargs, methodcall=methodcall) frame.dropvalues(dropvalues) > return self.call_args(args) interpreter\function.py:190: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject(''), W_BytesObject('test_release'), W_BytesObject('')]) def call_args(self, args): # delegate activation to code > w_res = self.getcode().funcrun(self, args) interpreter\function.py:68: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject(''), W_BytesObject('test_release'), W_BytesObject('')]) def funcrun(self, func, args): > return BuiltinCode.funcrun_obj(self, func, None, args) interpreter\gateway.py:781: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject(''), W_BytesObject('test_release'), W_BytesObject('')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: w_result = activation._run(space, scope_w) except DescrMismatch: if w_obj is not None: args = args.prepend(w_obj) return self._type_unwrap_mismatch(space, args) except Exception as e: > self.handle_exception(space, e) interpreter\gateway.py:795: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> space = StdObjSpace e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def handle_exception(self, space, e): try: if not we_are_translated(): raise raise e except OperationError: raise except Exception as e: # general fall-back from pypy.interpreter import error > raise error.get_converted_unexpected_exception(space, e) interpreter\gateway.py:819: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject(''), W_BytesObject('test_release'), W_BytesObject('')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: > w_result = activation._run(space, scope_w) interpreter\gateway.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinActivation_UwS_ObjSpace_text_text_text_W_Root_W_Root_W_Root_int_W_Root object at 0x000002791c13af38> space = StdObjSpace scope_w = [W_BytesObject(''), W_BytesObject('test_release'), W_BytesObject(''), None, None, None, ...] def _run(self, space, scope_w): > return self.behavior(space, space.text_w(scope_w[0]), space.text_w(scope_w[1]), space.text_w(scope_w[2]), scope_w[3], scope_w[4], scope_w[5], space.gateway_int_w(scope_w[6]), scope_w[7]) <3152-codegen d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\rpython\tool\sourcetools.py:200>:3: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace, cdef = '', module_name = '_CFFI_test_release', source = '' w_includes = None, w_extra_source = None, w_min_version = None, packed = 0 w_extra_compile_args = None @unwrap_spec(cdef='text', module_name='text', source='text', packed=int) def prepare(space, cdef, module_name, source, w_includes=None, w_extra_source=None, w_min_version=None, packed=False, w_extra_compile_args=None): try: import cffi from cffi import FFI # <== the system one, which from cffi import recompiler # needs to be at least cffi 1.0.4 from cffi import ffiplatform except ImportError: pytest.skip("system cffi module not found or older than 1.0.0") if w_min_version is None: min_version = (1, 4, 0) else: min_version = tuple(space.unwrap(w_min_version)) if cffi.__version_info__ < min_version: pytest.skip("system cffi module needs to be at least %s, got %s" % ( min_version, cffi.__version_info__)) space.appexec([], """(): import _cffi_backend # force it to be initialized """) includes = [] if w_includes: includes += space.unpackiterable(w_includes) assert module_name.startswith('test_') module_name = '_CFFI_' + module_name rdir = udir.ensure('recompiler', dir=1) rdir.join('Python.h').write( '#include <stdio.h>\n' '#define PYPY_VERSION XX\n' '#define PyMODINIT_FUNC /*exported*/ void\n' ) path = module_name.replace('.', os.sep) if '.' in module_name: subrdir = rdir.join(module_name[:module_name.index('.')]) os.mkdir(str(subrdir)) else: subrdir = rdir c_file = str(rdir.join('%s.c' % path)) ffi = FFI() for include_ffi_object in includes: ffi.include(include_ffi_object._test_recompiler_source_ffi) ffi.cdef(cdef, packed=packed) ffi.set_source(module_name, source) ffi.emit_c_code(c_file) base_module_name = module_name.split('.')[-1] sources = [] if w_extra_source is not None: sources.append(space.str_w(w_extra_source)) kwargs = {} # GCC 14 promotes -Wincompatible-pointer-types from a warning to an error # by default, which breaks cffi's intentionally-mismatched field-check # probes (e.g. test_misdeclared_field_1). Keep it a warning so the module # compiles and cffi's runtime checks can run. extra = ['-Wno-error=incompatible-pointer-types'] if w_extra_compile_args is not None: extra = extra + space.unwrap(w_extra_compile_args) kwargs['extra_compile_args'] = extra ext = ffiplatform.get_extension(c_file, module_name, include_dirs=[str(rdir)], export_symbols=['_cffi_pypyinit_' + base_module_name], sources=sources, **kwargs) > ffiplatform.compile(str(rdir), ext) module\_cffi_backend\test\test_recompiler.py:86: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x0000027925b54160> compiler_verbose = 0, debug = None def compile(tmpdir, ext, compiler_verbose=0, debug=None): """Compile a C extension module using distutils.""" saved_environ = os.environ.copy() try: > outputfilename = _build(tmpdir, ext, compiler_verbose, debug) d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x0000027925b54160> compiler_verbose = 0, debug = 0 def _build(tmpdir, ext, compiler_verbose=0, debug=None): # XXX compact but horrible :-( from cffi._shimmed_dist_utils import Distribution, CompileError, LinkError, set_threshold, set_verbosity dist = Distribution({'ext_modules': [ext]}) dist.parse_config_files() options = dist.get_option_dict('build_ext') if debug is None: debug = sys.flags.debug options['debug'] = ('ffiplatform', debug) options['force'] = ('ffiplatform', True) options['build_lib'] = ('ffiplatform', tmpdir) options['build_temp'] = ('ffiplatform', tmpdir) # try: old_level = set_threshold(0) or 0 try: set_verbosity(compiler_verbose) dist.run_command('build_ext') cmd_obj = dist.get_command_obj('build_ext') [soname] = cmd_obj.get_outputs() finally: set_threshold(old_level) except (CompileError, LinkError) as e: > raise VerificationError('%s: %s' % (e.__class__.__name__, e)) E VerificationError: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2 d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:54: VerificationError ---------------------------- Captured stdout call ----------------------------- generating d:\systemtemp\pytest\usession-main-595\recompiler\_CFFI_test_release.c ---------------------------- Captured stderr call ----------------------------- cl : Command line error D8021 : invalid numeric argument '/Wno-error=incompatible-pointer-types' ________________ AppTestRecompiler.test_release_new_allocator _________________ self = <CallInfo when='call' exception: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2> func = <function <lambda> at 0x000002792d0124d0>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ..\_pytest\runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ..\_pytest\runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_release_new_allocator'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_release_new_allocator'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ..\_pytest\vendored_packages\pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00000279153616a8> hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_release_new_allocator'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_release_new_allocator'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ..\_pytest\vendored_packages\pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_release_new_allocator'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_release_new_allocator'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ..\_pytest\vendored_packages\pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_release_new_allocator'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00000279293724d0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i..._allocator'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792a571ea0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792a571ea0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i..._allocator'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_release_new_allocator'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x0000027929372480> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i..._allocator'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792a571e60> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792a571e60> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i..._allocator'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_release_new_allocator'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ..\_pytest\vendored_packages\pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_release_new_allocator'> def pytest_runtest_call(item): try: > item.runtest() ..\_pytest\runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_release_new_allocator'> def runtest(self): target = self.obj if self.config.option.runappdirect: return target() space = target.im_self.space filename = self._getdynfilename(target) func = app2interp_temp(target.im_func, filename=filename) w_instance = self.parent.w_instance > self.execute_appex(space, func, space, w_instance) tool\pytest\apptest.py:89: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_release_new_allocator'>, space = StdObjSpace target = <function test_release_new_allocator at 0x000002792d012cc8> args = (StdObjSpace, <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>) def execute_appex(self, space, target, *args): self.space = space try: > target(*args) tool\pytest\apptest.py:30: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) w_func = <Function test_release_new_allocator> args = <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8> def appcaller(space, *args_w): if not isinstance(space, ObjSpace): raise TypeError("first argument must be a space instance.") # the last argument can be an Arguments w_func = self.wget(space, name) if not args_w: return space.call_function(w_func) else: args = args_w[-1] assert args is not None if not isinstance(args, Arguments): > return space.call_function(w_func, *args_w) interpreter\gateway.py:1227: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <Function test_release_new_allocator> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) nargs = 1, Function = <class 'pypy.interpreter.function.Function'> Method = <class 'pypy.interpreter.function.Method'> def call_function(self, w_func, *args_w): nargs = len(args_w) # used for pruning funccall versions if not self.config.objspace.disable_call_speedhacks and nargs < 5: # start of hack for performance from pypy.interpreter.function import Function, Method if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: if nargs < 4: func = w_func.w_function if isinstance(func, Function): return func.funccall(w_inst, *args_w) elif args_w and ( self.abstract_isinstance_w(args_w[0], w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): > return w_func.funccall(*args_w) interpreter\baseobjspace.py:1210: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <Function test_release_new_allocator> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) gateway = <module 'pypy.interpreter.gateway' from 'd:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\interpreter\\gateway.pyc'> PyCode = <class 'pypy.interpreter.pycode.PyCode'> code = <code object test_release_new_allocator, file '[d:\pypy_stuff\buildbot64\slave...-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:2141]', line 1> def funccall(self, *args_w): # speed hack from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit nargs = len(args_w) fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, args_w[0]) elif nargs == 2: assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, args_w[0], args_w[1]) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) return code.fastcall_3(self.space, self, args_w[0], args_w[1], args_w[2]) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) return code.fastcall_4(self.space, self, args_w[0], args_w[1], args_w[2], args_w[3]) elif (nargs | PyCode.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) if nargs < 5: new_frame = self.space.createframe(code, self.w_func_globals, self) for i in funccallunrolling: if i < nargs: new_frame.locals_cells_stack_w[i] = args_w[i] > return new_frame.run() interpreter\function.py:118: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_release_...ild\pypy\module\_cffi_backend\test\test_recompiler.py:2141]', line 1> at line 4 def run(self): """Start this frame's execution.""" if self.getcode().co_flags & pycode.CO_GENERATOR: from pypy.interpreter.generator import GeneratorIterator return GeneratorIterator(self) else: > return self.execute_frame() interpreter\pyframe.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_release_...ild\pypy\module\_cffi_backend\test\test_recompiler.py:2141]', line 1> at line 4 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, executioncontext) except OperationError: raise except Exception as e: # general fall-back > raise self._convert_unexpected_exception(e) interpreter\pyframe.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_release_...ild\pypy\module\_cffi_backend\test\test_recompiler.py:2141]', line 1> at line 4 e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def _convert_unexpected_exception(self, e): from pypy.interpreter import error > operr = error.get_converted_unexpected_exception(self.space, e) interpreter\pyframe.py:943: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_release_...ild\pypy\module\_cffi_backend\test\test_recompiler.py:2141]', line 1> at line 4 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, > executioncontext) interpreter\pyframe.py:286: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_release_...ild\pypy\module\_cffi_backend\test\test_recompiler.py:2141]', line 1> at line 4 pycode = <code object test_release_new_allocator, file '[d:\pypy_stuff\buildbot64\slave...-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:2141]', line 1> next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def dispatch(self, pycode, next_instr, ec): # For the sequel, force 'next_instr' to be unsigned for performance next_instr = r_uint(next_instr) co_code = pycode.co_code try: while True: > next_instr = self.handle_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:64: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_release_...ild\pypy\module\_cffi_backend\test\test_recompiler.py:2141]', line 1> at line 4 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x01\x00\xca\x03\x00\\\x02\x00\x89\x00\x00}\x01\x00g\x00\x00\x89\x01\x00\x87\...5\x00\xca\x01\x00\x01\xcc\x18\x00\x88\x01\x00d\x0b\x00|\x05\x00g\x02\x00k\x02\x00sI\x01t\x02\x00\x82\x01\x00d\x00\x00S' next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def handle_bytecode(self, co_code, next_instr, ec): try: > next_instr = self.dispatch_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:71: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_release_...ild\pypy\module\_cffi_backend\test\test_recompiler.py:2141]', line 1> at line 4 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x01\x00\xca\x03\x00\\\x02\x00\x89\x00\x00}\x01\x00g\x00\x00\x89\x01\x00\x87\...5\x00\xca\x01\x00\x01\xcc\x18\x00\x88\x01\x00d\x0b\x00|\x05\x00g\x02\x00k\x02\x00sI\x01t\x02\x00\x82\x01\x00d\x00\x00S' next_instr = 18L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> @jit.unroll_safe def dispatch_bytecode(self, co_code, next_instr, ec): while True: self.last_instr = intmask(next_instr) if jit.we_are_jitted(): if self.debugdata: ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) else: # Only reload next_instr from last_instr when something that # can modify it actually ran (trace function or action # dispatcher). In the common case (no trace, positive ticker) # next_instr is unchanged and the round-trip is skipped. _d = self.debugdata if ec.space.reverse_debugging or ( _d is not None and _d.w_f_trace is not None) or ( not we_are_translated() and 'bytecode_only_trace' in ec.__dict__): ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) actionflag = ec.space.actionflag if actionflag.decrement_ticker(TICK_COUNTER_STEP) < 0: actionflag.action_dispatcher(ec, self) next_instr = r_uint(self.last_instr) opcode = ord(co_code[next_instr]) next_instr += 1 if opcode >= HAVE_ARGUMENT: lo = ord(co_code[next_instr]) hi = ord(co_code[next_instr+1]) next_instr += 2 oparg = (hi * 256) | lo else: oparg = 0 # note: the structure of the code here is such that it makes # (after translation) a big "if/elif" chain, which is then # turned into a switch(). while opcode == opcodedesc.EXTENDED_ARG.index: opcode = ord(co_code[next_instr]) if opcode < HAVE_ARGUMENT: raise BytecodeCorruption lo = ord(co_code[next_instr+1]) hi = ord(co_code[next_instr+2]) next_instr += 3 oparg = (oparg * 65536) | (hi * 256) | lo if opcode == opcodedesc.RETURN_VALUE.index: if not self.blockstack_non_empty(): self.frame_finished_execution = True # for generators raise Return w_returnvalue = self.popvalue() block = self.unrollstack(SReturnValue.kind) if block is None: self.pushvalue(w_returnvalue) raise Return else: unroller = SReturnValue(w_returnvalue) next_instr = block.handle(self, unroller) return next_instr # now inside a 'finally' block elif opcode == opcodedesc.END_FINALLY.index: unroller = self.end_finally() if isinstance(unroller, SuspendedUnroller): # go on unrolling the stack block = self.unrollstack(unroller.kind) if block is None: w_result = unroller.nomoreblocks() self.pushvalue(w_result) raise Return else: next_instr = block.handle(self, unroller) return next_instr elif opcode == opcodedesc.JUMP_ABSOLUTE.index: return self.jump_absolute(oparg, ec) elif opcode == opcodedesc.BREAK_LOOP.index: next_instr = self.BREAK_LOOP(oparg, next_instr) elif opcode == opcodedesc.CONTINUE_LOOP.index: return self.CONTINUE_LOOP(oparg, next_instr) elif opcode == opcodedesc.FOR_ITER.index: next_instr = self.FOR_ITER(oparg, next_instr) elif opcode == opcodedesc.JUMP_FORWARD.index: next_instr = self.JUMP_FORWARD(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_FALSE_OR_POP.index: next_instr = self.JUMP_IF_FALSE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_NOT_DEBUG.index: next_instr = self.JUMP_IF_NOT_DEBUG(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_TRUE_OR_POP.index: next_instr = self.JUMP_IF_TRUE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_FALSE.index: next_instr = self.POP_JUMP_IF_FALSE(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_TRUE.index: next_instr = self.POP_JUMP_IF_TRUE(oparg, next_instr) elif opcode == opcodedesc.BINARY_ADD.index: self.BINARY_ADD(oparg, next_instr) elif opcode == opcodedesc.BINARY_AND.index: self.BINARY_AND(oparg, next_instr) elif opcode == opcodedesc.BINARY_DIVIDE.index: self.BINARY_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_FLOOR_DIVIDE.index: self.BINARY_FLOOR_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_LSHIFT.index: self.BINARY_LSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_MODULO.index: self.BINARY_MODULO(oparg, next_instr) elif opcode == opcodedesc.BINARY_MULTIPLY.index: self.BINARY_MULTIPLY(oparg, next_instr) elif opcode == opcodedesc.BINARY_OR.index: self.BINARY_OR(oparg, next_instr) elif opcode == opcodedesc.BINARY_POWER.index: self.BINARY_POWER(oparg, next_instr) elif opcode == opcodedesc.BINARY_RSHIFT.index: self.BINARY_RSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBSCR.index: self.BINARY_SUBSCR(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBTRACT.index: self.BINARY_SUBTRACT(oparg, next_instr) elif opcode == opcodedesc.BINARY_TRUE_DIVIDE.index: self.BINARY_TRUE_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_XOR.index: self.BINARY_XOR(oparg, next_instr) elif opcode == opcodedesc.BUILD_CLASS.index: self.BUILD_CLASS(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST.index: self.BUILD_LIST(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST_FROM_ARG.index: self.BUILD_LIST_FROM_ARG(oparg, next_instr) elif opcode == opcodedesc.BUILD_MAP.index: self.BUILD_MAP(oparg, next_instr) elif opcode == opcodedesc.BUILD_SET.index: self.BUILD_SET(oparg, next_instr) elif opcode == opcodedesc.BUILD_SLICE.index: self.BUILD_SLICE(oparg, next_instr) elif opcode == opcodedesc.BUILD_TUPLE.index: self.BUILD_TUPLE(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION.index: self.CALL_FUNCTION(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_KW.index: self.CALL_FUNCTION_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR.index: self.CALL_FUNCTION_VAR(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR_KW.index: self.CALL_FUNCTION_VAR_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_METHOD.index: > self.CALL_METHOD(oparg, next_instr) interpreter\pyopcode.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ f = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_release_...ild\pypy\module\_cffi_backend\test\test_recompiler.py:2141]', line 1> at line 4 oparg = 3, ignored = (18L,), n_args = 3, n_kwargs = 0, w_self = None @jit.unroll_safe def CALL_METHOD(f, oparg, *ignored): # opargs contains the arg, and kwarg count, excluding the implicit 'self' n_args = oparg & 0xff n_kwargs = (oparg >> 8) & 0xff w_self = f.peekvalue_maybe_none(n_args + (2 * n_kwargs)) n = n_args + (w_self is not None) if not n_kwargs: w_callable = f.peekvalue(n_args + (2 * n_kwargs) + 1) w_result = f.space.call_valuestack( > w_callable, n, f, methodcall=w_self is not None, dropvalues=n_args + 2) objspace\std\callmethod.py:96: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_release_...ild\pypy\module\_cffi_backend\test\test_recompiler.py:2141]', line 1> at line 4 dropvalues = 5, methodcall = False def call_valuestack(self, w_func, nargs, frame, dropvalues, methodcall=False): # methodcall is only used for better error messages in argument.py from pypy.interpreter.function import Function, Method, is_builtin_code if frame.get_is_being_profiled() and is_builtin_code(w_func): # XXX: this code is copied&pasted :-( from the slow path below # call_valuestack(). args = frame.make_arguments(nargs) frame.dropvalues(dropvalues) return self.call_args_and_c_profile(frame, w_func, args) if not self.config.objspace.disable_call_speedhacks: # start of hack for performance if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: w_func = w_func.w_function # reuse callable stack place for w_inst frame.settopvalue(w_inst, nargs) nargs += 1 methodcall = True elif nargs > 0 and ( self.abstract_isinstance_w(frame.peekvalue(nargs-1), # :-( w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): return w_func.funccall_valuestack( > nargs, frame, methodcall=methodcall, dropvalues=dropvalues) interpreter\baseobjspace.py:1243: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_release_...ild\pypy\module\_cffi_backend\test\test_recompiler.py:2141]', line 1> at line 4 dropvalues = 5, methodcall = False def funccall_valuestack(self, nargs, frame, dropvalues, methodcall=False): # speed hack # methodcall is only for better error messages from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit # if (jit.we_are_jitted() and code is self.space._code_of_sys_exc_info and nargs == 0): frame.dropvalues(dropvalues) from pypy.module.sys.vm import exc_info_direct return exc_info_direct(self.space, frame) # fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: f_0 = frame.peekvalue(0) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, f_0) elif nargs == 2: f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, f_1, f_0) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) frame.dropvalues(dropvalues) return code.fastcall_3(self.space, self, f_2, f_1, f_0) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) f_3 = frame.peekvalue(3) frame.dropvalues(dropvalues) return code.fastcall_4(self.space, self, f_3, f_2, f_1, f_0) elif (nargs | Code.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) return self._flat_pycall(code, nargs, frame, dropvalues) elif fast_natural_arity & Code.FLATPYCALL: natural_arity = fast_natural_arity & 0xff if natural_arity > nargs >= natural_arity - len(self.defs_w): assert isinstance(code, PyCode) return self._flat_pycall_defaults(code, nargs, frame, natural_arity - nargs, dropvalues) elif fast_natural_arity == Code.PASSTHROUGHARGS1 and nargs >= 1: assert isinstance(code, gateway.BuiltinCodePassThroughArguments1) w_obj = frame.peekvalue(nargs-1) args = frame.make_arguments(nargs-1) frame.dropvalues(dropvalues) return code.funcrun_obj(self, w_obj, args) args = frame.make_arguments(nargs, methodcall=methodcall) frame.dropvalues(dropvalues) > return self.call_args(args) interpreter\function.py:190: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('struct ab { int a, b; };'), W_BytesObject('test_release_new_allocator'), W_BytesObject('struct ab { int a, b; };')]) def call_args(self, args): # delegate activation to code > w_res = self.getcode().funcrun(self, args) interpreter\function.py:68: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('struct ab { int a, b; };'), W_BytesObject('test_release_new_allocator'), W_BytesObject('struct ab { int a, b; };')]) def funcrun(self, func, args): > return BuiltinCode.funcrun_obj(self, func, None, args) interpreter\gateway.py:781: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('struct ab { int a, b; };'), W_BytesObject('test_release_new_allocator'), W_BytesObject('struct ab { int a, b; };')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: w_result = activation._run(space, scope_w) except DescrMismatch: if w_obj is not None: args = args.prepend(w_obj) return self._type_unwrap_mismatch(space, args) except Exception as e: > self.handle_exception(space, e) interpreter\gateway.py:795: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> space = StdObjSpace e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def handle_exception(self, space, e): try: if not we_are_translated(): raise raise e except OperationError: raise except Exception as e: # general fall-back from pypy.interpreter import error > raise error.get_converted_unexpected_exception(space, e) interpreter\gateway.py:819: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('struct ab { int a, b; };'), W_BytesObject('test_release_new_allocator'), W_BytesObject('struct ab { int a, b; };')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: > w_result = activation._run(space, scope_w) interpreter\gateway.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinActivation_UwS_ObjSpace_text_text_text_W_Root_W_Root_W_Root_int_W_Root object at 0x000002791c13af38> space = StdObjSpace scope_w = [W_BytesObject('struct ab { int a, b; };'), W_BytesObject('test_release_new_allocator'), W_BytesObject('struct ab { int a, b; };'), None, None, None, ...] def _run(self, space, scope_w): > return self.behavior(space, space.text_w(scope_w[0]), space.text_w(scope_w[1]), space.text_w(scope_w[2]), scope_w[3], scope_w[4], scope_w[5], space.gateway_int_w(scope_w[6]), scope_w[7]) <3152-codegen d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\rpython\tool\sourcetools.py:200>:3: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace, cdef = 'struct ab { int a, b; };' module_name = '_CFFI_test_release_new_allocator' source = 'struct ab { int a, b; };', w_includes = None, w_extra_source = None w_min_version = None, packed = 0, w_extra_compile_args = None @unwrap_spec(cdef='text', module_name='text', source='text', packed=int) def prepare(space, cdef, module_name, source, w_includes=None, w_extra_source=None, w_min_version=None, packed=False, w_extra_compile_args=None): try: import cffi from cffi import FFI # <== the system one, which from cffi import recompiler # needs to be at least cffi 1.0.4 from cffi import ffiplatform except ImportError: pytest.skip("system cffi module not found or older than 1.0.0") if w_min_version is None: min_version = (1, 4, 0) else: min_version = tuple(space.unwrap(w_min_version)) if cffi.__version_info__ < min_version: pytest.skip("system cffi module needs to be at least %s, got %s" % ( min_version, cffi.__version_info__)) space.appexec([], """(): import _cffi_backend # force it to be initialized """) includes = [] if w_includes: includes += space.unpackiterable(w_includes) assert module_name.startswith('test_') module_name = '_CFFI_' + module_name rdir = udir.ensure('recompiler', dir=1) rdir.join('Python.h').write( '#include <stdio.h>\n' '#define PYPY_VERSION XX\n' '#define PyMODINIT_FUNC /*exported*/ void\n' ) path = module_name.replace('.', os.sep) if '.' in module_name: subrdir = rdir.join(module_name[:module_name.index('.')]) os.mkdir(str(subrdir)) else: subrdir = rdir c_file = str(rdir.join('%s.c' % path)) ffi = FFI() for include_ffi_object in includes: ffi.include(include_ffi_object._test_recompiler_source_ffi) ffi.cdef(cdef, packed=packed) ffi.set_source(module_name, source) ffi.emit_c_code(c_file) base_module_name = module_name.split('.')[-1] sources = [] if w_extra_source is not None: sources.append(space.str_w(w_extra_source)) kwargs = {} # GCC 14 promotes -Wincompatible-pointer-types from a warning to an error # by default, which breaks cffi's intentionally-mismatched field-check # probes (e.g. test_misdeclared_field_1). Keep it a warning so the module # compiles and cffi's runtime checks can run. extra = ['-Wno-error=incompatible-pointer-types'] if w_extra_compile_args is not None: extra = extra + space.unwrap(w_extra_compile_args) kwargs['extra_compile_args'] = extra ext = ffiplatform.get_extension(c_file, module_name, include_dirs=[str(rdir)], export_symbols=['_cffi_pypyinit_' + base_module_name], sources=sources, **kwargs) > ffiplatform.compile(str(rdir), ext) module\_cffi_backend\test\test_recompiler.py:86: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x00000279255956e0> compiler_verbose = 0, debug = None def compile(tmpdir, ext, compiler_verbose=0, debug=None): """Compile a C extension module using distutils.""" saved_environ = os.environ.copy() try: > outputfilename = _build(tmpdir, ext, compiler_verbose, debug) d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x00000279255956e0> compiler_verbose = 0, debug = 0 def _build(tmpdir, ext, compiler_verbose=0, debug=None): # XXX compact but horrible :-( from cffi._shimmed_dist_utils import Distribution, CompileError, LinkError, set_threshold, set_verbosity dist = Distribution({'ext_modules': [ext]}) dist.parse_config_files() options = dist.get_option_dict('build_ext') if debug is None: debug = sys.flags.debug options['debug'] = ('ffiplatform', debug) options['force'] = ('ffiplatform', True) options['build_lib'] = ('ffiplatform', tmpdir) options['build_temp'] = ('ffiplatform', tmpdir) # try: old_level = set_threshold(0) or 0 try: set_verbosity(compiler_verbose) dist.run_command('build_ext') cmd_obj = dist.get_command_obj('build_ext') [soname] = cmd_obj.get_outputs() finally: set_threshold(old_level) except (CompileError, LinkError) as e: > raise VerificationError('%s: %s' % (e.__class__.__name__, e)) E VerificationError: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2 d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:54: VerificationError ---------------------------- Captured stdout call ----------------------------- generating d:\systemtemp\pytest\usession-main-595\recompiler\_CFFI_test_release_new_allocator.c ---------------------------- Captured stderr call ----------------------------- cl : Command line error D8021 : invalid numeric argument '/Wno-error=incompatible-pointer-types' ___________ AppTestRecompiler.test_struct_with_func_with_struct_arg ___________ self = <CallInfo when='call' exception: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2> func = <function <lambda> at 0x000002791fc9a188>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ..\_pytest\runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ..\_pytest\runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_struct_with_func_with_struct_ar...l__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_struct_with_func_with_struct_arg'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ..\_pytest\vendored_packages\pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00000279153616a8> hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_struct_with_func_with_struct_ar...l__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_struct_with_func_with_struct_arg'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ..\_pytest\vendored_packages\pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_struct_with_func_with_struct_ar...l__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_struct_with_func_with_struct_arg'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ..\_pytest\vendored_packages\pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_struct_with_func_with_struct_arg'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791abe7290> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...struct_arg'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792bf36e20> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792bf36e20> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...struct_arg'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_struct_with_func_with_struct_arg'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791abe71f0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...struct_arg'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792bf36de0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792bf36de0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...struct_arg'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_struct_with_func_with_struct_arg'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ..\_pytest\vendored_packages\pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_struct_with_func_with_struct_arg'> def pytest_runtest_call(item): try: > item.runtest() ..\_pytest\runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_struct_with_func_with_struct_arg'> def runtest(self): target = self.obj if self.config.option.runappdirect: return target() space = target.im_self.space filename = self._getdynfilename(target) func = app2interp_temp(target.im_func, filename=filename) w_instance = self.parent.w_instance > self.execute_appex(space, func, space, w_instance) tool\pytest\apptest.py:89: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_struct_with_func_with_struct_arg'> space = StdObjSpace target = <function test_struct_with_func_with_struct_arg at 0x000002792c9766b0> args = (StdObjSpace, <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>) def execute_appex(self, space, target, *args): self.space = space try: > target(*args) tool\pytest\apptest.py:30: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) w_func = <Function test_struct_with_func_with_struct_arg> args = <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8> def appcaller(space, *args_w): if not isinstance(space, ObjSpace): raise TypeError("first argument must be a space instance.") # the last argument can be an Arguments w_func = self.wget(space, name) if not args_w: return space.call_function(w_func) else: args = args_w[-1] assert args is not None if not isinstance(args, Arguments): > return space.call_function(w_func, *args_w) interpreter\gateway.py:1227: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <Function test_struct_with_func_with_struct_arg> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) nargs = 1, Function = <class 'pypy.interpreter.function.Function'> Method = <class 'pypy.interpreter.function.Method'> def call_function(self, w_func, *args_w): nargs = len(args_w) # used for pruning funccall versions if not self.config.objspace.disable_call_speedhacks and nargs < 5: # start of hack for performance from pypy.interpreter.function import Function, Method if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: if nargs < 4: func = w_func.w_function if isinstance(func, Function): return func.funccall(w_inst, *args_w) elif args_w and ( self.abstract_isinstance_w(args_w[0], w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): > return w_func.funccall(*args_w) interpreter\baseobjspace.py:1210: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <Function test_struct_with_func_with_struct_arg> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) gateway = <module 'pypy.interpreter.gateway' from 'd:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\interpreter\\gateway.pyc'> PyCode = <class 'pypy.interpreter.pycode.PyCode'> code = <code object test_struct_with_func_with_struct_arg, file '[d:\pypy_stuff\build...-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:2167]', line 1> def funccall(self, *args_w): # speed hack from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit nargs = len(args_w) fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, args_w[0]) elif nargs == 2: assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, args_w[0], args_w[1]) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) return code.fastcall_3(self.space, self, args_w[0], args_w[1], args_w[2]) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) return code.fastcall_4(self.space, self, args_w[0], args_w[1], args_w[2], args_w[3]) elif (nargs | PyCode.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) if nargs < 5: new_frame = self.space.createframe(code, self.w_func_globals, self) for i in funccallunrolling: if i < nargs: new_frame.locals_cells_stack_w[i] = args_w[i] > return new_frame.run() interpreter\function.py:118: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_struct_w...ild\pypy\module\_cffi_backend\test\test_recompiler.py:2167]', line 1> at line 5 def run(self): """Start this frame's execution.""" if self.getcode().co_flags & pycode.CO_GENERATOR: from pypy.interpreter.generator import GeneratorIterator return GeneratorIterator(self) else: > return self.execute_frame() interpreter\pyframe.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_struct_w...ild\pypy\module\_cffi_backend\test\test_recompiler.py:2167]', line 1> at line 5 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, executioncontext) except OperationError: raise except Exception as e: # general fall-back > raise self._convert_unexpected_exception(e) interpreter\pyframe.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_struct_w...ild\pypy\module\_cffi_backend\test\test_recompiler.py:2167]', line 1> at line 5 e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def _convert_unexpected_exception(self, e): from pypy.interpreter import error > operr = error.get_converted_unexpected_exception(self.space, e) interpreter\pyframe.py:943: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_struct_w...ild\pypy\module\_cffi_backend\test\test_recompiler.py:2167]', line 1> at line 5 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, > executioncontext) interpreter\pyframe.py:286: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_struct_w...ild\pypy\module\_cffi_backend\test\test_recompiler.py:2167]', line 1> at line 5 pycode = <code object test_struct_with_func_with_struct_arg, file '[d:\pypy_stuff\build...-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:2167]', line 1> next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def dispatch(self, pycode, next_instr, ec): # For the sequel, force 'next_instr' to be unsigned for performance next_instr = r_uint(next_instr) co_code = pycode.co_code try: while True: > next_instr = self.handle_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:64: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_struct_w...ild\pypy\module\_cffi_backend\test\test_recompiler.py:2167]', line 1> at line 5 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00t\x01\x00t\x02\x00|\x01\x00j\x03\x00d\x04\x00\x83\x03\x00}\x03\x00d\x00\x00S' next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def handle_bytecode(self, co_code, next_instr, ec): try: > next_instr = self.dispatch_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:71: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_struct_w...ild\pypy\module\_cffi_backend\test\test_recompiler.py:2167]', line 1> at line 5 co_code = '|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00t\x01\x00t\x02\x00|\x01\x00j\x03\x00d\x04\x00\x83\x03\x00}\x03\x00d\x00\x00S' next_instr = 18L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> @jit.unroll_safe def dispatch_bytecode(self, co_code, next_instr, ec): while True: self.last_instr = intmask(next_instr) if jit.we_are_jitted(): if self.debugdata: ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) else: # Only reload next_instr from last_instr when something that # can modify it actually ran (trace function or action # dispatcher). In the common case (no trace, positive ticker) # next_instr is unchanged and the round-trip is skipped. _d = self.debugdata if ec.space.reverse_debugging or ( _d is not None and _d.w_f_trace is not None) or ( not we_are_translated() and 'bytecode_only_trace' in ec.__dict__): ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) actionflag = ec.space.actionflag if actionflag.decrement_ticker(TICK_COUNTER_STEP) < 0: actionflag.action_dispatcher(ec, self) next_instr = r_uint(self.last_instr) opcode = ord(co_code[next_instr]) next_instr += 1 if opcode >= HAVE_ARGUMENT: lo = ord(co_code[next_instr]) hi = ord(co_code[next_instr+1]) next_instr += 2 oparg = (hi * 256) | lo else: oparg = 0 # note: the structure of the code here is such that it makes # (after translation) a big "if/elif" chain, which is then # turned into a switch(). while opcode == opcodedesc.EXTENDED_ARG.index: opcode = ord(co_code[next_instr]) if opcode < HAVE_ARGUMENT: raise BytecodeCorruption lo = ord(co_code[next_instr+1]) hi = ord(co_code[next_instr+2]) next_instr += 3 oparg = (oparg * 65536) | (hi * 256) | lo if opcode == opcodedesc.RETURN_VALUE.index: if not self.blockstack_non_empty(): self.frame_finished_execution = True # for generators raise Return w_returnvalue = self.popvalue() block = self.unrollstack(SReturnValue.kind) if block is None: self.pushvalue(w_returnvalue) raise Return else: unroller = SReturnValue(w_returnvalue) next_instr = block.handle(self, unroller) return next_instr # now inside a 'finally' block elif opcode == opcodedesc.END_FINALLY.index: unroller = self.end_finally() if isinstance(unroller, SuspendedUnroller): # go on unrolling the stack block = self.unrollstack(unroller.kind) if block is None: w_result = unroller.nomoreblocks() self.pushvalue(w_result) raise Return else: next_instr = block.handle(self, unroller) return next_instr elif opcode == opcodedesc.JUMP_ABSOLUTE.index: return self.jump_absolute(oparg, ec) elif opcode == opcodedesc.BREAK_LOOP.index: next_instr = self.BREAK_LOOP(oparg, next_instr) elif opcode == opcodedesc.CONTINUE_LOOP.index: return self.CONTINUE_LOOP(oparg, next_instr) elif opcode == opcodedesc.FOR_ITER.index: next_instr = self.FOR_ITER(oparg, next_instr) elif opcode == opcodedesc.JUMP_FORWARD.index: next_instr = self.JUMP_FORWARD(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_FALSE_OR_POP.index: next_instr = self.JUMP_IF_FALSE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_NOT_DEBUG.index: next_instr = self.JUMP_IF_NOT_DEBUG(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_TRUE_OR_POP.index: next_instr = self.JUMP_IF_TRUE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_FALSE.index: next_instr = self.POP_JUMP_IF_FALSE(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_TRUE.index: next_instr = self.POP_JUMP_IF_TRUE(oparg, next_instr) elif opcode == opcodedesc.BINARY_ADD.index: self.BINARY_ADD(oparg, next_instr) elif opcode == opcodedesc.BINARY_AND.index: self.BINARY_AND(oparg, next_instr) elif opcode == opcodedesc.BINARY_DIVIDE.index: self.BINARY_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_FLOOR_DIVIDE.index: self.BINARY_FLOOR_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_LSHIFT.index: self.BINARY_LSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_MODULO.index: self.BINARY_MODULO(oparg, next_instr) elif opcode == opcodedesc.BINARY_MULTIPLY.index: self.BINARY_MULTIPLY(oparg, next_instr) elif opcode == opcodedesc.BINARY_OR.index: self.BINARY_OR(oparg, next_instr) elif opcode == opcodedesc.BINARY_POWER.index: self.BINARY_POWER(oparg, next_instr) elif opcode == opcodedesc.BINARY_RSHIFT.index: self.BINARY_RSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBSCR.index: self.BINARY_SUBSCR(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBTRACT.index: self.BINARY_SUBTRACT(oparg, next_instr) elif opcode == opcodedesc.BINARY_TRUE_DIVIDE.index: self.BINARY_TRUE_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_XOR.index: self.BINARY_XOR(oparg, next_instr) elif opcode == opcodedesc.BUILD_CLASS.index: self.BUILD_CLASS(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST.index: self.BUILD_LIST(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST_FROM_ARG.index: self.BUILD_LIST_FROM_ARG(oparg, next_instr) elif opcode == opcodedesc.BUILD_MAP.index: self.BUILD_MAP(oparg, next_instr) elif opcode == opcodedesc.BUILD_SET.index: self.BUILD_SET(oparg, next_instr) elif opcode == opcodedesc.BUILD_SLICE.index: self.BUILD_SLICE(oparg, next_instr) elif opcode == opcodedesc.BUILD_TUPLE.index: self.BUILD_TUPLE(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION.index: self.CALL_FUNCTION(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_KW.index: self.CALL_FUNCTION_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR.index: self.CALL_FUNCTION_VAR(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR_KW.index: self.CALL_FUNCTION_VAR_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_METHOD.index: > self.CALL_METHOD(oparg, next_instr) interpreter\pyopcode.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ f = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_struct_w...ild\pypy\module\_cffi_backend\test\test_recompiler.py:2167]', line 1> at line 5 oparg = 3, ignored = (18L,), n_args = 3, n_kwargs = 0, w_self = None @jit.unroll_safe def CALL_METHOD(f, oparg, *ignored): # opargs contains the arg, and kwarg count, excluding the implicit 'self' n_args = oparg & 0xff n_kwargs = (oparg >> 8) & 0xff w_self = f.peekvalue_maybe_none(n_args + (2 * n_kwargs)) n = n_args + (w_self is not None) if not n_kwargs: w_callable = f.peekvalue(n_args + (2 * n_kwargs) + 1) w_result = f.space.call_valuestack( > w_callable, n, f, methodcall=w_self is not None, dropvalues=n_args + 2) objspace\std\callmethod.py:96: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_struct_w...ild\pypy\module\_cffi_backend\test\test_recompiler.py:2167]', line 1> at line 5 dropvalues = 5, methodcall = False def call_valuestack(self, w_func, nargs, frame, dropvalues, methodcall=False): # methodcall is only used for better error messages in argument.py from pypy.interpreter.function import Function, Method, is_builtin_code if frame.get_is_being_profiled() and is_builtin_code(w_func): # XXX: this code is copied&pasted :-( from the slow path below # call_valuestack(). args = frame.make_arguments(nargs) frame.dropvalues(dropvalues) return self.call_args_and_c_profile(frame, w_func, args) if not self.config.objspace.disable_call_speedhacks: # start of hack for performance if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: w_func = w_func.w_function # reuse callable stack place for w_inst frame.settopvalue(w_inst, nargs) nargs += 1 methodcall = True elif nargs > 0 and ( self.abstract_isinstance_w(frame.peekvalue(nargs-1), # :-( w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): return w_func.funccall_valuestack( > nargs, frame, methodcall=methodcall, dropvalues=dropvalues) interpreter\baseobjspace.py:1243: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_struct_w...ild\pypy\module\_cffi_backend\test\test_recompiler.py:2167]', line 1> at line 5 dropvalues = 5, methodcall = False def funccall_valuestack(self, nargs, frame, dropvalues, methodcall=False): # speed hack # methodcall is only for better error messages from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit # if (jit.we_are_jitted() and code is self.space._code_of_sys_exc_info and nargs == 0): frame.dropvalues(dropvalues) from pypy.module.sys.vm import exc_info_direct return exc_info_direct(self.space, frame) # fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: f_0 = frame.peekvalue(0) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, f_0) elif nargs == 2: f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, f_1, f_0) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) frame.dropvalues(dropvalues) return code.fastcall_3(self.space, self, f_2, f_1, f_0) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) f_3 = frame.peekvalue(3) frame.dropvalues(dropvalues) return code.fastcall_4(self.space, self, f_3, f_2, f_1, f_0) elif (nargs | Code.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) return self._flat_pycall(code, nargs, frame, dropvalues) elif fast_natural_arity & Code.FLATPYCALL: natural_arity = fast_natural_arity & 0xff if natural_arity > nargs >= natural_arity - len(self.defs_w): assert isinstance(code, PyCode) return self._flat_pycall_defaults(code, nargs, frame, natural_arity - nargs, dropvalues) elif fast_natural_arity == Code.PASSTHROUGHARGS1 and nargs >= 1: assert isinstance(code, gateway.BuiltinCodePassThroughArguments1) w_obj = frame.peekvalue(nargs-1) args = frame.make_arguments(nargs-1) frame.dropvalues(dropvalues) return code.funcrun_obj(self, w_obj, args) args = frame.make_arguments(nargs, methodcall=methodcall) frame.dropvalues(dropvalues) > return self.call_args(args) interpreter\function.py:190: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('struct BinaryTree {\n int (* CompareK... int (* CompareKey)(struct BinaryTree tree);\n };\n ')]) def call_args(self, args): # delegate activation to code > w_res = self.getcode().funcrun(self, args) interpreter\function.py:68: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('struct BinaryTree {\n int (* CompareK... int (* CompareKey)(struct BinaryTree tree);\n };\n ')]) def funcrun(self, func, args): > return BuiltinCode.funcrun_obj(self, func, None, args) interpreter\gateway.py:781: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('struct BinaryTree {\n int (* CompareK... int (* CompareKey)(struct BinaryTree tree);\n };\n ')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: w_result = activation._run(space, scope_w) except DescrMismatch: if w_obj is not None: args = args.prepend(w_obj) return self._type_unwrap_mismatch(space, args) except Exception as e: > self.handle_exception(space, e) interpreter\gateway.py:795: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> space = StdObjSpace e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def handle_exception(self, space, e): try: if not we_are_translated(): raise raise e except OperationError: raise except Exception as e: # general fall-back from pypy.interpreter import error > raise error.get_converted_unexpected_exception(space, e) interpreter\gateway.py:819: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('struct BinaryTree {\n int (* CompareK... int (* CompareKey)(struct BinaryTree tree);\n };\n ')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: > w_result = activation._run(space, scope_w) interpreter\gateway.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinActivation_UwS_ObjSpace_text_text_text_W_Root_W_Root_W_Root_int_W_Root object at 0x000002791c13af38> space = StdObjSpace scope_w = [W_BytesObject('struct BinaryTree {\n int (* CompareKey)(struct BinaryTree tree);\n };'), W_...Tree {\n int (* CompareKey)(struct BinaryTree tree);\n };\n '), None, None, None, ...] def _run(self, space, scope_w): > return self.behavior(space, space.text_w(scope_w[0]), space.text_w(scope_w[1]), space.text_w(scope_w[2]), scope_w[3], scope_w[4], scope_w[5], space.gateway_int_w(scope_w[6]), scope_w[7]) <3152-codegen d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\rpython\tool\sourcetools.py:200>:3: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace cdef = 'struct BinaryTree {\n int (* CompareKey)(struct BinaryTree tree);\n };' module_name = '_CFFI_test_struct_with_func_with_struct_arg' source = '\n struct BinaryTree {\n int (* CompareKey)(struct BinaryTree tree);\n };\n ' w_includes = None, w_extra_source = None, w_min_version = None, packed = 0 w_extra_compile_args = None @unwrap_spec(cdef='text', module_name='text', source='text', packed=int) def prepare(space, cdef, module_name, source, w_includes=None, w_extra_source=None, w_min_version=None, packed=False, w_extra_compile_args=None): try: import cffi from cffi import FFI # <== the system one, which from cffi import recompiler # needs to be at least cffi 1.0.4 from cffi import ffiplatform except ImportError: pytest.skip("system cffi module not found or older than 1.0.0") if w_min_version is None: min_version = (1, 4, 0) else: min_version = tuple(space.unwrap(w_min_version)) if cffi.__version_info__ < min_version: pytest.skip("system cffi module needs to be at least %s, got %s" % ( min_version, cffi.__version_info__)) space.appexec([], """(): import _cffi_backend # force it to be initialized """) includes = [] if w_includes: includes += space.unpackiterable(w_includes) assert module_name.startswith('test_') module_name = '_CFFI_' + module_name rdir = udir.ensure('recompiler', dir=1) rdir.join('Python.h').write( '#include <stdio.h>\n' '#define PYPY_VERSION XX\n' '#define PyMODINIT_FUNC /*exported*/ void\n' ) path = module_name.replace('.', os.sep) if '.' in module_name: subrdir = rdir.join(module_name[:module_name.index('.')]) os.mkdir(str(subrdir)) else: subrdir = rdir c_file = str(rdir.join('%s.c' % path)) ffi = FFI() for include_ffi_object in includes: ffi.include(include_ffi_object._test_recompiler_source_ffi) ffi.cdef(cdef, packed=packed) ffi.set_source(module_name, source) ffi.emit_c_code(c_file) base_module_name = module_name.split('.')[-1] sources = [] if w_extra_source is not None: sources.append(space.str_w(w_extra_source)) kwargs = {} # GCC 14 promotes -Wincompatible-pointer-types from a warning to an error # by default, which breaks cffi's intentionally-mismatched field-check # probes (e.g. test_misdeclared_field_1). Keep it a warning so the module # compiles and cffi's runtime checks can run. extra = ['-Wno-error=incompatible-pointer-types'] if w_extra_compile_args is not None: extra = extra + space.unwrap(w_extra_compile_args) kwargs['extra_compile_args'] = extra ext = ffiplatform.get_extension(c_file, module_name, include_dirs=[str(rdir)], export_symbols=['_cffi_pypyinit_' + base_module_name], sources=sources, **kwargs) > ffiplatform.compile(str(rdir), ext) module\_cffi_backend\test\test_recompiler.py:86: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x00000279218643a0> compiler_verbose = 0, debug = None def compile(tmpdir, ext, compiler_verbose=0, debug=None): """Compile a C extension module using distutils.""" saved_environ = os.environ.copy() try: > outputfilename = _build(tmpdir, ext, compiler_verbose, debug) d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x00000279218643a0> compiler_verbose = 0, debug = 0 def _build(tmpdir, ext, compiler_verbose=0, debug=None): # XXX compact but horrible :-( from cffi._shimmed_dist_utils import Distribution, CompileError, LinkError, set_threshold, set_verbosity dist = Distribution({'ext_modules': [ext]}) dist.parse_config_files() options = dist.get_option_dict('build_ext') if debug is None: debug = sys.flags.debug options['debug'] = ('ffiplatform', debug) options['force'] = ('ffiplatform', True) options['build_lib'] = ('ffiplatform', tmpdir) options['build_temp'] = ('ffiplatform', tmpdir) # try: old_level = set_threshold(0) or 0 try: set_verbosity(compiler_verbose) dist.run_command('build_ext') cmd_obj = dist.get_command_obj('build_ext') [soname] = cmd_obj.get_outputs() finally: set_threshold(old_level) except (CompileError, LinkError) as e: > raise VerificationError('%s: %s' % (e.__class__.__name__, e)) E VerificationError: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2 d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:54: VerificationError ---------------------------- Captured stdout call ----------------------------- generating d:\systemtemp\pytest\usession-main-595\recompiler\_CFFI_test_struct_with_func_with_struct_arg.c ---------------------------- Captured stderr call ----------------------------- cl : Command line error D8021 : invalid numeric argument '/Wno-error=incompatible-pointer-types' ______ AppTestRecompiler.test_convert_api_mode_builtin_function_to_cdata ______ self = <CallInfo when='call' exception: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2> func = <function <lambda> at 0x000002792a548110>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ..\_pytest\runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ..\_pytest\runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_convert_api_mode_builtin_functi...ltiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_convert_api_mode_builtin_function_to_cdata'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ..\_pytest\vendored_packages\pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00000279153616a8> hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_convert_api_mode_builtin_functi...ltiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_convert_api_mode_builtin_function_to_cdata'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ..\_pytest\vendored_packages\pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x0000027916da6d60>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_convert_api_mode_builtin_functi...ltiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_convert_api_mode_builtin_function_to_cdata'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ..\_pytest\vendored_packages\pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_convert_api_mode_builtin_function_to_cdata'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791fb6c5e8> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...n_to_cdata'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792ae5c360> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792ae5c360> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...n_to_cdata'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_convert_api_mode_builtin_function_to_cdata'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000002791fb6c4f8> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...n_to_cdata'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792ae5c320> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000002792ae5c320> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...n_to_cdata'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_convert_api_mode_builtin_function_to_cdata'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ..\_pytest\vendored_packages\pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_convert_api_mode_builtin_function_to_cdata'> def pytest_runtest_call(item): try: > item.runtest() ..\_pytest\runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_convert_api_mode_builtin_function_to_cdata'> def runtest(self): target = self.obj if self.config.option.runappdirect: return target() space = target.im_self.space filename = self._getdynfilename(target) func = app2interp_temp(target.im_func, filename=filename) w_instance = self.parent.w_instance > self.execute_appex(space, func, space, w_instance) tool\pytest\apptest.py:89: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_convert_api_mode_builtin_function_to_cdata'> space = StdObjSpace target = <function test_convert_api_mode_builtin_function_to_cdata at 0x000002792a548188> args = (StdObjSpace, <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>) def execute_appex(self, space, target, *args): self.space = space try: > target(*args) tool\pytest\apptest.py:30: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) w_func = <Function test_convert_api_mode_builtin_function_to_cdata> args = <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8> def appcaller(space, *args_w): if not isinstance(space, ObjSpace): raise TypeError("first argument must be a space instance.") # the last argument can be an Arguments w_func = self.wget(space, name) if not args_w: return space.call_function(w_func) else: args = args_w[-1] assert args is not None if not isinstance(args, Arguments): > return space.call_function(w_func, *args_w) interpreter\gateway.py:1227: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace w_func = <Function test_convert_api_mode_builtin_function_to_cdata> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) nargs = 1, Function = <class 'pypy.interpreter.function.Function'> Method = <class 'pypy.interpreter.function.Method'> def call_function(self, w_func, *args_w): nargs = len(args_w) # used for pruning funccall versions if not self.config.objspace.disable_call_speedhacks and nargs < 5: # start of hack for performance from pypy.interpreter.function import Function, Method if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: if nargs < 4: func = w_func.w_function if isinstance(func, Function): return func.funccall(w_inst, *args_w) elif args_w and ( self.abstract_isinstance_w(args_w[0], w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): > return w_func.funccall(*args_w) interpreter\baseobjspace.py:1210: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <Function test_convert_api_mode_builtin_function_to_cdata> args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x000002791c13a6e8>,) gateway = <module 'pypy.interpreter.gateway' from 'd:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\interpreter\\gateway.pyc'> PyCode = <class 'pypy.interpreter.pycode.PyCode'> code = <code object test_convert_api_mode_builtin_function_to_cdata, file '[d:\pypy_s...-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:2183]', line 1> def funccall(self, *args_w): # speed hack from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit nargs = len(args_w) fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, args_w[0]) elif nargs == 2: assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, args_w[0], args_w[1]) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) return code.fastcall_3(self.space, self, args_w[0], args_w[1], args_w[2]) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) return code.fastcall_4(self.space, self, args_w[0], args_w[1], args_w[2], args_w[3]) elif (nargs | PyCode.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) if nargs < 5: new_frame = self.space.createframe(code, self.w_func_globals, self) for i in funccallunrolling: if i < nargs: new_frame.locals_cells_stack_w[i] = args_w[i] > return new_frame.run() interpreter\function.py:118: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_convert_...ild\pypy\module\_cffi_backend\test\test_recompiler.py:2183]', line 1> at line 6 def run(self): """Start this frame's execution.""" if self.getcode().co_flags & pycode.CO_GENERATOR: from pypy.interpreter.generator import GeneratorIterator return GeneratorIterator(self) else: > return self.execute_frame() interpreter\pyframe.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_convert_...ild\pypy\module\_cffi_backend\test\test_recompiler.py:2183]', line 1> at line 6 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, executioncontext) except OperationError: raise except Exception as e: # general fall-back > raise self._convert_unexpected_exception(e) interpreter\pyframe.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_convert_...ild\pypy\module\_cffi_backend\test\test_recompiler.py:2183]', line 1> at line 6 e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def _convert_unexpected_exception(self, e): from pypy.interpreter import error > operr = error.get_converted_unexpected_exception(self.space, e) interpreter\pyframe.py:943: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_convert_...ild\pypy\module\_cffi_backend\test\test_recompiler.py:2183]', line 1> at line 6 w_inputvalue = None, operr = None def execute_frame(self, w_inputvalue=None, operr=None): """Execute this frame. Main entry point to the interpreter. The optional arguments are there to handle a generator's frame: w_inputvalue is for generator.send() and operr is for generator.throw(). """ # the following 'assert' is an annotation hint: it hides from # the annotator all methods that are defined in PyFrame but # overridden in the {,Host}FrameClass subclasses of PyFrame. assert (isinstance(self, self.space.FrameClass) or not self.space.config.translating) executioncontext = self.space.getexecutioncontext() executioncontext.enter(self) got_exception = True w_exitvalue = self.space.w_None try: executioncontext.call_trace(self) # try: if operr is not None: next_instr = self.handle_operation_error( executioncontext, operr) self.last_instr = intmask(next_instr - 1) else: # Execution starts just after the last_instr. Initially, # last_instr is -1. After a generator suspends it points to # the YIELD_VALUE instruction. next_instr = r_uint(self.last_instr + 1) if next_instr != 0: self.pushvalue(w_inputvalue) w_exitvalue = self.dispatch(self.pycode, next_instr, > executioncontext) interpreter\pyframe.py:286: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_convert_...ild\pypy\module\_cffi_backend\test\test_recompiler.py:2183]', line 1> at line 6 pycode = <code object test_convert_api_mode_builtin_function_to_cdata, file '[d:\pypy_s...-x86-64\build\pypy\module\_cffi_backend\test\test_recompiler.py:2183]', line 1> next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def dispatch(self, pycode, next_instr, ec): # For the sequel, force 'next_instr' to be unsigned for performance next_instr = r_uint(next_instr) co_code = pycode.co_code try: while True: > next_instr = self.handle_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:64: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_convert_...ild\pypy\module\_cffi_backend\test\test_recompiler.py:2183]', line 1> at line 6 co_code = "|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00|\x01\x00\xc9\x01\x00d\x04\x0...00|\x02\x00j\x02\x00\xca\x01\x00|\x01\x00\xc9\t\x00d\x14\x00\xca\x01\x00k\x02\x00s|\x02t\x04\x00\x82\x01\x00d\x00\x00S" next_instr = 0L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> def handle_bytecode(self, co_code, next_instr, ec): try: > next_instr = self.dispatch_bytecode(co_code, next_instr, ec) interpreter\pyopcode.py:71: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_convert_...ild\pypy\module\_cffi_backend\test\test_recompiler.py:2183]', line 1> at line 6 co_code = "|\x00\x00\xc9\x00\x00d\x01\x00d\x02\x00d\x03\x00\xca\x03\x00\\\x02\x00}\x01\x00}\x02\x00|\x01\x00\xc9\x01\x00d\x04\x0...00|\x02\x00j\x02\x00\xca\x01\x00|\x01\x00\xc9\t\x00d\x14\x00\xca\x01\x00k\x02\x00s|\x02t\x04\x00\x82\x01\x00d\x00\x00S" next_instr = 18L ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x0000027920720020> @jit.unroll_safe def dispatch_bytecode(self, co_code, next_instr, ec): while True: self.last_instr = intmask(next_instr) if jit.we_are_jitted(): if self.debugdata: ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) else: # Only reload next_instr from last_instr when something that # can modify it actually ran (trace function or action # dispatcher). In the common case (no trace, positive ticker) # next_instr is unchanged and the round-trip is skipped. _d = self.debugdata if ec.space.reverse_debugging or ( _d is not None and _d.w_f_trace is not None) or ( not we_are_translated() and 'bytecode_only_trace' in ec.__dict__): ec.bytecode_only_trace(self) next_instr = r_uint(self.last_instr) actionflag = ec.space.actionflag if actionflag.decrement_ticker(TICK_COUNTER_STEP) < 0: actionflag.action_dispatcher(ec, self) next_instr = r_uint(self.last_instr) opcode = ord(co_code[next_instr]) next_instr += 1 if opcode >= HAVE_ARGUMENT: lo = ord(co_code[next_instr]) hi = ord(co_code[next_instr+1]) next_instr += 2 oparg = (hi * 256) | lo else: oparg = 0 # note: the structure of the code here is such that it makes # (after translation) a big "if/elif" chain, which is then # turned into a switch(). while opcode == opcodedesc.EXTENDED_ARG.index: opcode = ord(co_code[next_instr]) if opcode < HAVE_ARGUMENT: raise BytecodeCorruption lo = ord(co_code[next_instr+1]) hi = ord(co_code[next_instr+2]) next_instr += 3 oparg = (oparg * 65536) | (hi * 256) | lo if opcode == opcodedesc.RETURN_VALUE.index: if not self.blockstack_non_empty(): self.frame_finished_execution = True # for generators raise Return w_returnvalue = self.popvalue() block = self.unrollstack(SReturnValue.kind) if block is None: self.pushvalue(w_returnvalue) raise Return else: unroller = SReturnValue(w_returnvalue) next_instr = block.handle(self, unroller) return next_instr # now inside a 'finally' block elif opcode == opcodedesc.END_FINALLY.index: unroller = self.end_finally() if isinstance(unroller, SuspendedUnroller): # go on unrolling the stack block = self.unrollstack(unroller.kind) if block is None: w_result = unroller.nomoreblocks() self.pushvalue(w_result) raise Return else: next_instr = block.handle(self, unroller) return next_instr elif opcode == opcodedesc.JUMP_ABSOLUTE.index: return self.jump_absolute(oparg, ec) elif opcode == opcodedesc.BREAK_LOOP.index: next_instr = self.BREAK_LOOP(oparg, next_instr) elif opcode == opcodedesc.CONTINUE_LOOP.index: return self.CONTINUE_LOOP(oparg, next_instr) elif opcode == opcodedesc.FOR_ITER.index: next_instr = self.FOR_ITER(oparg, next_instr) elif opcode == opcodedesc.JUMP_FORWARD.index: next_instr = self.JUMP_FORWARD(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_FALSE_OR_POP.index: next_instr = self.JUMP_IF_FALSE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_NOT_DEBUG.index: next_instr = self.JUMP_IF_NOT_DEBUG(oparg, next_instr) elif opcode == opcodedesc.JUMP_IF_TRUE_OR_POP.index: next_instr = self.JUMP_IF_TRUE_OR_POP(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_FALSE.index: next_instr = self.POP_JUMP_IF_FALSE(oparg, next_instr) elif opcode == opcodedesc.POP_JUMP_IF_TRUE.index: next_instr = self.POP_JUMP_IF_TRUE(oparg, next_instr) elif opcode == opcodedesc.BINARY_ADD.index: self.BINARY_ADD(oparg, next_instr) elif opcode == opcodedesc.BINARY_AND.index: self.BINARY_AND(oparg, next_instr) elif opcode == opcodedesc.BINARY_DIVIDE.index: self.BINARY_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_FLOOR_DIVIDE.index: self.BINARY_FLOOR_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_LSHIFT.index: self.BINARY_LSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_MODULO.index: self.BINARY_MODULO(oparg, next_instr) elif opcode == opcodedesc.BINARY_MULTIPLY.index: self.BINARY_MULTIPLY(oparg, next_instr) elif opcode == opcodedesc.BINARY_OR.index: self.BINARY_OR(oparg, next_instr) elif opcode == opcodedesc.BINARY_POWER.index: self.BINARY_POWER(oparg, next_instr) elif opcode == opcodedesc.BINARY_RSHIFT.index: self.BINARY_RSHIFT(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBSCR.index: self.BINARY_SUBSCR(oparg, next_instr) elif opcode == opcodedesc.BINARY_SUBTRACT.index: self.BINARY_SUBTRACT(oparg, next_instr) elif opcode == opcodedesc.BINARY_TRUE_DIVIDE.index: self.BINARY_TRUE_DIVIDE(oparg, next_instr) elif opcode == opcodedesc.BINARY_XOR.index: self.BINARY_XOR(oparg, next_instr) elif opcode == opcodedesc.BUILD_CLASS.index: self.BUILD_CLASS(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST.index: self.BUILD_LIST(oparg, next_instr) elif opcode == opcodedesc.BUILD_LIST_FROM_ARG.index: self.BUILD_LIST_FROM_ARG(oparg, next_instr) elif opcode == opcodedesc.BUILD_MAP.index: self.BUILD_MAP(oparg, next_instr) elif opcode == opcodedesc.BUILD_SET.index: self.BUILD_SET(oparg, next_instr) elif opcode == opcodedesc.BUILD_SLICE.index: self.BUILD_SLICE(oparg, next_instr) elif opcode == opcodedesc.BUILD_TUPLE.index: self.BUILD_TUPLE(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION.index: self.CALL_FUNCTION(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_KW.index: self.CALL_FUNCTION_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR.index: self.CALL_FUNCTION_VAR(oparg, next_instr) elif opcode == opcodedesc.CALL_FUNCTION_VAR_KW.index: self.CALL_FUNCTION_VAR_KW(oparg, next_instr) elif opcode == opcodedesc.CALL_METHOD.index: > self.CALL_METHOD(oparg, next_instr) interpreter\pyopcode.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ f = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_convert_...ild\pypy\module\_cffi_backend\test\test_recompiler.py:2183]', line 1> at line 6 oparg = 3, ignored = (18L,), n_args = 3, n_kwargs = 0, w_self = None @jit.unroll_safe def CALL_METHOD(f, oparg, *ignored): # opargs contains the arg, and kwarg count, excluding the implicit 'self' n_args = oparg & 0xff n_kwargs = (oparg >> 8) & 0xff w_self = f.peekvalue_maybe_none(n_args + (2 * n_kwargs)) n = n_args + (w_self is not None) if not n_kwargs: w_callable = f.peekvalue(n_args + (2 * n_kwargs) + 1) w_result = f.space.call_valuestack( > w_callable, n, f, methodcall=w_self is not None, dropvalues=n_args + 2) objspace\std\callmethod.py:96: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = StdObjSpace, w_func = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_convert_...ild\pypy\module\_cffi_backend\test\test_recompiler.py:2183]', line 1> at line 6 dropvalues = 5, methodcall = False def call_valuestack(self, w_func, nargs, frame, dropvalues, methodcall=False): # methodcall is only used for better error messages in argument.py from pypy.interpreter.function import Function, Method, is_builtin_code if frame.get_is_being_profiled() and is_builtin_code(w_func): # XXX: this code is copied&pasted :-( from the slow path below # call_valuestack(). args = frame.make_arguments(nargs) frame.dropvalues(dropvalues) return self.call_args_and_c_profile(frame, w_func, args) if not self.config.objspace.disable_call_speedhacks: # start of hack for performance if isinstance(w_func, Method): w_inst = w_func.w_instance if w_inst is not None: w_func = w_func.w_function # reuse callable stack place for w_inst frame.settopvalue(w_inst, nargs) nargs += 1 methodcall = True elif nargs > 0 and ( self.abstract_isinstance_w(frame.peekvalue(nargs-1), # :-( w_func.w_class)): w_func = w_func.w_function if isinstance(w_func, Function): return w_func.funccall_valuestack( > nargs, frame, methodcall=methodcall, dropvalues=dropvalues) interpreter\baseobjspace.py:1243: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare>, nargs = 3 frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_convert_...ild\pypy\module\_cffi_backend\test\test_recompiler.py:2183]', line 1> at line 6 dropvalues = 5, methodcall = False def funccall_valuestack(self, nargs, frame, dropvalues, methodcall=False): # speed hack # methodcall is only for better error messages from pypy.interpreter import gateway from pypy.interpreter.pycode import PyCode code = self.getcode() # hook for the jit # if (jit.we_are_jitted() and code is self.space._code_of_sys_exc_info and nargs == 0): frame.dropvalues(dropvalues) from pypy.module.sys.vm import exc_info_direct return exc_info_direct(self.space, frame) # fast_natural_arity = code.fast_natural_arity if nargs == fast_natural_arity: if nargs == 0: frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode0) return code.fastcall_0(self.space, self) elif nargs == 1: f_0 = frame.peekvalue(0) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode1) return code.fastcall_1(self.space, self, f_0) elif nargs == 2: f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) frame.dropvalues(dropvalues) assert isinstance(code, gateway.BuiltinCode2) return code.fastcall_2(self.space, self, f_1, f_0) elif nargs == 3: assert isinstance(code, gateway.BuiltinCode3) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) frame.dropvalues(dropvalues) return code.fastcall_3(self.space, self, f_2, f_1, f_0) elif nargs == 4: assert isinstance(code, gateway.BuiltinCode4) f_0 = frame.peekvalue(0) f_1 = frame.peekvalue(1) f_2 = frame.peekvalue(2) f_3 = frame.peekvalue(3) frame.dropvalues(dropvalues) return code.fastcall_4(self.space, self, f_3, f_2, f_1, f_0) elif (nargs | Code.FLATPYCALL) == fast_natural_arity: assert isinstance(code, PyCode) return self._flat_pycall(code, nargs, frame, dropvalues) elif fast_natural_arity & Code.FLATPYCALL: natural_arity = fast_natural_arity & 0xff if natural_arity > nargs >= natural_arity - len(self.defs_w): assert isinstance(code, PyCode) return self._flat_pycall_defaults(code, nargs, frame, natural_arity - nargs, dropvalues) elif fast_natural_arity == Code.PASSTHROUGHARGS1 and nargs >= 1: assert isinstance(code, gateway.BuiltinCodePassThroughArguments1) w_obj = frame.peekvalue(nargs-1) args = frame.make_arguments(nargs-1) frame.dropvalues(dropvalues) return code.funcrun_obj(self, w_obj, args) args = frame.make_arguments(nargs, methodcall=methodcall) frame.dropvalues(dropvalues) > return self.call_args(args) interpreter\function.py:190: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('struct s { int x; };\n struct s add1(stru... return ((struct s(*)(struct s))cb)(a).x;\n }\n ')]) def call_args(self, args): # delegate activation to code > w_res = self.getcode().funcrun(self, args) interpreter\function.py:68: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare> args = Arguments([W_BytesObject('struct s { int x; };\n struct s add1(stru... return ((struct s(*)(struct s))cb)(a).x;\n }\n ')]) def funcrun(self, func, args): > return BuiltinCode.funcrun_obj(self, func, None, args) interpreter\gateway.py:781: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('struct s { int x; };\n struct s add1(stru... return ((struct s(*)(struct s))cb)(a).x;\n }\n ')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: w_result = activation._run(space, scope_w) except DescrMismatch: if w_obj is not None: args = args.prepend(w_obj) return self._type_unwrap_mismatch(space, args) except Exception as e: > self.handle_exception(space, e) interpreter\gateway.py:795: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> space = StdObjSpace e = VerificationError("CompileError: command 'd:\\\\Microsoft Visual Studio\\\\202...\\\14.41.34120\\\\bin\\\\HostX64\\\\x64\\\\cl.exe' failed with exit status 2",) def handle_exception(self, space, e): try: if not we_are_translated(): raise raise e except OperationError: raise except Exception as e: # general fall-back from pypy.interpreter import error > raise error.get_converted_unexpected_exception(space, e) interpreter\gateway.py:819: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinCode object at 0x000002791c13ae20> func = <FunctionWithFixedCode prepare>, w_obj = None args = Arguments([W_BytesObject('struct s { int x; };\n struct s add1(stru... return ((struct s(*)(struct s))cb)(a).x;\n }\n ')]) def funcrun_obj(self, func, w_obj, args): space = func.space activation = self.activation scope_w = args.parse_obj(w_obj, func.name, self.sig, func.defs_w, self.minargs) try: > w_result = activation._run(space, scope_w) interpreter\gateway.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pypy.interpreter.gateway.BuiltinActivation_UwS_ObjSpace_text_text_text_W_Root_W_Root_W_Root_int_W_Root object at 0x000002791c13af38> space = StdObjSpace scope_w = [W_BytesObject('struct s { int x; };\n struct s add1(struct s); stru...ruct s);\n int mycall(str...atic struct s... return ((struct s(*)(struct s))cb)(a).x;\n }\n '), None, None, None, ...] def _run(self, space, scope_w): > return self.behavior(space, space.text_w(scope_w[0]), space.text_w(scope_w[1]), space.text_w(scope_w[2]), scope_w[3], scope_w[4], scope_w[5], space.gateway_int_w(scope_w[6]), scope_w[7]) <3152-codegen d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\rpython\tool\sourcetools.py:200>:3: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ space = StdObjSpace cdef = 'struct s { int x; };\n struct s add1(struct s); struct s add2(struct s);\n int mycall(struct s(*)(struct s)); int mycall2(void *);' module_name = '_CFFI_test_convert_api_mode_builtin_function_to_cdata' source = '\n struct s { int x; };\n static struct s add1(struct s a) {\n struct s r; r.x =... struct s a; a.x = 200;\n return ((struct s(*)(struct s))cb)(a).x;\n }\n ' w_includes = None, w_extra_source = None, w_min_version = None, packed = 0 w_extra_compile_args = None @unwrap_spec(cdef='text', module_name='text', source='text', packed=int) def prepare(space, cdef, module_name, source, w_includes=None, w_extra_source=None, w_min_version=None, packed=False, w_extra_compile_args=None): try: import cffi from cffi import FFI # <== the system one, which from cffi import recompiler # needs to be at least cffi 1.0.4 from cffi import ffiplatform except ImportError: pytest.skip("system cffi module not found or older than 1.0.0") if w_min_version is None: min_version = (1, 4, 0) else: min_version = tuple(space.unwrap(w_min_version)) if cffi.__version_info__ < min_version: pytest.skip("system cffi module needs to be at least %s, got %s" % ( min_version, cffi.__version_info__)) space.appexec([], """(): import _cffi_backend # force it to be initialized """) includes = [] if w_includes: includes += space.unpackiterable(w_includes) assert module_name.startswith('test_') module_name = '_CFFI_' + module_name rdir = udir.ensure('recompiler', dir=1) rdir.join('Python.h').write( '#include <stdio.h>\n' '#define PYPY_VERSION XX\n' '#define PyMODINIT_FUNC /*exported*/ void\n' ) path = module_name.replace('.', os.sep) if '.' in module_name: subrdir = rdir.join(module_name[:module_name.index('.')]) os.mkdir(str(subrdir)) else: subrdir = rdir c_file = str(rdir.join('%s.c' % path)) ffi = FFI() for include_ffi_object in includes: ffi.include(include_ffi_object._test_recompiler_source_ffi) ffi.cdef(cdef, packed=packed) ffi.set_source(module_name, source) ffi.emit_c_code(c_file) base_module_name = module_name.split('.')[-1] sources = [] if w_extra_source is not None: sources.append(space.str_w(w_extra_source)) kwargs = {} # GCC 14 promotes -Wincompatible-pointer-types from a warning to an error # by default, which breaks cffi's intentionally-mismatched field-check # probes (e.g. test_misdeclared_field_1). Keep it a warning so the module # compiles and cffi's runtime checks can run. extra = ['-Wno-error=incompatible-pointer-types'] if w_extra_compile_args is not None: extra = extra + space.unwrap(w_extra_compile_args) kwargs['extra_compile_args'] = extra ext = ffiplatform.get_extension(c_file, module_name, include_dirs=[str(rdir)], export_symbols=['_cffi_pypyinit_' + base_module_name], sources=sources, **kwargs) > ffiplatform.compile(str(rdir), ext) module\_cffi_backend\test\test_recompiler.py:86: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x00000279273f15e0> compiler_verbose = 0, debug = None def compile(tmpdir, ext, compiler_verbose=0, debug=None): """Compile a C extension module using distutils.""" saved_environ = os.environ.copy() try: > outputfilename = _build(tmpdir, ext, compiler_verbose, debug) d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tmpdir = 'd:\\systemtemp\\pytest\\usession-main-595\\recompiler' ext = <setuptools.extension.Extension instance at 0x00000279273f15e0> compiler_verbose = 0, debug = 0 def _build(tmpdir, ext, compiler_verbose=0, debug=None): # XXX compact but horrible :-( from cffi._shimmed_dist_utils import Distribution, CompileError, LinkError, set_threshold, set_verbosity dist = Distribution({'ext_modules': [ext]}) dist.parse_config_files() options = dist.get_option_dict('build_ext') if debug is None: debug = sys.flags.debug options['debug'] = ('ffiplatform', debug) options['force'] = ('ffiplatform', True) options['build_lib'] = ('ffiplatform', tmpdir) options['build_temp'] = ('ffiplatform', tmpdir) # try: old_level = set_threshold(0) or 0 try: set_verbosity(compiler_verbose) dist.run_command('build_ext') cmd_obj = dist.get_command_obj('build_ext') [soname] = cmd_obj.get_outputs() finally: set_threshold(old_level) except (CompileError, LinkError) as e: > raise VerificationError('%s: %s' % (e.__class__.__name__, e)) E VerificationError: CompileError: command 'd:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\cl.exe' failed with exit status 2 d:\pypy_stuff\pypy2.7-v7.3.18\lib_pypy\cffi\ffiplatform.py:54: VerificationError ---------------------------- Captured stdout call ----------------------------- generating d:\systemtemp\pytest\usession-main-595\recompiler\_CFFI_test_convert_api_mode_builtin_function_to_cdata.c ---------------------------- Captured stderr call ----------------------------- cl : Command line error D8021 : invalid numeric argument '/Wno-error=incompatible-pointer-types' =========================== short test summary info =========================== FAIL module\_cffi_backend\test\test_recompiler.py::AppTestRecompiler::()::test_math_sin FAIL module\_cffi_backend\test\test_recompiler.py::AppTestRecompiler::()::test_repr_lib FAIL module\_cffi_backend\test\test_recompiler.py::AppTestRecompiler::()::test_funcarg_ptr FAIL module\_cffi_backend\test\test_recompiler.py::AppTestRecompiler::()::test_funcres_ptr FAIL module\_cffi_backend\test\test_recompiler.py::AppTestRecompiler::()::test_global_var_array FAIL module\_cffi_backend\test\test_recompiler.py::AppTestRecompiler::()::test_verify_typedef FAIL module\_cffi_backend\test\test_recompiler.py::AppTestRecompiler::()::test_verify_typedef_dotdotdot FAIL module\_cffi_backend\test\test_recompiler.py::AppTestRecompiler::()::test_verify_typedef_star_dotdotdot FAIL module\_cffi_backend\test\test_recompiler.py::AppTestRecompiler::()::test_global_var_int FAIL module\_cffi_backend\test\test_recompiler.py::AppTestRecompiler::()::test_macro FAIL module\_cffi_backend\test\test_recompiler.py::AppTestRecompiler::()::test_macro_check_value FAIL module\_cffi_backend\test\test_recompiler.py::AppTestRecompiler::()::test_constant FAIL module\_cffi_backend\test\test_recompiler.py::AppTestRecompiler::()::test_check_value_of_static_const FAIL module\_cffi_backend\test\test_recompiler.py::AppTestRecompiler::()::test_constant_nonint FAIL module\_cffi_backend\test\test_recompiler.py::AppTestRecompiler::()::test_constant_ptr FAIL module\_cffi_backend\test\test_recompiler.py::AppTestRecompiler::()::test_dir FAIL module\_cffi_backend\test\test_recompiler.py::AppTestRecompiler::()::test_verify_opaque_struct FAIL module\_cffi_backend\test\test_recompiler.py::AppTestRecompiler::()::test_verify_opaque_union FAIL module\_cffi_backend\test\test_recompiler.py::AppTestRecompiler::()::test_verify_struct FAIL module\_cffi_backend\test\test_recompiler.py::AppTestRecompiler::()::test_verify_exact_field_offset FAIL module\_cffi_backend\test\test_recompiler.py::AppTestRecompiler::()::test_type_caching FAIL module\_cffi_backend\test\test_recompiler.py::AppTestRecompiler::()::test_verify_enum FAIL module\_cffi_backend\test\test_recompiler.py::AppTestRecompiler::()::test_dotdotdot_length_of_array_field FAIL module\_cffi_backend\test\test_recompiler.py::AppTestRecompiler::()::test_dotdotdot_global_array FAIL module\_cffi_backend\test\test_recompiler.py::AppTestRecompiler::()::test_misdeclared_field_1 FAIL module\_cffi_backend\test\test_recompiler.py::AppTestRecompiler::()::test_open_array_in_struct FAIL module\_cffi_backend\test\test_recompiler.py::AppTestRecompiler::()::test_math_sin_type FAIL module\_cffi_backend\test\test_recompiler.py::AppTestRecompiler::()::test_verify_anonymous_struct_with_typedef FAIL module\_cffi_backend\test\test_recompiler.py::AppTestRecompiler::()::test_verify_anonymous_struct_with_star_typedef FAIL module\_cffi_backend\test\test_recompiler.py::AppTestRecompiler::()::test_verify_anonymous_enum_with_typedef FAIL module\_cffi_backend\test\test_recompiler.py::AppTestRecompiler::()::test_unique_types FAIL module\_cffi_backend\test\test_recompiler.py::AppTestRecompiler::()::test_module_name_in_package FAIL module\_cffi_backend\test\test_recompiler.py::AppTestRecompiler::()::test_unspecified_size_of_global_1 FAIL module\_cffi_backend\test\test_recompiler.py::AppTestRecompiler::()::test_unspecified_size_of_global_2 FAIL module\_cffi_backend\test\test_recompiler.py::AppTestRecompiler::()::test_unspecified_size_of_global_3 FAIL module\_cffi_backend\test\test_recompiler.py::AppTestRecompiler::()::test_unspecified_size_of_global_4 FAIL module\_cffi_backend\test\test_recompiler.py::AppTestRecompiler::()::test_include_1 FAIL module\_cffi_backend\test\test_recompiler.py::AppTestRecompiler::()::test_include_1b FAIL module\_cffi_backend\test\test_recompiler.py::AppTestRecompiler::()::test_include_2 FAIL module\_cffi_backend\test\test_recompiler.py::AppTestRecompiler::()::test_include_3 FAIL module\_cffi_backend\test\test_recompiler.py::AppTestRecompiler::()::test_include_4 FAIL module\_cffi_backend\test\test_recompiler.py::AppTestRecompiler::()::test_include_5 FAIL module\_cffi_backend\test\test_recompiler.py::AppTestRecompiler::()::test_include_6 FAIL module\_cffi_backend\test\test_recompiler.py::AppTestRecompiler::()::test_include_7 FAIL module\_cffi_backend\test\test_recompiler.py::AppTestRecompiler::()::test_include_8 FAIL module\_cffi_backend\test\test_recompiler.py::AppTestRecompiler::()::test_bitfield_basic FAIL module\_cffi_backend\test\test_recompiler.py::AppTestRecompiler::()::test_incomplete_struct_as_arg FAIL module\_cffi_backend\test\test_recompiler.py::AppTestRecompiler::()::test_incomplete_struct_as_result FAIL module\_cffi_backend\test\test_recompiler.py::AppTestRecompiler::()::test_incomplete_struct_as_both FAIL module\_cffi_backend\test\test_recompiler.py::AppTestRecompiler::()::test_name_of_unnamed_struct FAIL module\_cffi_backend\test\test_recompiler.py::AppTestRecompiler::()::test_address_of_global_var FAIL module\_cffi_backend\test\test_recompiler.py::AppTestRecompiler::()::test_defines__CFFI_ FAIL module\_cffi_backend\test\test_recompiler.py::AppTestRecompiler::()::test_unpack_args FAIL module\_cffi_backend\test\test_recompiler.py::AppTestRecompiler::()::test_address_of_function FAIL module\_cffi_backend\test\test_recompiler.py::AppTestRecompiler::()::test_address_of_function_with_struct FAIL module\_cffi_backend\test\test_recompiler.py::AppTestRecompiler::()::test_issue198 FAIL module\_cffi_backend\test\test_recompiler.py::AppTestRecompiler::()::test_constant_is_not_a_compiler_constant FAIL module\_cffi_backend\test\test_recompiler.py::AppTestRecompiler::()::test_constant_of_unknown_size FAIL module\_cffi_backend\test\test_recompiler.py::AppTestRecompiler::()::test_variable_of_unknown_size FAIL module\_cffi_backend\test\test_recompiler.py::AppTestRecompiler::()::test_constant_of_value_unknown_to_the_compiler FAIL module\_cffi_backend\test\test_recompiler.py::AppTestRecompiler::()::test_call_with_incomplete_structs FAIL module\_cffi_backend\test\test_recompiler.py::AppTestRecompiler::()::test_struct_array_guess_length_2 FAIL module\_cffi_backend\test\test_recompiler.py::AppTestRecompiler::()::test_struct_array_guess_length_3 FAIL module\_cffi_backend\test\test_recompiler.py::AppTestRecompiler::()::test_global_var_array_2 FAIL module\_cffi_backend\test\test_recompiler.py::AppTestRecompiler::()::test_some_integer_type FAIL module\_cffi_backend\test\test_recompiler.py::AppTestRecompiler::()::test_issue200 FAIL module\_cffi_backend\test\test_recompiler.py::AppTestRecompiler::()::test_alignment_of_longlong FAIL module\_cffi_backend\test\test_recompiler.py::AppTestRecompiler::()::test_import_from_lib FAIL module\_cffi_backend\test\test_recompiler.py::AppTestRecompiler::()::test_macro_var_callback FAIL module\_cffi_backend\test\test_recompiler.py::AppTestRecompiler::()::test_const_fields FAIL module\_cffi_backend\test\test_recompiler.py::AppTestRecompiler::()::test_restrict_fields FAIL module\_cffi_backend\test\test_recompiler.py::AppTestRecompiler::()::test_volatile_fields FAIL module\_cffi_backend\test\test_recompiler.py::AppTestRecompiler::()::test_const_array_fields FAIL module\_cffi_backend\test\test_recompiler.py::AppTestRecompiler::()::test_const_array_fields_varlength FAIL module\_cffi_backend\test\test_recompiler.py::AppTestRecompiler::()::test_const_array_fields_unknownlength FAIL module\_cffi_backend\test\test_recompiler.py::AppTestRecompiler::()::test_const_function_args FAIL module\_cffi_backend\test\test_recompiler.py::AppTestRecompiler::()::test_const_function_type_args FAIL module\_cffi_backend\test\test_recompiler.py::AppTestRecompiler::()::test_const_constant FAIL module\_cffi_backend\test\test_recompiler.py::AppTestRecompiler::()::test_const_via_typedef FAIL module\_cffi_backend\test\test_recompiler.py::AppTestRecompiler::()::test_win32_calling_convention_0 FAIL module\_cffi_backend\test\test_recompiler.py::AppTestRecompiler::()::test_win32_calling_convention_1 FAIL module\_cffi_backend\test\test_recompiler.py::AppTestRecompiler::()::test_win32_calling_convention_2 FAIL module\_cffi_backend\test\test_recompiler.py::AppTestRecompiler::()::test_win32_calling_convention_3 FAIL module\_cffi_backend\test\test_recompiler.py::AppTestRecompiler::()::test_share_FILE FAIL module\_cffi_backend\test\test_recompiler.py::AppTestRecompiler::()::test_extern_python_1 FAIL module\_cffi_backend\test\test_recompiler.py::AppTestRecompiler::()::test_extern_python_bogus_name FAIL module\_cffi_backend\test\test_recompiler.py::AppTestRecompiler::()::test_extern_python_bogus_result_type FAIL module\_cffi_backend\test\test_recompiler.py::AppTestRecompiler::()::test_extern_python_redefine FAIL module\_cffi_backend\test\test_recompiler.py::AppTestRecompiler::()::test_extern_python_struct FAIL module\_cffi_backend\test\test_recompiler.py::AppTestRecompiler::()::test_extern_python_signature FAIL module\_cffi_backend\test\test_recompiler.py::AppTestRecompiler::()::test_extern_python_errors FAIL module\_cffi_backend\test\test_recompiler.py::AppTestRecompiler::()::test_introspect_function FAIL module\_cffi_backend\test\test_recompiler.py::AppTestRecompiler::()::test_introspect_global_var FAIL module\_cffi_backend\test\test_recompiler.py::AppTestRecompiler::()::test_introspect_global_var_array FAIL module\_cffi_backend\test\test_recompiler.py::AppTestRecompiler::()::test_introspect_integer_const FAIL module\_cffi_backend\test\test_recompiler.py::AppTestRecompiler::()::test_introspect_typedef FAIL module\_cffi_backend\test\test_recompiler.py::AppTestRecompiler::()::test_introspect_typedef_multiple FAIL module\_cffi_backend\test\test_recompiler.py::AppTestRecompiler::()::test_introspect_struct FAIL module\_cffi_backend\test\test_recompiler.py::AppTestRecompiler::()::test_introspect_union FAIL module\_cffi_backend\test\test_recompiler.py::AppTestRecompiler::()::test_introspect_struct_and_typedef FAIL module\_cffi_backend\test\test_recompiler.py::AppTestRecompiler::()::test_introspect_included_type FAIL module\_cffi_backend\test\test_recompiler.py::AppTestRecompiler::()::test_introspect_order FAIL module\_cffi_backend\test\test_recompiler.py::AppTestRecompiler::()::test_FFIFunctionWrapper FAIL module\_cffi_backend\test\test_recompiler.py::AppTestRecompiler::()::test_typedef_array_dotdotdot FAIL module\_cffi_backend\test\test_recompiler.py::AppTestRecompiler::()::test_call_with_custom_field_pos FAIL module\_cffi_backend\test\test_recompiler.py::AppTestRecompiler::()::test_call_with_bitfield FAIL module\_cffi_backend\test\test_recompiler.py::AppTestRecompiler::()::test_call_with_union FAIL module\_cffi_backend\test\test_recompiler.py::AppTestRecompiler::()::test_override_default_definition FAIL module\_cffi_backend\test\test_recompiler.py::AppTestRecompiler::()::test_char16_char32_plain_c FAIL module\_cffi_backend\test\test_recompiler.py::AppTestRecompiler::()::test_loader_spec FAIL module\_cffi_backend\test\test_recompiler.py::AppTestRecompiler::()::test_release FAIL module\_cffi_backend\test\test_recompiler.py::AppTestRecompiler::()::test_release_new_allocator FAIL module\_cffi_backend\test\test_recompiler.py::AppTestRecompiler::()::test_struct_with_func_with_struct_arg FAIL module\_cffi_backend\test\test_recompiler.py::AppTestRecompiler::()::test_convert_api_mode_builtin_function_to_cdata ============ 114 failed, 324 passed, 28 skipped in 602.99 seconds ============= ++ 01:14:31 starting module/_pypyjson/test [23 started in total] __ module/_multibytecodec/test [20 done in total, somefailed=False] ___________ ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 51 items module\_multibytecodec\test\test_app_codecs.py ................ module\_multibytecodec\test\test_app_incremental.py ............ module\_multibytecodec\test\test_app_stream.py ..... module\_multibytecodec\test\test_c_codecs.py ................s module\_multibytecodec\test\test_translation.py . =================== 50 passed, 1 skipped in 148.05 seconds ==================== ++ 01:14:37 starting module/_random/test [24 started in total] __ module/_pypyjson/test [21 done in total, somefailed=False] _________________ ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 45 items module\_pypyjson\test\test__pypyjson.py .......................................... module\_pypyjson\test\test_simd.py ... ========================= 45 passed in 37.03 seconds ========================== ++ 01:15:10 starting module/_rawffi/alt/test [25 started in total] __ module/_random/test [22 done in total, somefailed=False] ___________________ ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 14 items module\_random\test\test_random.py ............. module\_random\test\test_ztranslation.py . ========================= 14 passed in 106.74 seconds ========================= ++ 01:16:29 starting module/_rawffi/test [26 started in total] __ interpreter/test [23 done in total, somefailed=True] _______________________ ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 [platform:msg] Updated environment with vsver 160, using x64 True [platform:msg] Updated environment with vsver 160, using x64 True collected 772 items interpreter\test\apptest_class.py ............... interpreter\test\apptest_exec.py ............................ interpreter\test\apptest_function.py ........................s.............................. interpreter\test\apptest_generator.py .................................. interpreter\test\apptest_nestedscope.py ............. interpreter\test\apptest_pyframe.py ............................. interpreter\test\apptest_raise.py ..................... interpreter\test\test_app_main.py ....ssssssssssssssssssssssssssssssssss.............s......s...F.. interpreter\test\test_appinterp.py ............. interpreter\test\test_argument.py ................................... interpreter\test\test_buffer.py .. interpreter\test\test_cellfamily.py ....... interpreter\test\test_code.py ........ interpreter\test\test_compiler.py ......................................................................................................................... interpreter\test\test_descrtypecheck.py .. interpreter\test\test_error.py .......... interpreter\test\test_exceptcomp.py ........... interpreter\test\test_exec.py . interpreter\test\test_executioncontext.py ................ interpreter\test\test_extmodules.py . interpreter\test\test_function.py .......... interpreter\test\test_gateway.py ........................................ss............ interpreter\test\test_generator.py . interpreter\test\test_interpreter.py .......................... interpreter\test\test_main.py .... interpreter\test\test_mixedmodule.py ...... interpreter\test\test_module.py ........ interpreter\test\test_objspace.py .............................. interpreter\test\test_pycode.py . interpreter\test\test_pyframe.py .. interpreter\test\test_reverse_debugging.py .. interpreter\test\test_special.py .. interpreter\test\test_syntax.py .................................................................... interpreter\test\test_targetpypy.py .. interpreter\test\test_typedef.py .................. interpreter\test\test_unicodehelper.py .......... interpreter\test\test_zpy.py ....sF interpreter\test\test_zzpickle_and_slow.py ...............s................... ================================== FAILURES =================================== __________________ AppTestAppMain.test_setup_bootstrap_path ___________________ self = <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x00000260626150c0> def test_setup_bootstrap_path(self): # Check how sys.path is handled depending on if we can find a copy of # the stdlib in setup_bootstrap_path. import sys, os old_sys_path = sys.path[:] old_cwd = os.getcwd() # make sure cwd does not contain a stdlib if self.tmp_dir.startswith(self.trunkdir): skip('TMPDIR is inside the PyPy source') sys.path.append(self.goal_dir) tmp_pypy_c = os.path.join(self.tmp_dir, 'pypy-c') try: os.chdir(self.tmp_dir) # If we are running PyPy with a libpypy-c, the following # lines find the stdlib anyway. Otherwise, it is not found. expected_found = ( getattr(sys, 'pypy_translation_info', {}) .get('translation.shared')) import app_main app_main.setup_bootstrap_path(tmp_pypy_c) > assert sys.executable == '' E (application-level) AssertionError: assert 'd:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\virt_test\\Scripts\\python.exe' == '' E + where 'd:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\virt_test\\Scripts\\python.exe' = 'd:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\virt_test\\Scripts\\python.exe' E + where 'd:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\virt_test\\Scripts\\python.exe' = <module 'sys' (built-in)>.executable [d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pypy\interpreter\test\test_app_main.py:1036]:24: AssertionError ________________________________ test_pytrace _________________________________ def test_pytrace(): output = run(sys.executable, pypypath, '-S', stdin="__pytrace__ = 1\nx = 5\nx") assert ('\t<module>: LOAD_CONST 0 (5)\n' '\t<module>: STORE_NAME 0 (x)\n' '\t<module>: LOAD_CONST 1 (None)\n' '\t<module>: RETURN_VALUE 0 \n' > '>>>> ') in output E assert '\t<module>: LOAD_CONST 0 (5)\n\t<module>: STORE_NAME 0 (x)\n\t<module>: LOAD_CONST 1 (None)\n\t<module>: RETURN_VALUE 0 \n>>>> ' in '>>>> Tracing enabled\r\n>>>> \t<module>: LOAD_CONST 0 (5)\r\n\t<module>: STORE_NAME 0 (x)\r...T_EXPR 0 5\r\n\r\n\t<module>: LOAD_CONST 0 (None)\r\n\t<module>: RETURN_VALUE 0 \r\n>>>> ' interpreter\test\test_zpy.py:114: AssertionError ---------------------------- Captured stderr call ----------------------------- [platform:msg] Updated environment with vsver 160, using x64 True [platform:msg] Updated environment with vsver 160, using x64 True PyPy 8.0.0-alpha0 in StdObjSpace on top of Python 2.7.18 (startuptime: 22.10 secs) =========================== short test summary info =========================== FAIL interpreter\test\test_app_main.py::AppTestAppMain::()::test_setup_bootstrap_path FAIL interpreter\test\test_zpy.py::test_pytrace ============= 2 failed, 729 passed, 41 skipped in 900.88 seconds ============== ++ 01:16:46 starting module/_sha/test [27 started in total] __ module/_multiprocessing/test [24 done in total, somefailed=False] __________ ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 24 items module\_multiprocessing\test\test_connection.py ........... module\_multiprocessing\test\test_interp_semaphore.py . module\_multiprocessing\test\test_memory.py .. module\_multiprocessing\test\test_semaphore.py ....... module\_multiprocessing\test\test_win32.py .. module\_multiprocessing\test\test_ztranslation.py . ========================= 24 passed in 329.54 seconds ========================= ++ 01:18:01 starting module/_socket/test [28 started in total] __ module/_rawffi/alt/test [25 done in total, somefailed=False] _______________ ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 73 items module\_rawffi\alt\test\test_ffitype.py ..... module\_rawffi\alt\test\test_funcptr.py ..s..............................ss.ss.... module\_rawffi\alt\test\test_struct.py ............... module\_rawffi\alt\test\test_type_converter.py ........... =================== 68 passed, 5 skipped in 175.20 seconds ==================== ++ 01:18:07 starting module/_sre/test [29 started in total] __ module/_sha/test [26 done in total, somefailed=False] ______________________ ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 6 items module\_sha\test\test_sha.py .s.... ==================== 5 passed, 1 skipped in 78.96 seconds ===================== ++ 01:18:09 starting module/_vmprof/test [30 started in total] __ module/_vmprof/test [27 done in total, somefailed=False] ___________________ ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 0 items ======================== no tests ran in 0.00 seconds ========================= ++ 01:18:10 starting module/_warnings/test [31 started in total] __ module/_rawffi/test [28 done in total, somefailed=False] ___________________ ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 [platform:msg] Updated environment with vsver 160, using x64 True [platform:msg] Updated environment with vsver 160, using x64 True collected 83 items module\_rawffi\test\apptest_rawffi.py . module\_rawffi\test\test__rawffi.py .................s.................................s................ module\_rawffi\test\test_exit.py s module\_rawffi\test\test_nested.py ...... module\_rawffi\test\test_struct.py ... module\_rawffi\test\test_tracker.py ... module\_rawffi\test\test_ztranslation.py . =================== 80 passed, 3 skipped in 155.54 seconds ==================== n: 2 Arg 0: 3 Arg 1: 15 ++ 01:19:12 starting module/_weakref/test [32 started in total] __ module/_warnings/test [29 done in total, somefailed=False] _________________ ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 [platform:msg] Updated environment with vsver 160, using x64 True [platform:msg] Updated environment with vsver 160, using x64 True collected 12 items module\_warnings\test\apptest_warnings.py ........... module\_warnings\test\test_warnings.py . ========================= 12 passed in 86.79 seconds ========================== ++ 01:19:39 starting module/_winreg/test [33 started in total] __ module/_sre/test [30 done in total, somefailed=False] ______________________ ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 139 items module\_sre\test\test_app_sre.py ................................................................................................................... module\_sre\test\test_sre_buf.py ........................ ========================= 139 passed in 95.68 seconds ========================= ++ 01:19:51 starting module/array/test [34 started in total] __ module/_weakref/test [31 done in total, somefailed=False] __________________ ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 42 items module\_weakref\test\test_weakref.py ....................s..................... =================== 41 passed, 1 skipped in 102.14 seconds ==================== ++ 01:20:56 starting module/binascii/test [35 started in total] __ module/_socket/test [32 done in total, somefailed=False] ___________________ ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 60 items module\_socket\test\test_sock_app.py .......s..........s.............s...........s.s.ss......... module\_socket\test\test_ztranslation.py . =================== 53 passed, 7 skipped in 183.93 seconds ==================== ++ 01:21:13 starting module/bz2/test [36 started in total] __ module/_winreg/test [33 done in total, somefailed=False] ___________________ ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 18 items module\_winreg\test\test_winreg.py ............s..ss. ==================== 15 passed, 3 skipped in 87.77 seconds ==================== ++ 01:21:16 starting module/cStringIO/test [37 started in total] __ module/binascii/test [34 done in total, somefailed=False] __________________ ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 14 items module\binascii\test\test_binascii.py .............. ========================= 14 passed in 72.60 seconds ========================== ++ 01:22:11 starting module/cmath/test [38 started in total] __ module/array/test [35 done in total, somefailed=False] _____________________ ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 49 items module\array\test\test_array.py ....................................s........... module\array\test\test_ztranslation.py . =================== 48 passed, 1 skipped in 134.34 seconds ==================== ++ 01:22:12 starting module/cpyext/test/test_abstract.py [39 started in total] __ module/bz2/test [36 done in total, somefailed=False] _______________________ ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 1 items / 2 skipped module\bz2\test\test_large.py s ========================= 3 skipped in 55.58 seconds ========================== ++ 01:22:13 starting module/cpyext/test/test_api.py [40 started in total] __ module/cStringIO/test [37 done in total, somefailed=False] _________________ ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 16 items module\cStringIO\test\test_interp_stringio.py ............... module\cStringIO\test\test_ztranslation.py . ========================= 16 passed in 65.32 seconds ========================== ++ 01:22:24 starting module/cpyext/test/test_arraymodule.py [41 started in total] __ module/cmath/test [38 done in total, somefailed=False] _____________________ ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 15 items module\cmath\test\test_cmath.py ............... ========================= 15 passed in 36.11 seconds ========================== ++ 01:22:51 starting module/cpyext/test/test_boolobject.py [42 started in total] __ module/cpyext/test/test_arraymodule.py [39 done in total, somefailed=False] ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 0 items / 1 skipped ========================== 1 skipped in 0.02 seconds ========================== ++ 01:23:16 starting module/cpyext/test/test_borrow.py [43 started in total] __ module/cpyext/test/test_abstract.py [40 done in total, somefailed=False] ___ ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 0 items / 1 skipped ========================== 1 skipped in 0.02 seconds ========================== ++ 01:23:19 starting module/cpyext/test/test_bufferobject.py [44 started in total] __ module/cpyext/test/test_boolobject.py [41 done in total, somefailed=False] _ ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 0 items / 1 skipped ========================== 1 skipped in 0.02 seconds ========================== ++ 01:23:19 starting module/cpyext/test/test_bytearrayobject.py [45 started in total] __ module/cpyext/test/test_api.py [42 done in total, somefailed=False] ________ ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 0 items / 1 skipped ========================== 1 skipped in 0.02 seconds ========================== ++ 01:23:21 starting module/cpyext/test/test_bytesobject.py [46 started in total] __ module/cpyext/test/test_borrow.py [43 done in total, somefailed=False] _____ ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 0 items / 1 skipped ========================== 1 skipped in 0.02 seconds ========================== ++ 01:23:50 starting module/cpyext/test/test_capsule.py [47 started in total] __ module/cpyext/test/test_bytearrayobject.py [44 done in total, somefailed=False] ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 0 items / 1 skipped ========================== 1 skipped in 0.02 seconds ========================== ++ 01:23:59 starting module/cpyext/test/test_cell.py [48 started in total] __ module/cpyext/test/test_bufferobject.py [45 done in total, somefailed=False] ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 0 items / 1 skipped ========================== 1 skipped in 0.02 seconds ========================== ++ 01:23:59 starting module/cpyext/test/test_classobject.py [49 started in total] __ module/cpyext/test/test_bytesobject.py [46 done in total, somefailed=False] ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 0 items / 1 skipped ========================== 1 skipped in 0.02 seconds ========================== ++ 01:24:00 starting module/cpyext/test/test_codecs.py [50 started in total] __ module/cpyext/test/test_capsule.py [47 done in total, somefailed=False] ____ ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 0 items / 1 skipped ========================== 1 skipped in 0.01 seconds ========================== ++ 01:24:29 starting module/cpyext/test/test_complexobject.py [51 started in total] __ module/cpyext/test/test_cell.py [48 done in total, somefailed=False] _______ ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 0 items / 1 skipped ========================== 1 skipped in 0.02 seconds ========================== ++ 01:24:32 starting module/cpyext/test/test_cpyext.py [52 started in total] __ module/cpyext/test/test_classobject.py [49 done in total, somefailed=False] ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 0 items / 1 skipped ========================== 1 skipped in 0.02 seconds ========================== ++ 01:24:38 starting module/cpyext/test/test_datetime.py [53 started in total] __ module/cpyext/test/test_codecs.py [50 done in total, somefailed=False] _____ ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 0 items / 1 skipped ========================== 1 skipped in 0.02 seconds ========================== ++ 01:24:39 starting module/cpyext/test/test_dictobject.py [54 started in total] __ module/cpyext/test/test_complexobject.py [51 done in total, somefailed=False] ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 0 items / 1 skipped ========================== 1 skipped in 0.02 seconds ========================== ++ 01:25:08 starting module/cpyext/test/test_eval.py [55 started in total] __ module/cpyext/test/test_cpyext.py [52 done in total, somefailed=False] _____ ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 0 items / 1 skipped ========================== 1 skipped in 0.02 seconds ========================== ++ 01:25:11 starting module/cpyext/test/test_fileobject.py [56 started in total] __ module/cpyext/test/test_datetime.py [53 done in total, somefailed=False] ___ ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 0 items / 1 skipped ========================== 1 skipped in 0.02 seconds ========================== ++ 01:25:17 starting module/cpyext/test/test_floatobject.py [57 started in total] __ module/cpyext/test/test_dictobject.py [54 done in total, somefailed=False] _ ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 0 items / 1 skipped ========================== 1 skipped in 0.02 seconds ========================== ++ 01:25:18 starting module/cpyext/test/test_frameobject.py [58 started in total] __ module/cpyext/test/test_eval.py [55 done in total, somefailed=False] _______ ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 0 items / 1 skipped ========================== 1 skipped in 0.02 seconds ========================== ++ 01:25:47 starting module/cpyext/test/test_funcobject.py [59 started in total] __ module/cpyext/test/test_fileobject.py [56 done in total, somefailed=False] _ ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 0 items / 1 skipped ========================== 1 skipped in 0.02 seconds ========================== ++ 01:25:50 starting module/cpyext/test/test_genobject.py [60 started in total] __ module/cpyext/test/test_floatobject.py [57 done in total, somefailed=False] ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 0 items / 1 skipped ========================== 1 skipped in 0.02 seconds ========================== ++ 01:25:57 starting module/cpyext/test/test_getargs.py [61 started in total] __ module/cpyext/test/test_frameobject.py [58 done in total, somefailed=False] ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 0 items / 1 skipped ========================== 1 skipped in 0.02 seconds ========================== ++ 01:25:57 starting module/cpyext/test/test_import.py [62 started in total] __ module/cpyext/test/test_genobject.py [59 done in total, somefailed=False] __ ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 0 items / 1 skipped ========================== 1 skipped in 0.02 seconds ========================== ++ 01:26:29 starting module/cpyext/test/test_intobject.py [63 started in total] __ module/cpyext/test/test_funcobject.py [60 done in total, somefailed=False] _ ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 0 items / 1 skipped ========================== 1 skipped in 0.02 seconds ========================== ++ 01:26:33 starting module/cpyext/test/test_iterator.py [64 started in total] __ module/cpyext/test/test_getargs.py [61 done in total, somefailed=False] ____ ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 0 items / 1 skipped ========================== 1 skipped in 0.02 seconds ========================== ++ 01:26:36 starting module/cpyext/test/test_listobject.py [65 started in total] __ module/cpyext/test/test_import.py [62 done in total, somefailed=False] _____ ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 0 items / 1 skipped ========================== 1 skipped in 0.02 seconds ========================== ++ 01:26:37 starting module/cpyext/test/test_longobject.py [66 started in total] __ module/cpyext/test/test_longobject.py [63 done in total, somefailed=False] _ ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 0 items / 1 skipped ========================== 1 skipped in 0.02 seconds ========================== ++ 01:27:11 starting module/cpyext/test/test_mapping.py [67 started in total] __ module/cpyext/test/test_iterator.py [64 done in total, somefailed=False] ___ ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 0 items / 1 skipped ========================== 1 skipped in 0.08 seconds ========================== ++ 01:27:12 starting module/cpyext/test/test_marshal.py [68 started in total] __ module/cpyext/test/test_intobject.py [65 done in total, somefailed=False] __ ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 0 items / 1 skipped ========================== 1 skipped in 0.02 seconds ========================== ++ 01:27:15 starting module/cpyext/test/test_memoryobject.py [69 started in total] __ module/cpyext/test/test_listobject.py [66 done in total, somefailed=False] _ ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 0 items / 1 skipped ========================== 1 skipped in 0.02 seconds ========================== ++ 01:27:15 starting module/cpyext/test/test_methodobject.py [70 started in total] __ module/cpyext/test/test_memoryobject.py [67 done in total, somefailed=False] ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 0 items / 1 skipped ========================== 1 skipped in 0.02 seconds ========================== ++ 01:27:53 starting module/cpyext/test/test_misc.py [71 started in total] __ module/cpyext/test/test_methodobject.py [68 done in total, somefailed=False] ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 0 items / 1 skipped ========================== 1 skipped in 0.06 seconds ========================== ++ 01:27:54 starting module/cpyext/test/test_module.py [72 started in total] __ module/cpyext/test/test_mapping.py [69 done in total, somefailed=False] ____ ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 0 items / 1 skipped ========================== 1 skipped in 0.02 seconds ========================== ++ 01:27:56 starting module/cpyext/test/test_ndarrayobject.py [73 started in total] __ module/cpyext/test/test_marshal.py [70 done in total, somefailed=False] ____ ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 0 items / 1 skipped ========================== 1 skipped in 0.03 seconds ========================== ++ 01:27:57 starting module/cpyext/test/test_number.py [74 started in total] __ module/cpyext/test/test_ndarrayobject.py [71 done in total, somefailed=False] ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 0 items / 1 skipped ========================== 1 skipped in 0.11 seconds ========================== ++ 01:28:42 starting module/cpyext/test/test_object.py [75 started in total] __ module/cpyext/test/test_number.py [72 done in total, somefailed=False] _____ ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 0 items / 1 skipped ========================== 1 skipped in 0.02 seconds ========================== ++ 01:28:43 starting module/cpyext/test/test_pycobject.py [76 started in total] __ module/cpyext/test/test_module.py [73 done in total, somefailed=False] _____ ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 0 items / 1 skipped ========================== 1 skipped in 0.02 seconds ========================== ++ 01:28:47 starting module/cpyext/test/test_pyerrors.py [77 started in total] __ module/cpyext/test/test_misc.py [74 done in total, somefailed=False] _______ ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 0 items / 1 skipped ========================== 1 skipped in 0.02 seconds ========================== ++ 01:28:47 starting module/cpyext/test/test_pyfile.py [78 started in total] __ module/cpyext/test/test_pyerrors.py [75 done in total, somefailed=False] ___ ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 0 items / 1 skipped ========================== 1 skipped in 0.03 seconds ========================== ++ 01:30:11 starting module/cpyext/test/test_pysignals.py [79 started in total] __ module/cpyext/test/test_pyfile.py [76 done in total, somefailed=False] _____ ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 0 items / 1 skipped ========================== 1 skipped in 0.03 seconds ========================== ++ 01:30:11 starting module/cpyext/test/test_pystate.py [80 started in total] __ module/cpyext/test/test_object.py [77 done in total, somefailed=False] _____ ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 0 items / 1 skipped ========================== 1 skipped in 0.02 seconds ========================== ++ 01:30:13 starting module/cpyext/test/test_pystrtod.py [81 started in total] __ module/cpyext/test/test_pycobject.py [78 done in total, somefailed=False] __ ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 0 items / 1 skipped ========================== 1 skipped in 0.03 seconds ========================== ++ 01:30:13 starting module/cpyext/test/test_sequence.py [82 started in total] __ module/cpyext/test/test_pysignals.py [79 done in total, somefailed=False] __ ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 0 items / 1 skipped ========================== 1 skipped in 0.02 seconds ========================== ++ 01:32:13 starting module/cpyext/test/test_setobject.py [83 started in total] __ module/cpyext/test/test_pystate.py [80 done in total, somefailed=False] ____ ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 0 items / 1 skipped ========================== 1 skipped in 0.02 seconds ========================== ++ 01:32:13 starting module/cpyext/test/test_sliceobject.py [84 started in total] __ module/cpyext/test/test_pystrtod.py [81 done in total, somefailed=False] ___ ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 0 items / 1 skipped ========================== 1 skipped in 0.02 seconds ========================== ++ 01:32:14 starting module/cpyext/test/test_structseq.py [85 started in total] __ module/cpyext/test/test_sequence.py [82 done in total, somefailed=False] ___ ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 0 items / 1 skipped ========================== 1 skipped in 0.02 seconds ========================== ++ 01:32:16 starting module/cpyext/test/test_sysmodule.py [86 started in total] __ module/cpyext/test/test_setobject.py [83 done in total, somefailed=False] __ ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 0 items / 1 skipped ========================== 1 skipped in 0.02 seconds ========================== ++ 01:32:46 starting module/cpyext/test/test_thread.py [87 started in total] __ module/cpyext/test/test_sliceobject.py [84 done in total, somefailed=False] ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 0 items / 1 skipped ========================== 1 skipped in 0.01 seconds ========================== ++ 01:32:46 starting module/cpyext/test/test_traceback.py [88 started in total] __ module/cpyext/test/test_structseq.py [85 done in total, somefailed=False] __ ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 0 items / 1 skipped ========================== 1 skipped in 0.02 seconds ========================== ++ 01:32:48 starting module/cpyext/test/test_translate.py [89 started in total] __ module/cpyext/test/test_sysmodule.py [86 done in total, somefailed=False] __ ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 0 items / 1 skipped ========================== 1 skipped in 0.16 seconds ========================== ++ 01:32:51 starting module/cpyext/test/test_tupleobject.py [90 started in total] __ module/cpyext/test/test_thread.py [87 done in total, somefailed=False] _____ ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 0 items / 1 skipped ========================== 1 skipped in 0.01 seconds ========================== ++ 01:33:20 starting module/cpyext/test/test_typeobject.py [91 started in total] __ module/cpyext/test/test_traceback.py [88 done in total, somefailed=False] __ ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 0 items / 1 skipped ========================== 1 skipped in 0.02 seconds ========================== ++ 01:33:20 starting module/cpyext/test/test_unicodeobject.py [92 started in total] __ module/cpyext/test/test_tupleobject.py [89 done in total, somefailed=False] ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 0 items / 1 skipped ========================== 1 skipped in 0.02 seconds ========================== ++ 01:33:24 starting module/cpyext/test/test_userslots.py [93 started in total] __ module/cpyext/test/test_translate.py [90 done in total, somefailed=False] __ ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 0 items / 1 skipped ========================== 1 skipped in 0.02 seconds ========================== ++ 01:33:27 starting module/cpyext/test/test_version.py [94 started in total] __ module/cpyext/test/test_typeobject.py [91 done in total, somefailed=False] _ ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 0 items / 1 skipped ========================== 1 skipped in 0.02 seconds ========================== ++ 01:33:48 starting module/cpyext/test/test_weakref.py [95 started in total] __ module/cpyext/test/test_unicodeobject.py [92 done in total, somefailed=False] ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 0 items / 1 skipped ========================== 1 skipped in 0.02 seconds ========================== ++ 01:33:48 starting module/crypt/test [96 started in total] __ module/crypt/test [93 done in total, somefailed=False] _____________________ ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 0 items / 1 skipped ========================== 1 skipped in 0.03 seconds ========================== ++ 01:33:50 starting module/errno/test [97 started in total] __ module/cpyext/test/test_userslots.py [94 done in total, somefailed=False] __ ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 0 items / 1 skipped ========================== 1 skipped in 0.01 seconds ========================== ++ 01:33:53 starting module/exceptions/test [98 started in total] __ module/cpyext/test/test_version.py [95 done in total, somefailed=False] ____ ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 0 items / 1 skipped ========================== 1 skipped in 0.02 seconds ========================== ++ 01:33:55 starting module/faulthandler/test [99 started in total] __ module/faulthandler/test [96 done in total, somefailed=False] ______________ ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 1 items / 1 skipped module\faulthandler\test\test_ztranslation.py . ===================== 1 passed, 1 skipped in 9.13 seconds ===================== ++ 01:34:08 starting module/fcntl/test [100 started in total] __ module/errno/test [97 done in total, somefailed=False] _____________________ ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 3 items module\errno\test\test_errno.py ... ========================== 3 passed in 15.25 seconds ========================== ++ 01:34:08 starting module/gc/test [101 started in total] __ module/fcntl/test [98 done in total, somefailed=False] _____________________ ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 0 items / 1 skipped ========================== 1 skipped in 0.75 seconds ========================== ++ 01:34:10 starting module/imp/test [102 started in total] __ module/exceptions/test [99 done in total, somefailed=False] ________________ ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 24 items module\exceptions\test\test_exc.py ........................ ========================= 24 passed in 19.52 seconds ========================== ++ 01:34:14 starting module/itertools/test [103 started in total] __ module/cpyext/test/test_weakref.py [100 done in total, somefailed=False] ___ ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 0 items / 1 skipped ========================== 1 skipped in 0.02 seconds ========================== ++ 01:34:17 starting module/marshal/test [104 started in total] __ module/marshal/test [101 done in total, somefailed=False] __________________ ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 80 items module\marshal\test\test_marshal.py ................................................................... module\marshal\test\test_marshalimpl.py ............. ========================= 80 passed in 35.24 seconds ========================== ++ 01:34:56 starting module/math/test [105 started in total] __ module/gc/test [102 done in total, somefailed=False] _______________________ ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 30 items module\gc\test\test_app_referents.py .... module\gc\test\test_gc.py .....x... module\gc\test\test_hook.py ........ module\gc\test\test_referents.py ...s.... module\gc\test\test_ztranslation.py . ============== 28 passed, 1 skipped, 1 xfailed in 45.53 seconds =============== ++ 01:35:00 starting module/micronumpy/test [106 started in total] __ module/micronumpy/test [103 done in total, somefailed=False] _______________ ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 0 items ======================== no tests ran in 0.01 seconds ========================= ++ 01:35:13 starting module/mmap/test [107 started in total] __ module/math/test [104 done in total, somefailed=False] _____________________ ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 182 items module\math\test\test_direct.py ...................................................................................................................................................................... module\math\test\test_factorial.py .s module\math\test\test_math.py .........s.... =================== 180 passed, 2 skipped in 37.91 seconds ==================== ++ 01:35:35 starting module/operator/test [108 started in total] __ module/itertools/test [105 done in total, somefailed=False] ________________ ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 73 items module\itertools\test\test_itertools.py ........................................................................ module\itertools\test\test_ztranslation.py . ========================= 73 passed in 76.20 seconds ========================== ++ 01:35:36 starting module/parser/test [109 started in total] __ module/mmap/test [106 done in total, somefailed=False] _____________________ ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 43 items module\mmap\test\test_mmap.py ....s.................s..............ss..s. ==================== 38 passed, 5 skipped in 35.95 seconds ==================== ++ 01:35:53 starting module/posix/test [110 started in total] __ module/operator/test [107 done in total, somefailed=False] _________________ ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 27 items module\operator\test\test_operator.py .................. module\operator\test\test_tscmp.py ......... ========================= 27 passed in 15.48 seconds ========================== ++ 01:35:53 starting module/pwd/test [111 started in total] __ module/parser/test [108 done in total, somefailed=False] ___________________ ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 7 items module\parser\test\test_parser.py ....... ========================== 7 passed in 14.63 seconds ========================== ++ 01:35:54 starting module/pyexpat/test [112 started in total] __ module/pwd/test [109 done in total, somefailed=False] ______________________ ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 0 items / 2 skipped ========================== 2 skipped in 6.41 seconds ========================== ++ 01:36:00 starting module/pypyjit/test [113 started in total] __ module/imp/test [110 done in total, somefailed=False] ______________________ ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 124 items module\imp\test\test_app.py ................ module\imp\test\test_import.py ...........................................................................s............ss.................. =================== 121 passed, 3 skipped in 122.69 seconds =================== ++ 01:36:15 starting module/select/test [114 started in total] __ module/pypyjit/test [111 done in total, somefailed=False] __________________ ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 29 items module\pypyjit\test\test_jit_hook.py ........s module\pypyjit\test\test_jit_not_in_trace.py .. module\pypyjit\test\test_jit_setup.py .... module\pypyjit\test\test_policy.py ............ module\pypyjit\test\test_pyframe.py . module\pypyjit\test\test_ztranslation.py . ==================== 28 passed, 1 skipped in 29.92 seconds ==================== ++ 01:36:34 starting module/signal/test [115 started in total] __ module/pyexpat/test [112 done in total, somefailed=False] __________________ ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 21 items module\pyexpat\test\test_build.py . module\pyexpat\test\test_parser.py ..................ss ==================== 19 passed, 2 skipped in 60.84 seconds ==================== ++ 01:37:00 starting module/struct/test [116 started in total] __ module/posix/test [113 done in total, somefailed=False] ____________________ ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 59 items module\posix\test\test_posix2.py ................s...............s...........s....sss.s module\posix\test\test_posix_libfile.py ..ss module\posix\test\test_ztranslation.py . ==================== 50 passed, 9 skipped in 98.27 seconds ==================== ++ 01:37:36 starting module/sys/test [117 started in total] __ module/signal/test [114 done in total, somefailed=False] ___________________ ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 18 items module\signal\test\test_signal.py s.s.....ss.s.sss.. ==================== 10 passed, 8 skipped in 60.09 seconds ==================== ++ 01:37:41 starting module/termios/test [118 started in total] __ module/termios/test [115 done in total, somefailed=False] __________________ ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 0 items / 1 skipped ========================== 1 skipped in 1.51 seconds ========================== ++ 01:37:43 starting module/test_lib_pypy [119 started in total] __ module/struct/test [116 done in total, somefailed=False] ___________________ ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 41 items module\struct\test\test_struct.py ........................................ module\struct\test\test_ztranslation.py . ========================= 41 passed in 68.51 seconds ========================== ++ 01:38:16 starting module/thread/test [120 started in total] __ module/select/test [117 done in total, somefailed=True] ____________________ ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 41 items module\select\test\test_epoll.py ssssssss module\select\test\test_kqueue.py sssss module\select\test\test_select.py sssssssssssssss....E......ss module\select\test\test_ztranslation.py . =================================== ERRORS ==================================== _________ ERROR at teardown of AppTestSelectWithSockets.test_writable _________ self = <CallInfo when='teardown' exception: { <C object Array of * Array of Char {'nolength': True} {'nolength': True} at ...i.py", line 1146, in utf82wcharp w = lltype.malloc(CWCHARP.TO, utf8len + 2, flavor='raw', track_allocation=True) }> func = <function <lambda> at 0x00000165e5ff8a70>, when = 'teardown' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ..\_pytest\runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ..\_pytest\runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_teardown'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_writable'>, 'nextitem': <AppTes...ults, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_writable'>, 'nextitem': <AppTestMethod 'test_write_read'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ..\_pytest\vendored_packages\pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00000165dffa1600> hook = <_HookCaller 'pytest_runtest_teardown'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_writable'>, 'nextitem': <AppTes...ults, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_writable'>, 'nextitem': <AppTestMethod 'test_write_read'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ..\_pytest\vendored_packages\pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_teardown'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_writable'>, 'nextitem': <AppTes...ults, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_writable'>, 'nextitem': <AppTestMethod 'test_write_read'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ..\_pytest\vendored_packages\pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_writable'>, 'nextitem': <AppTestMethod 'test_write_read'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_teardown at 0x00000165e5fe3df8> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...write_read'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00000165e5fdf460> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00000165e5fdf460> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...write_read'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_writable'>, 'nextitem': <AppTestMethod 'test_write_read'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ..\_pytest\vendored_packages\pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <rpython.conftest.LeakFinder instance at 0x00000165e190a360> item = <AppTestMethod 'test_writable'> @pytest.hookimpl(trylast=True) def pytest_runtest_teardown(self, item): if not isinstance(item, py.test.collect.Function): return if (not getattr(item.obj, 'dont_track_allocations', False) and leakfinder.TRACK_ALLOCATIONS): kwds = {} try: kwds['do_collection'] = item.track_allocations_collect except AttributeError: pass item._pypytest_leaks = leakfinder.stop_tracking_allocations(False, **kwds) else: # stop_tracking_allocations() already called item._pypytest_leaks = None # check for leaks, but only if the test passed so far if getattr(item, '_success', False) and item._pypytest_leaks: > raise leakfinder.MallocMismatch(item._pypytest_leaks) E MallocMismatch: { E E <C object Array of * Array of Char {'nolength': True} {'nolength': True} at 0x165dfce2b40>: E ... E File "d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\rpython\rlib\_rsocket_rffi.py", line 1585, in socket_strerror_str E return rwin32.FormatError(errno) E File "d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\rpython\rlib\rwin32.py", line 310, in FormatError E return llimpl_FormatError(code) E File "d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\rpython\rlib\rwin32.py", line 319, in llimpl_FormatError E buf = lltype.malloc(rffi.CCHARPP.TO, 1, flavor='raw') E E <C object Array of UniChar {'nolength': True} at 0x165e095be80>: E ... E File "d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\rpython\rlib\rposix.py", line 467, in open E with rffi.scoped_utf82wcharp(utf8) as buf: E File "d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\rpython\rtyper\lltypesystem\rffi.py", line 1415, in __init__ E self.buf = utf82wcharp(value, rutf8.codepoints_in_utf8(value)) E File "d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\rpython\rtyper\lltypesystem\rffi.py", line 1146, in utf82wcharp E w = lltype.malloc(CWCHARP.TO, utf8len + 2, flavor='raw', track_allocation=True) E } ..\rpython\conftest.py:103: MallocMismatch ============== 11 passed, 30 skipped, 1 error in 140.35 seconds =============== ++ 01:38:41 starting module/time/test [121 started in total] __ module/test_lib_pypy [118 done in total, somefailed=False] _________________ ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 232 items / 5 skipped module\test_lib_pypy\test_collections.py ..................... module\test_lib_pypy\test_marshal_extra.py ....................................................................................................................................................... module\test_lib_pypy\test_md5_extra.py ...... module\test_lib_pypy\test_msvcrt.py . module\test_lib_pypy\test_pickle_extra.py s module\test_lib_pypy\test_sha_extra.py ... module\test_lib_pypy\test_site_extra.py . module\test_lib_pypy\test_stackless.py .............................. module\test_lib_pypy\test_stackless_pickling.py .. module\test_lib_pypy\test_structseq.py ......... module\test_lib_pypy\test_tputil.py ..s.... =================== 230 passed, 7 skipped in 75.23 seconds ==================== ++ 01:39:05 starting module/unicodedata/test [122 started in total] __ module/sys/test [119 done in total, somefailed=False] ______________________ ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 [platform:msg] Updated environment with vsver 160, using x64 True [platform:msg] Updated environment with vsver 160, using x64 True collected 65 items module\sys\test\apptest_initpath.py . module\sys\test\test_encoding.py s module\sys\test\test_initpath.py .s..... module\sys\test\test_sysmodule.py ..............................ss.................... module\sys\test\test_version.py .... ==================== 61 passed, 4 skipped in 85.55 seconds ==================== ++ 01:39:05 starting module/zipimport/test [123 started in total] __ module/time/test [120 done in total, somefailed=False] _____________________ ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 18 items module\time\test\test_time.py ...........s...... ==================== 17 passed, 1 skipped in 49.17 seconds ==================== ++ 01:39:34 starting module/zlib/test [124 started in total] __ module/unicodedata/test [121 done in total, somefailed=False] ______________ ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 26 items module\unicodedata\test\test_hyp.py ................ module\unicodedata\test\test_unicodedata.py .......... ========================= 26 passed in 54.03 seconds ========================== ++ 01:40:06 starting objspace/fake/test [125 started in total] __ module/zlib/test [122 done in total, somefailed=True] ______________________ ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 31 items module\zlib\test\test_zlib.py .........................F..F.. ================================== FAILURES =================================== _ AppTestZlib.test_cannot_copy_decompressor_with_stream_in_inconsistent_state _ self = <CallInfo when='call' exception: can only transform functions> func = <function <lambda> at 0x000001c051cbc098>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ..\_pytest\runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ..\_pytest\runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_cannot_copy_decompressor_with_s...s, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_cannot_copy_decompressor_with_stream_in_inconsistent_state'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ..\_pytest\vendored_packages\pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x000001c04b591600> hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x000001c04ce57060>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_cannot_copy_decompressor_with_s...s, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_cannot_copy_decompressor_with_stream_in_inconsistent_state'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ..\_pytest\vendored_packages\pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x000001c04ce57060>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_cannot_copy_decompressor_with_s...s, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_cannot_copy_decompressor_with_stream_in_inconsistent_state'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ..\_pytest\vendored_packages\pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_cannot_copy_decompressor_with_stream_in_inconsistent_state'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000001c050f9c3b8> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...tent_state'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000001c05071c6a0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000001c05071c6a0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...tent_state'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_cannot_copy_decompressor_with_stream_in_inconsistent_state'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000001c050f9c2f0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...tent_state'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000001c05071c5a0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000001c05071c5a0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...tent_state'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_cannot_copy_decompressor_with_stream_in_inconsistent_state'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ..\_pytest\vendored_packages\pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_cannot_copy_decompressor_with_stream_in_inconsistent_state'> def pytest_runtest_call(item): try: > item.runtest() ..\_pytest\runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_cannot_copy_decompressor_with_stream_in_inconsistent_state'> def runtest(self): target = self.obj if self.config.option.runappdirect: return target() space = target.im_self.space filename = self._getdynfilename(target) > func = app2interp_temp(target.im_func, filename=filename) tool\pytest\apptest.py:87: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ func = <function test_cannot_copy_decompressor_with_stream_in_inconsistent_state at 0x000001c04eec2368> applevel_temp = <class pypy.interpreter.gateway.applevel_temp at 0x000001c04ed5fd70> filename = '[d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\module\\zlib\\test\\test_zlib.py:333]' @not_rpython def app2interp_temp(func, applevel_temp=applevel_temp, filename=None): > return appdef(func, applevel_temp, filename=filename) interpreter\gateway.py:1322: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ source = "reason='zlib < 1.2.12 lacks inflateStateCheck and segfaults')\n def test_cannot_copy_decompressor_with_stream_in_i...\n self.intentionally_break_a_z_stream(zobj=decompressor)\n raises(self.zlib.error, decompressor.copy)\n" applevel = <class pypy.interpreter.gateway.applevel_temp at 0x000001c04ed5fd70> filename = '[d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\module\\zlib\\test\\test_zlib.py:333]' @not_rpython def appdef(source, applevel=ApplevelClass, filename=None): """ build an app-level helper function, like for example: myfunc = appdef('''myfunc(x, y): return x+y ''') """ prefix = "" if not isinstance(source, str): flags = source.__code__.co_flags source = py.std.inspect.getsource(source).lstrip() while source.startswith(('@py.test.mark.', '@pytest.mark.')): # these decorators are known to return the same function # object, we may ignore them assert '\n' in source source = source[source.find('\n') + 1:].lstrip() > assert source.startswith("def "), "can only transform functions" E AssertionError: can only transform functions interpreter\gateway.py:1288: AssertionError __ AppTestZlib.test_cannot_copy_compressor_with_stream_in_inconsistent_state __ self = <CallInfo when='call' exception: can only transform functions> func = <function <lambda> at 0x000001c05039aea8>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ..\_pytest\runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ..\_pytest\runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_cannot_copy_compressor_with_str...lts, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_cannot_copy_compressor_with_stream_in_inconsistent_state'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ..\_pytest\vendored_packages\pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x000001c04b591600> hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x000001c04ce57060>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_cannot_copy_compressor_with_str...lts, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_cannot_copy_compressor_with_stream_in_inconsistent_state'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ..\_pytest\vendored_packages\pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'> methods = [<_pytest.vendored_packages.pluggy.HookImpl instance at 0x000001c04ce57060>] kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_cannot_copy_compressor_with_str...lts, 1 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_cannot_copy_compressor_with_stream_in_inconsistent_state'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ..\_pytest\vendored_packages\pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_cannot_copy_compressor_with_stream_in_inconsistent_state'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000001c04fd4d678> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...tent_state'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000001c051baa960> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000001c051baa960> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...tent_state'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_cannot_copy_compressor_with_stream_in_inconsistent_state'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ..\_pytest\vendored_packages\pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x000001c04fd4d5d8> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...tent_state'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ..\_pytest\vendored_packages\pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000001c051baa8e0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ..\_pytest\vendored_packages\pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000001c051baa8e0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'i...tent_state'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ..\_pytest\vendored_packages\pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 1 meths, kwargs={'item': <AppTestMethod 'test_cannot_copy_compressor_with_stream_in_inconsistent_state'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ..\_pytest\vendored_packages\pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_cannot_copy_compressor_with_stream_in_inconsistent_state'> def pytest_runtest_call(item): try: > item.runtest() ..\_pytest\runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_cannot_copy_compressor_with_stream_in_inconsistent_state'> def runtest(self): target = self.obj if self.config.option.runappdirect: return target() space = target.im_self.space filename = self._getdynfilename(target) > func = app2interp_temp(target.im_func, filename=filename) tool\pytest\apptest.py:87: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ func = <function test_cannot_copy_compressor_with_stream_in_inconsistent_state at 0x000001c04eec24d0> applevel_temp = <class pypy.interpreter.gateway.applevel_temp at 0x000001c04ed5fd70> filename = '[d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\module\\zlib\\test\\test_zlib.py:370]' @not_rpython def app2interp_temp(func, applevel_temp=applevel_temp, filename=None): > return appdef(func, applevel_temp, filename=filename) interpreter\gateway.py:1322: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ source = "reason='zlib < 1.2.12 lacks deflateStateCheck and segfaults')\n def test_cannot_copy_compressor_with_stream_in_inc...bj()\n self.intentionally_break_a_z_stream(zobj=compressor)\n raises(self.zlib.error, compressor.copy)\n" applevel = <class pypy.interpreter.gateway.applevel_temp at 0x000001c04ed5fd70> filename = '[d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\module\\zlib\\test\\test_zlib.py:370]' @not_rpython def appdef(source, applevel=ApplevelClass, filename=None): """ build an app-level helper function, like for example: myfunc = appdef('''myfunc(x, y): return x+y ''') """ prefix = "" if not isinstance(source, str): flags = source.__code__.co_flags source = py.std.inspect.getsource(source).lstrip() while source.startswith(('@py.test.mark.', '@pytest.mark.')): # these decorators are known to return the same function # object, we may ignore them assert '\n' in source source = source[source.find('\n') + 1:].lstrip() > assert source.startswith("def "), "can only transform functions" E AssertionError: can only transform functions interpreter\gateway.py:1288: AssertionError =========================== short test summary info =========================== FAIL module\zlib\test\test_zlib.py::AppTestZlib::()::test_cannot_copy_decompressor_with_stream_in_inconsistent_state FAIL module\zlib\test\test_zlib.py::AppTestZlib::()::test_cannot_copy_compressor_with_stream_in_inconsistent_state ==================== 2 failed, 29 passed in 35.79 seconds ===================== ++ 01:40:13 starting objspace/std/test [126 started in total] __ module/zipimport/test [123 done in total, somefailed=False] ________________ ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 67 items module\zipimport\test\test_undocumented.py ...... module\zipimport\test\test_zipimport.py ........................................ module\zipimport\test\test_zipimport_deflated.py ..................... ========================= 67 passed in 161.43 seconds ========================= ++ 01:41:56 starting objspace/test [127 started in total] __ objspace/fake/test [124 done in total, somefailed=False] ___________________ ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 21 items objspace\fake\test\test_checkmodule.py ........ objspace\fake\test\test_objspace.py ............. ========================= 21 passed in 115.22 seconds ========================= ++ 01:42:04 starting sandbox/test [128 started in total] __ sandbox/test [125 done in total, somefailed=False] _________________________ ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 0 items / 1 skipped ========================== 1 skipped in 5.74 seconds ========================== ++ 01:42:12 starting tool/bench/test [129 started in total] __ tool/bench/test [126 done in total, somefailed=False] ______________________ ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 3 items / 1 skipped [platform:msg] Updated environment with vsver 160, using x64 True [platform:msg] Updated environment with vsver 160, using x64 True tool\bench\test\test_pypyresult.py ... ==================== 3 passed, 1 skipped in 10.72 seconds ===================== ++ 01:42:25 starting tool/memusage/test [130 started in total] __ objspace/test [127 done in total, somefailed=False] ________________________ ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 [platform:msg] Updated environment with vsver 160, using x64 True [platform:msg] Updated environment with vsver 160, using x64 True collected 59 items objspace\test\apptest_binop_overriding.py . objspace\test\apptest_descriptor.py ........ objspace\test\apptest_descroperation.py ............s.......................... objspace\test\test_descroperation.py ........... ==================== 58 passed, 1 skipped in 24.95 seconds ==================== ++ 01:42:26 starting tool/pytest/test [131 started in total] __ module/thread/test [128 done in total, somefailed=False] ___________________ ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 48 items module\thread\test\test_fork.py sss module\thread\test\test_gil.py .... module\thread\test\test_import_lock.py ..... module\thread\test\test_local.py ....... module\thread\test\test_lock.py .............sss. module\thread\test\test_thread.py ..........s. =================== 41 passed, 7 skipped in 255.49 seconds ==================== ++ 01:42:33 starting tool/release/test [132 started in total] __ tool/memusage/test [129 done in total, somefailed=False] ___________________ ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 5 items [platform:msg] Updated environment with vsver 160, using x64 True [platform:msg] Updated environment with vsver 160, using x64 True tool\memusage\test\test_log2gnumeric.py ..... ========================== 5 passed in 7.22 seconds =========================== ++ 01:42:34 starting tool/test [133 started in total] __ tool/test [130 done in total, somefailed=False] ____________________________ ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 29 items tool\test\test_gdb_pypy.py ........... tool\test\test_getdocstrings.py ... tool\test\test_isolate.py ....... tool\test\test_lib_pypy.py ... tool\test\test_license.py . tool\test\test_package.py . tool\test\test_tab.py .. tool\test\test_template.py . ========================= 29 passed in 51.11 seconds ========================== __ tool/release/test [131 done in total, somefailed=False] ____________________ ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 8 items tool\release\test\test_package.py ...ss tool\release\test\test_smartstrip.py sss ==================== 3 passed, 5 skipped in 66.74 seconds ===================== __ objspace/std/test [132 done in total, somefailed=True] _____________________ ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 [platform:msg] Updated environment with vsver 160, using x64 True [platform:msg] Updated environment with vsver 160, using x64 True collected 2132 items objspace\std\test\apptest_boolobject.py ........ objspace\std\test\apptest_bufferobject.py ............... objspace\std\test\apptest_callmethod.py ........ objspace\std\test\apptest_complexobject.py ............................... objspace\std\test\apptest_instmethobject.py ..... objspace\std\test\apptest_iterobject.py .............. objspace\std\test\apptest_operation.py ... objspace\std\test\apptest_stringformat.py ...............s...........................s........ objspace\std\test\apptest_userobject.py ...................... objspace\std\test\test_boolobject.py ....... objspace\std\test\test_bytearrayobject.py ....................................................... objspace\std\test\test_bytesobject.py ......................................................................s....... objspace\std\test\test_callmethod.py ... objspace\std\test\test_celldict.py ....................................... objspace\std\test\test_complexobject.py .... objspace\std\test\test_dictmultiobject.py ...........s..................................................................................................................................................................... objspace\std\test\test_dictproxy.py .......... objspace\std\test\test_floatobject.py ...................................F.. objspace\std\test\test_identitydict.py ...... objspace\std\test\test_identityset.py ....... objspace\std\test\test_index.py .............................................. objspace\std\test\test_intobject.py .........................F..................................s........................................s............... objspace\std\test\test_iterobject.py .... objspace\std\test\test_jsondict.py ........... objspace\std\test\test_kwargsdict.py .................................... objspace\std\test\test_lengthhint.py .................... objspace\std\test\test_listobject.py ....................................................................................................................... objspace\std\test\test_liststrategies.py ...................................................................s.................................................................. objspace\std\test\test_longobject.py ......................................... objspace\std\test\test_mapdict.py ............................................................................................................................................... objspace\std\test\test_memoryobject.py ....... objspace\std\test\test_methodcache.py ....................................................................... objspace\std\test\test_newformat.py .......................................................................................s........ objspace\std\test\test_noneobject.py ... objspace\std\test\test_obj.py ....................... objspace\std\test\test_prebuiltint.py ...........................s............... objspace\std\test\test_proxy.py ssssssssssss objspace\std\test\test_proxy_function.py ........ objspace\std\test\test_proxy_internals.py ........ objspace\std\test\test_proxy_iter.py . objspace\std\test\test_proxy_object.py .......... objspace\std\test\test_proxy_usercreated.py . objspace\std\test\test_random_attr.py ..... objspace\std\test\test_setobject.py .................................................................................... objspace\std\test\test_setstrategies.py ....s...ss.. objspace\std\test\test_sliceobject.py ............ objspace\std\test\test_smalllongobject.py .........................F..................................s.....................................................................................F..................................s.............. objspace\std\test\test_specialisedtupleobject.py ..................ss....................... objspace\std\test\test_stdobjspace.py s...... objspace\std\test\test_tupleobject.py ................................... objspace\std\test\test_typeobject.py .............................................................................. objspace\std\test\test_unicodeobject.py .................................s........................................................s................. objspace\std\test\test_userobject.py . objspace\std\test\test_versionedtype.py ............... ================================== FAILURES =================================== ___________________ AppTestFloatHex.test_division_edgecases ___________________ self = <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x0000028937afb638> def test_division_edgecases(self): import math, os # inf inf = float("inf") assert math.isnan(inf % 3) assert math.isnan(inf // 3) x, y = divmod(inf, 3) assert math.isnan(x) assert math.isnan(y) x, y = divmod(3, inf) z = 3 % inf if os.name == 'nt': > assert math.isnan(x) E (application-level) AssertionError: assert <built-in function isnan>(0.0) E + where <built-in function isnan> = <built-in function isnan> E + where <built-in function isnan> = <module 'math' (built-in)>.isnan [d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pypy\objspace\std\test\test_floatobject.py:825]:14: AssertionError _________________ TestW_IntObject.test_lshift_without_fromint _________________ self = <pypy.objspace.std.test.test_intobject.TestW_IntObject instance at 0x0000028932ded360> monkeypatch = <_pytest.monkeypatch.monkeypatch instance at 0x0000028932ded4e0> def test_lshift_without_fromint(self, monkeypatch): if LONG_BIT != 64: pytest.skip("64-bit only speedup") space = self.space monkeypatch.setattr(rbigint, 'fromint', None) x = sys.maxint // 4 y = 16 f1 = iobj.W_IntObject(x) f2 = iobj.W_IntObject(y) > v = f1.descr_lshift(space, f2) objspace\std\test\test_intobject.py:363: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ objspace\std\intobject.py:620: in descr_binop return ovf2long(space, x, self, y, w_other) objspace\std\intobject.py:645: in _ovf2long_lshift return space.newlong_from_rbigint(rbigint.lshift_int_int_bigint_result(x, y)) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ iself = 2305843009213693951, int_other = 16 @staticmethod @jit.elidable def lshift_int_int_bigint_result(iself, int_other): if not SUPPORT_INT128 or SHIFT != 63 or not int_in_valid_range(iself): > return rbigint.fromint(iself).lshift(int_other) E TypeError: 'NoneType' object is not callable ..\rpython\rlib\rbigint.py:1383: TypeError _________________ TestW_IntObject.test_lshift_without_fromint _________________ self = <pypy.objspace.std.test.test_intobject.TestW_IntObject instance at 0x0000028932ac70a0> monkeypatch = <_pytest.monkeypatch.monkeypatch instance at 0x0000028932ac70e0> def test_lshift_without_fromint(self, monkeypatch): if LONG_BIT != 64: pytest.skip("64-bit only speedup") space = self.space monkeypatch.setattr(rbigint, 'fromint', None) x = sys.maxint // 4 y = 16 f1 = iobj.W_IntObject(x) f2 = iobj.W_IntObject(y) > v = f1.descr_lshift(space, f2) objspace\std\test\test_intobject.py:363: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ objspace\std\intobject.py:620: in descr_binop return ovf2long(space, x, self, y, w_other) objspace\std\intobject.py:645: in _ovf2long_lshift return space.newlong_from_rbigint(rbigint.lshift_int_int_bigint_result(x, y)) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ iself = 2305843009213693951, int_other = 16 @staticmethod @jit.elidable def lshift_int_int_bigint_result(iself, int_other): if not SUPPORT_INT128 or SHIFT != 63 or not int_in_valid_range(iself): > return rbigint.fromint(iself).lshift(int_other) E TypeError: 'NoneType' object is not callable ..\rpython\rlib\rbigint.py:1383: TypeError __________ TestW_IntObjectWithSmallLong.test_lshift_without_fromint ___________ self = <pypy.objspace.std.test.test_smalllongobject.TestW_IntObjectWithSmallLong instance at 0x000002894a9187e0> monkeypatch = <_pytest.monkeypatch.monkeypatch instance at 0x000002894a918820> def test_lshift_without_fromint(self, monkeypatch): if LONG_BIT != 64: pytest.skip("64-bit only speedup") space = self.space monkeypatch.setattr(rbigint, 'fromint', None) x = sys.maxint // 4 y = 16 f1 = iobj.W_IntObject(x) f2 = iobj.W_IntObject(y) > v = f1.descr_lshift(space, f2) objspace\std\test\test_intobject.py:363: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ objspace\std\intobject.py:620: in descr_binop return ovf2long(space, x, self, y, w_other) objspace\std\intobject.py:645: in _ovf2long_lshift return space.newlong_from_rbigint(rbigint.lshift_int_int_bigint_result(x, y)) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ iself = 2305843009213693951, int_other = 16 @staticmethod @jit.elidable def lshift_int_int_bigint_result(iself, int_other): if not SUPPORT_INT128 or SHIFT != 63 or not int_in_valid_range(iself): > return rbigint.fromint(iself).lshift(int_other) E TypeError: 'NoneType' object is not callable ..\rpython\rlib\rbigint.py:1383: TypeError =========================== short test summary info =========================== FAIL objspace\std\test\test_floatobject.py::AppTestFloatHex::()::test_division_edgecases FAIL objspace\std\test\test_intobject.py::TestW_IntObject::()::test_lshift_without_fromint FAIL objspace\std\test\test_smalllongobject.py::TestW_IntObject::()::test_lshift_without_fromint FAIL objspace\std\test\test_smalllongobject.py::TestW_IntObjectWithSmallLong::()::test_lshift_without_fromint ============= 4 failed, 2097 passed, 31 skipped in 265.89 seconds ============= __ tool/pytest/test [133 done in total, somefailed=False] _____________________ ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.18-alpha], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('d:\\pypy_stuff\\buildbot64\\slave\\own-win-x86-64\\build\\pypy\\.hypothesis\\examples') pytest-2.9.2 from d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build\pytest.pyc rootdir: d:\pypy_stuff\buildbot64\slave\own-win-x86-64\build, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 24 items tool\pytest\test\test_appsupport.py ......... tool\pytest\test\test_astrewrite.py ..... tool\pytest\test\test_conftest1.py .. tool\pytest\test\test_pytestsupport.py ........ ========================= 24 passed in 159.40 seconds ========================= program finished with exit code 1 elapsedTime=2605.688000