[pypy-commit] pypy length-hint: merge default
fijal
noreply at buildbot.pypy.org
Wed Nov 14 20:23:09 CET 2012
Author: Maciej Fijalkowski <fijall at gmail.com>
Branch: length-hint
Changeset: r58907:30d9243ce099
Date: 2012-11-14 13:22 +0100
http://bitbucket.org/pypy/pypy/changeset/30d9243ce099/
Log: merge default
diff too long, truncating to 2000 out of 5368 lines
diff --git a/pypy/doc/release-2.0.0-beta1.rst b/pypy/doc/release-2.0.0-beta1.rst
new file mode 100644
--- /dev/null
+++ b/pypy/doc/release-2.0.0-beta1.rst
@@ -0,0 +1,93 @@
+===============
+PyPy 2.0 beta 1
+===============
+
+We're pleased to announce the 2.0 beta 1 release of PyPy. This release is
+not a typical beta, in a sense the stability is the same or better than 1.9
+and can be used in production. It does however include a few performance
+regressions documented below that don't allow us to label is as 2.0 final.
+(It also contains many performance improvements.)
+
+The main features of this release are support for ARM processor and
+compatibility with CFFI. It also includes
+numerous improvements to the numpy in pypy effort, cpyext and performance.
+
+You can download the PyPy 2.0 beta 1 release here:
+
+ http://pypy.org/download.html
+
+What is PyPy?
+=============
+
+PyPy is a very compliant Python interpreter, almost a drop-in replacement for
+CPython 2.7.3. It's fast (`pypy 2.0 beta 1 and cpython 2.7.3`_
+performance comparison) due to its integrated tracing JIT compiler.
+
+This release supports x86 machines running Linux 32/64, Mac OS X 64 or
+Windows 32. It also supports ARM machines running Linux.
+Windows 64 work is still stalling, we would welcome a volunteer
+to handle that.
+
+.. XXX link
+
+XXX donors info?
+
+Regressions
+===========
+
+Reasons why this is not PyPy 2.0:
+
+* the ``ctypes`` fast path is now slower than it used to be. In PyPy
+ 1.9 ``ctypes`` was either incredibly faster or slower than CPython depending whether
+ you hit the fast path or not. Right now it's usually simply slower. We're
+ probably going to rewrite ``ctypes`` using ``cffi``, which will make it
+ universally faster.
+
+* ``cffi`` (an alternative to interfacing with C code) is very fast, but
+ it is missing one optimization that will make it as fast as a native
+ call from C.
+
+* ``numpypy`` lazy computation was disabled for the sake of simplicity.
+ We should reenable this for the final 2.0 release.
+
+Highlights
+==========
+
+* ``cffi`` is officially supported by PyPy. You can install it normally by
+ using ``pip install cffi`` once you have PyPy installed. The corresponding
+ ``0.4`` version of ``cffi`` has been released.
+
+* ARM is now an officially supported processor architecture.
+ PyPy now work on soft-float ARM/Linux builds. Currently ARM processors
+ supporting the ARMv7 and later ISA that include a floating-point unit are
+ supported.
+
+* This release contains the latest Python standard library 2.7.3 and is fully
+ compatible with Python 2.7.3.
+
+* It does not however contain hash randomization, since the solution present
+ in CPython is not solving the problem anyway. The reason can be
+ found on the `CPython issue tracker`_.
+
+* ``gc.get_referrers()`` is now faster.
+
+* Various numpy improvements. The list includes:
+
+ * axis argument support in many places
+
+ * full support for fancy indexing
+
+ * ``complex128`` and ``complex64`` dtypes
+
+* `JIT hooks`_ are now a powerful tool to introspect the JITting process that
+ PyPy performs.
+
+* ``**kwds`` usage is much faster in the typical scenario
+
+* operations on ``long`` objects are now as fast as in CPython (from
+ roughly 2x slower)
+
+* We now have special strategies for ``dict``/``set``/``list`` which contain
+ unicode strings, which means that now such collections will be both faster
+ and more compact.
+
diff --git a/pypy/doc/whatsnew-2.0.0-beta1.rst b/pypy/doc/whatsnew-2.0.0-beta1.rst
new file mode 100644
--- /dev/null
+++ b/pypy/doc/whatsnew-2.0.0-beta1.rst
@@ -0,0 +1,65 @@
+======================
+What's new in PyPy xxx
+======================
+
+.. this is the revision of the last merge from default to release-1.9.x
+.. startrev: 8d567513d04d
+
+Fixed the performance of gc.get_referrers()
+
+.. branch: default
+.. branch: app_main-refactor
+.. branch: win-ordinal
+.. branch: reflex-support
+Provides cppyy module (disabled by default) for access to C++ through Reflex.
+See doc/cppyy.rst for full details and functionality.
+.. branch: nupypy-axis-arg-check
+Check that axis arg is valid in _numpypy
+.. branch:less-gettestobjspace
+.. branch: move-apptest-support
+
+.. branch: iterator-in-rpython
+.. branch: numpypy_count_nonzero
+.. branch: numpy-refactor
+Remove numpy lazy evaluation and simplify everything
+.. branch: numpy-reintroduce-jit-drivers
+.. branch: numpy-fancy-indexing
+Support for array[array-of-ints] in numpy
+.. branch: even-more-jit-hooks
+Implement better JIT hooks
+.. branch: virtual-arguments
+Improve handling of **kwds greatly, making them virtual sometimes.
+.. branch: improve-rbigint
+Introduce __int128 on systems where it's supported and improve the speed of
+rlib/rbigint.py greatly.
+.. branch: translation-cleanup
+Start to clean up a bit the flow object space.
+.. branch: ffi-backend
+Support CFFI. http://morepypy.blogspot.ch/2012/08/cffi-release-03.html
+.. branch: speedup-unpackiterable
+.. branch: stdlib-2.7.3
+The stdlib was updated to version 2.7.3
+
+.. branch: numpypy-complex2
+Complex dtype support for numpy
+.. branch: numpypy-problems
+Improve dtypes intp, uintp, void, string and record
+.. branch: numpypy.float16
+Add float16 numpy dtype
+.. branch: kill-someobject
+major cleanups including killing some object support
+.. branch: cpyext-PyThreadState_New
+implement threadstate-related functions in cpyext
+
+.. branch: unicode-strategies
+add dict/list/set strategies optimized for unicode items
+
+.. "uninteresting" branches that we should just ignore for the whatsnew:
+.. branch: slightly-shorter-c
+.. branch: better-enforceargs
+.. branch: rpython-unicode-formatting
+.. branch: jit-opaque-licm
+.. branch: rpython-utf8
+Support for utf-8 encoding in RPython
+.. branch: arm-backend-2
+Support ARM in the JIT.
diff --git a/pypy/doc/whatsnew-head.rst b/pypy/doc/whatsnew-head.rst
--- a/pypy/doc/whatsnew-head.rst
+++ b/pypy/doc/whatsnew-head.rst
@@ -44,6 +44,8 @@
Complex dtype support for numpy
.. branch: numpypy-problems
Improve dtypes intp, uintp, void, string and record
+.. branch: numpypy.float16
+Add float16 numpy dtype
.. branch: kill-someobject
major cleanups including killing some object support
.. branch: cpyext-PyThreadState_New
diff --git a/pypy/jit/backend/llgraph/runner.py b/pypy/jit/backend/llgraph/runner.py
--- a/pypy/jit/backend/llgraph/runner.py
+++ b/pypy/jit/backend/llgraph/runner.py
@@ -413,19 +413,19 @@
def bh_unicodegetitem(self, string, index):
return llimpl.do_unicodegetitem(string, index)
- def bh_getarrayitem_gc_i(self, arraydescr, array, index):
+ def bh_getarrayitem_gc_i(self, array, index, arraydescr):
assert isinstance(arraydescr, Descr)
return llimpl.do_getarrayitem_gc_int(array, index)
- def bh_getarrayitem_raw_i(self, arraydescr, array, index):
+ def bh_getarrayitem_raw_i(self, array, index, arraydescr):
assert isinstance(arraydescr, Descr)
return llimpl.do_getarrayitem_raw_int(array, index, arraydescr.ofs)
- def bh_getarrayitem_gc_r(self, arraydescr, array, index):
+ def bh_getarrayitem_gc_r(self, array, index, arraydescr):
assert isinstance(arraydescr, Descr)
return llimpl.do_getarrayitem_gc_ptr(array, index)
- def bh_getarrayitem_gc_f(self, arraydescr, array, index):
+ def bh_getarrayitem_gc_f(self, array, index, arraydescr):
assert isinstance(arraydescr, Descr)
return llimpl.do_getarrayitem_gc_float(array, index)
- def bh_getarrayitem_raw_f(self, arraydescr, array, index):
+ def bh_getarrayitem_raw_f(self, array, index, arraydescr):
assert isinstance(arraydescr, Descr)
return llimpl.do_getarrayitem_raw_float(array, index)
@@ -459,23 +459,23 @@
assert isinstance(descr, Descr)
return llimpl.do_getinteriorfield_gc_float(array, index, descr.ofs)
- def bh_setinteriorfield_gc_i(self, array, index, descr, value):
+ def bh_setinteriorfield_gc_i(self, array, index, value, descr):
assert isinstance(descr, Descr)
return llimpl.do_setinteriorfield_gc_int(array, index, descr.ofs,
value)
- def bh_setinteriorfield_gc_r(self, array, index, descr, value):
+ def bh_setinteriorfield_gc_r(self, array, index, value, descr):
assert isinstance(descr, Descr)
return llimpl.do_setinteriorfield_gc_ptr(array, index, descr.ofs,
value)
- def bh_setinteriorfield_gc_f(self, array, index, descr, value):
+ def bh_setinteriorfield_gc_f(self, array, index, value, descr):
assert isinstance(descr, Descr)
return llimpl.do_setinteriorfield_gc_float(array, index, descr.ofs,
value)
- def bh_raw_store_i(self, struct, offset, descr, newvalue):
+ def bh_raw_store_i(self, struct, offset, newvalue, descr):
assert isinstance(descr, Descr)
return llimpl.do_raw_store_int(struct, offset, descr.ofs, newvalue)
- def bh_raw_store_f(self, struct, offset, descr, newvalue):
+ def bh_raw_store_f(self, struct, offset, newvalue, descr):
assert isinstance(descr, Descr)
return llimpl.do_raw_store_float(struct, offset, newvalue)
def bh_raw_load_i(self, struct, offset, descr):
@@ -489,7 +489,7 @@
assert isinstance(sizedescr, Descr)
return llimpl.do_new(sizedescr.ofs)
- def bh_new_with_vtable(self, sizedescr, vtable):
+ def bh_new_with_vtable(self, vtable, sizedescr):
assert isinstance(sizedescr, Descr)
result = llimpl.do_new(sizedescr.ofs)
llimpl.do_setfield_gc_int(result, self.fielddescrof_vtable.ofs, vtable)
@@ -500,51 +500,51 @@
result_adr = llmemory.cast_ptr_to_adr(struct.typeptr)
return heaptracker.adr2int(result_adr)
- def bh_new_array(self, arraydescr, length):
+ def bh_new_array(self, length, arraydescr):
assert isinstance(arraydescr, Descr)
return llimpl.do_new_array(arraydescr.ofs, length)
- def bh_arraylen_gc(self, arraydescr, array):
+ def bh_arraylen_gc(self, array, arraydescr):
assert isinstance(arraydescr, Descr)
return llimpl.do_arraylen_gc(arraydescr, array)
- def bh_setarrayitem_gc_i(self, arraydescr, array, index, newvalue):
+ def bh_setarrayitem_gc_i(self, array, index, newvalue, arraydescr):
assert isinstance(arraydescr, Descr)
llimpl.do_setarrayitem_gc_int(array, index, newvalue)
- def bh_setarrayitem_raw_i(self, arraydescr, array, index, newvalue):
+ def bh_setarrayitem_raw_i(self, array, index, newvalue, arraydescr):
assert isinstance(arraydescr, Descr)
llimpl.do_setarrayitem_raw_int(array, index, newvalue, arraydescr.ofs)
- def bh_setarrayitem_gc_r(self, arraydescr, array, index, newvalue):
+ def bh_setarrayitem_gc_r(self, array, index, newvalue, arraydescr):
assert isinstance(arraydescr, Descr)
llimpl.do_setarrayitem_gc_ptr(array, index, newvalue)
- def bh_setarrayitem_gc_f(self, arraydescr, array, index, newvalue):
+ def bh_setarrayitem_gc_f(self, array, index, newvalue, arraydescr):
assert isinstance(arraydescr, Descr)
llimpl.do_setarrayitem_gc_float(array, index, newvalue)
- def bh_setarrayitem_raw_f(self, arraydescr, array, index, newvalue):
+ def bh_setarrayitem_raw_f(self, array, index, newvalue, arraydescr):
assert isinstance(arraydescr, Descr)
llimpl.do_setarrayitem_raw_float(array, index, newvalue)
- def bh_setfield_gc_i(self, struct, fielddescr, newvalue):
+ def bh_setfield_gc_i(self, struct, newvalue, fielddescr):
assert isinstance(fielddescr, Descr)
llimpl.do_setfield_gc_int(struct, fielddescr.ofs, newvalue)
- def bh_setfield_gc_r(self, struct, fielddescr, newvalue):
+ def bh_setfield_gc_r(self, struct, newvalue, fielddescr):
assert isinstance(fielddescr, Descr)
llimpl.do_setfield_gc_ptr(struct, fielddescr.ofs, newvalue)
- def bh_setfield_gc_f(self, struct, fielddescr, newvalue):
+ def bh_setfield_gc_f(self, struct, newvalue, fielddescr):
assert isinstance(fielddescr, Descr)
llimpl.do_setfield_gc_float(struct, fielddescr.ofs, newvalue)
- def bh_setfield_raw_i(self, struct, fielddescr, newvalue):
+ def bh_setfield_raw_i(self, struct, newvalue, fielddescr):
assert isinstance(fielddescr, Descr)
llimpl.do_setfield_raw_int(struct, fielddescr.ofs, newvalue)
- def bh_setfield_raw_r(self, struct, fielddescr, newvalue):
+ def bh_setfield_raw_r(self, struct, newvalue, fielddescr):
assert isinstance(fielddescr, Descr)
llimpl.do_setfield_raw_ptr(struct, fielddescr.ofs, newvalue)
- def bh_setfield_raw_f(self, struct, fielddescr, newvalue):
+ def bh_setfield_raw_f(self, struct, newvalue, fielddescr):
assert isinstance(fielddescr, Descr)
llimpl.do_setfield_raw_float(struct, fielddescr.ofs, newvalue)
@@ -560,20 +560,20 @@
def bh_unicodesetitem(self, string, index, newvalue):
llimpl.do_unicodesetitem(string, index, newvalue)
- def bh_call_i(self, func, calldescr, args_i, args_r, args_f):
- self._prepare_call(INT, calldescr, args_i, args_r, args_f)
+ def bh_call_i(self, func, args_i, args_r, args_f, calldescr):
+ self._prepare_call(INT, args_i, args_r, args_f, calldescr)
return llimpl.do_call_int(func)
- def bh_call_r(self, func, calldescr, args_i, args_r, args_f):
- self._prepare_call(REF, calldescr, args_i, args_r, args_f)
+ def bh_call_r(self, func, args_i, args_r, args_f, calldescr):
+ self._prepare_call(REF, args_i, args_r, args_f, calldescr)
return llimpl.do_call_ptr(func)
- def bh_call_f(self, func, calldescr, args_i, args_r, args_f):
- self._prepare_call(FLOAT + 'L', calldescr, args_i, args_r, args_f)
+ def bh_call_f(self, func, args_i, args_r, args_f, calldescr):
+ self._prepare_call(FLOAT + 'L', args_i, args_r, args_f, calldescr)
return llimpl.do_call_float(func)
- def bh_call_v(self, func, calldescr, args_i, args_r, args_f):
- self._prepare_call('v', calldescr, args_i, args_r, args_f)
+ def bh_call_v(self, func, args_i, args_r, args_f, calldescr):
+ self._prepare_call('v', args_i, args_r, args_f, calldescr)
llimpl.do_call_void(func)
- def _prepare_call(self, resulttypeinfo, calldescr, args_i, args_r, args_f):
+ def _prepare_call(self, resulttypeinfo, args_i, args_r, args_f, calldescr):
assert isinstance(calldescr, Descr)
assert calldescr.typeinfo in resulttypeinfo
if args_i is not None:
diff --git a/pypy/jit/backend/llsupport/gc.py b/pypy/jit/backend/llsupport/gc.py
--- a/pypy/jit/backend/llsupport/gc.py
+++ b/pypy/jit/backend/llsupport/gc.py
@@ -83,15 +83,15 @@
assert isinstance(sizedescr, SizeDescr)
return self._bh_malloc(sizedescr)
- def gc_malloc_array(self, arraydescr, num_elem):
+ def gc_malloc_array(self, num_elem, arraydescr):
assert isinstance(arraydescr, ArrayDescr)
- return self._bh_malloc_array(arraydescr, num_elem)
+ return self._bh_malloc_array(num_elem, arraydescr)
def gc_malloc_str(self, num_elem):
- return self._bh_malloc_array(self.str_descr, num_elem)
+ return self._bh_malloc_array(num_elem, self.str_descr)
def gc_malloc_unicode(self, num_elem):
- return self._bh_malloc_array(self.unicode_descr, num_elem)
+ return self._bh_malloc_array(num_elem, self.unicode_descr)
def _record_constptrs(self, op, gcrefs_output_list):
for i in range(op.numargs()):
@@ -193,7 +193,7 @@
def _bh_malloc(self, sizedescr):
return self.malloc_fixedsize(sizedescr.size)
- def _bh_malloc_array(self, arraydescr, num_elem):
+ def _bh_malloc_array(self, num_elem, arraydescr):
return self.malloc_array(arraydescr.basesize, num_elem,
arraydescr.itemsize,
arraydescr.lendescr.offset)
@@ -802,7 +802,7 @@
type_id, sizedescr.size,
False, False, False)
- def _bh_malloc_array(self, arraydescr, num_elem):
+ def _bh_malloc_array(self, num_elem, arraydescr):
from pypy.rpython.memory.gctypelayout import check_typeid
llop1 = self.llop1
type_id = llop.extract_ushort(llgroup.HALFWORD, arraydescr.tid)
diff --git a/pypy/jit/backend/llsupport/llmodel.py b/pypy/jit/backend/llsupport/llmodel.py
--- a/pypy/jit/backend/llsupport/llmodel.py
+++ b/pypy/jit/backend/llsupport/llmodel.py
@@ -307,13 +307,13 @@
# ____________________________________________________________
- def bh_arraylen_gc(self, arraydescr, array):
+ def bh_arraylen_gc(self, array, arraydescr):
assert isinstance(arraydescr, ArrayDescr)
ofs = arraydescr.lendescr.offset
return rffi.cast(rffi.CArrayPtr(lltype.Signed), array)[ofs/WORD]
- @specialize.argtype(2)
- def bh_getarrayitem_gc_i(self, arraydescr, gcref, itemindex):
+ @specialize.argtype(1)
+ def bh_getarrayitem_gc_i(self, gcref, itemindex, arraydescr):
ofs, size, sign = self.unpack_arraydescr_size(arraydescr)
# --- start of GC unsafe code (no GC operation!) ---
items = rffi.ptradd(rffi.cast(rffi.CCHARP, gcref), ofs)
@@ -332,7 +332,7 @@
else:
raise NotImplementedError("size = %d" % size)
- def bh_getarrayitem_gc_r(self, arraydescr, gcref, itemindex):
+ def bh_getarrayitem_gc_r(self, gcref, itemindex, arraydescr):
ofs = self.unpack_arraydescr(arraydescr)
# --- start of GC unsafe code (no GC operation!) ---
items = rffi.ptradd(rffi.cast(rffi.CCHARP, gcref), ofs)
@@ -341,8 +341,8 @@
# --- end of GC unsafe code ---
return pval
- @specialize.argtype(2)
- def bh_getarrayitem_gc_f(self, arraydescr, gcref, itemindex):
+ @specialize.argtype(1)
+ def bh_getarrayitem_gc_f(self, gcref, itemindex, arraydescr):
ofs = self.unpack_arraydescr(arraydescr)
# --- start of GC unsafe code (no GC operation!) ---
items = rffi.ptradd(rffi.cast(rffi.CCHARP, gcref), ofs)
@@ -351,8 +351,8 @@
# --- end of GC unsafe code ---
return fval
- @specialize.argtype(2)
- def bh_setarrayitem_gc_i(self, arraydescr, gcref, itemindex, newvalue):
+ @specialize.argtype(1)
+ def bh_setarrayitem_gc_i(self, gcref, itemindex, newvalue, arraydescr):
ofs, size, sign = self.unpack_arraydescr_size(arraydescr)
# --- start of GC unsafe code (no GC operation!) ---
items = rffi.ptradd(rffi.cast(rffi.CCHARP, gcref), ofs)
@@ -365,7 +365,7 @@
else:
raise NotImplementedError("size = %d" % size)
- def bh_setarrayitem_gc_r(self, arraydescr, gcref, itemindex, newvalue):
+ def bh_setarrayitem_gc_r(self, gcref, itemindex, newvalue, arraydescr):
ofs = self.unpack_arraydescr(arraydescr)
self.gc_ll_descr.do_write_barrier(gcref, newvalue)
# --- start of GC unsafe code (no GC operation!) ---
@@ -374,8 +374,8 @@
items[itemindex] = self.cast_gcref_to_int(newvalue)
# --- end of GC unsafe code ---
- @specialize.argtype(2)
- def bh_setarrayitem_gc_f(self, arraydescr, gcref, itemindex, newvalue):
+ @specialize.argtype(1)
+ def bh_setarrayitem_gc_f(self, gcref, itemindex, newvalue, arraydescr):
ofs = self.unpack_arraydescr(arraydescr)
# --- start of GC unsafe code (no GC operation!) ---
items = rffi.ptradd(rffi.cast(rffi.CCHARP, gcref), ofs)
@@ -440,7 +440,7 @@
# --- end of GC unsafe code ---
return fval
- def bh_setinteriorfield_gc_i(self, gcref, itemindex, descr, value):
+ def bh_setinteriorfield_gc_i(self, gcref, itemindex, value, descr):
assert isinstance(descr, InteriorFieldDescr)
arraydescr = descr.arraydescr
ofs, size, _ = self.unpack_arraydescr_size(arraydescr)
@@ -458,7 +458,7 @@
else:
raise NotImplementedError("size = %d" % fieldsize)
- def bh_setinteriorfield_gc_r(self, gcref, itemindex, descr, newvalue):
+ def bh_setinteriorfield_gc_r(self, gcref, itemindex, newvalue, descr):
assert isinstance(descr, InteriorFieldDescr)
arraydescr = descr.arraydescr
ofs, size, _ = self.unpack_arraydescr_size(arraydescr)
@@ -471,7 +471,7 @@
items[0] = self.cast_gcref_to_int(newvalue)
# --- end of GC unsafe code ---
- def bh_setinteriorfield_gc_f(self, gcref, itemindex, descr, newvalue):
+ def bh_setinteriorfield_gc_f(self, gcref, itemindex, newvalue, descr):
assert isinstance(descr, InteriorFieldDescr)
arraydescr = descr.arraydescr
ofs, size, _ = self.unpack_arraydescr_size(arraydescr)
@@ -547,7 +547,7 @@
bh_getfield_raw_f = _base_do_getfield_f
@specialize.argtype(1)
- def _base_do_setfield_i(self, struct, fielddescr, newvalue):
+ def _base_do_setfield_i(self, struct, newvalue, fielddescr):
ofs, size, sign = self.unpack_fielddescr_size(fielddescr)
# --- start of GC unsafe code (no GC operation!) ---
fieldptr = rffi.ptradd(rffi.cast(rffi.CCHARP, struct), ofs)
@@ -561,7 +561,7 @@
raise NotImplementedError("size = %d" % size)
@specialize.argtype(1)
- def _base_do_setfield_r(self, struct, fielddescr, newvalue):
+ def _base_do_setfield_r(self, struct, newvalue, fielddescr):
ofs = self.unpack_fielddescr(fielddescr)
assert lltype.typeOf(struct) is not lltype.Signed, (
"can't handle write barriers for setfield_raw")
@@ -573,7 +573,7 @@
# --- end of GC unsafe code ---
@specialize.argtype(1)
- def _base_do_setfield_f(self, struct, fielddescr, newvalue):
+ def _base_do_setfield_f(self, struct, newvalue, fielddescr):
ofs = self.unpack_fielddescr(fielddescr)
# --- start of GC unsafe code (no GC operation!) ---
fieldptr = rffi.ptradd(rffi.cast(rffi.CCHARP, struct), ofs)
@@ -588,7 +588,7 @@
bh_setfield_raw_r = _base_do_setfield_r
bh_setfield_raw_f = _base_do_setfield_f
- def bh_raw_store_i(self, addr, offset, descr, newvalue):
+ def bh_raw_store_i(self, addr, offset, newvalue, descr):
ofs, size, sign = self.unpack_arraydescr_size(descr)
items = addr + offset
for TYPE, _, itemsize in unroll_basic_sizes:
@@ -597,7 +597,7 @@
items[0] = rffi.cast(TYPE, newvalue)
break
- def bh_raw_store_f(self, addr, offset, descr, newvalue):
+ def bh_raw_store_f(self, addr, offset, newvalue, descr):
items = rffi.cast(rffi.CArrayPtr(longlong.FLOATSTORAGE), addr + offset)
items[0] = newvalue
@@ -617,7 +617,7 @@
def bh_new(self, sizedescr):
return self.gc_ll_descr.gc_malloc(sizedescr)
- def bh_new_with_vtable(self, sizedescr, vtable):
+ def bh_new_with_vtable(self, vtable, sizedescr):
res = self.gc_ll_descr.gc_malloc(sizedescr)
if self.vtable_offset is not None:
as_array = rffi.cast(rffi.CArrayPtr(lltype.Signed), res)
@@ -629,8 +629,8 @@
result_adr = llmemory.cast_ptr_to_adr(struct.typeptr)
return heaptracker.adr2int(result_adr)
- def bh_new_array(self, arraydescr, length):
- return self.gc_ll_descr.gc_malloc_array(arraydescr, length)
+ def bh_new_array(self, length, arraydescr):
+ return self.gc_ll_descr.gc_malloc_array(length, arraydescr)
def bh_newstr(self, length):
return self.gc_ll_descr.gc_malloc_str(length)
@@ -656,25 +656,25 @@
dst = lltype.cast_opaque_ptr(lltype.Ptr(rstr.UNICODE), dst)
rstr.copy_unicode_contents(src, dst, srcstart, dststart, length)
- def bh_call_i(self, func, calldescr, args_i, args_r, args_f):
+ def bh_call_i(self, func, args_i, args_r, args_f, calldescr):
assert isinstance(calldescr, CallDescr)
if not we_are_translated():
calldescr.verify_types(args_i, args_r, args_f, history.INT + 'S')
return calldescr.call_stub_i(func, args_i, args_r, args_f)
- def bh_call_r(self, func, calldescr, args_i, args_r, args_f):
+ def bh_call_r(self, func, args_i, args_r, args_f, calldescr):
assert isinstance(calldescr, CallDescr)
if not we_are_translated():
calldescr.verify_types(args_i, args_r, args_f, history.REF)
return calldescr.call_stub_r(func, args_i, args_r, args_f)
- def bh_call_f(self, func, calldescr, args_i, args_r, args_f):
+ def bh_call_f(self, func, args_i, args_r, args_f, calldescr):
assert isinstance(calldescr, CallDescr)
if not we_are_translated():
calldescr.verify_types(args_i, args_r, args_f, history.FLOAT + 'L')
return calldescr.call_stub_f(func, args_i, args_r, args_f)
- def bh_call_v(self, func, calldescr, args_i, args_r, args_f):
+ def bh_call_v(self, func, args_i, args_r, args_f, calldescr):
assert isinstance(calldescr, CallDescr)
if not we_are_translated():
calldescr.verify_types(args_i, args_r, args_f, history.VOID)
diff --git a/pypy/jit/backend/llsupport/test/test_gc.py b/pypy/jit/backend/llsupport/test/test_gc.py
--- a/pypy/jit/backend/llsupport/test/test_gc.py
+++ b/pypy/jit/backend/llsupport/test/test_gc.py
@@ -33,7 +33,7 @@
# ---------- gc_malloc_array ----------
A = lltype.GcArray(lltype.Signed)
arraydescr = get_array_descr(gc_ll_descr, A)
- p = gc_ll_descr.gc_malloc_array(arraydescr, 10)
+ p = gc_ll_descr.gc_malloc_array(10, arraydescr)
assert record == [(arraydescr.basesize +
10 * arraydescr.itemsize, p)]
del record[:]
@@ -357,7 +357,7 @@
def test_gc_malloc_array(self):
A = lltype.GcArray(lltype.Signed)
arraydescr = get_array_descr(self.gc_ll_descr, A)
- p = self.gc_ll_descr.gc_malloc_array(arraydescr, 10)
+ p = self.gc_ll_descr.gc_malloc_array(10, arraydescr)
assert self.llop1.record == [("varsize", arraydescr.tid, 10,
repr(arraydescr.basesize),
repr(arraydescr.itemsize),
diff --git a/pypy/jit/backend/model.py b/pypy/jit/backend/model.py
--- a/pypy/jit/backend/model.py
+++ b/pypy/jit/backend/model.py
@@ -233,11 +233,11 @@
# lltype specific operations
# --------------------------
- def bh_getarrayitem_gc_i(self, arraydescr, array, index):
+ def bh_getarrayitem_gc_i(self, array, index, arraydescr):
raise NotImplementedError
- def bh_getarrayitem_gc_r(self, arraydescr, array, index):
+ def bh_getarrayitem_gc_r(self, array, index, arraydescr):
raise NotImplementedError
- def bh_getarrayitem_gc_f(self, arraydescr, array, index):
+ def bh_getarrayitem_gc_f(self, array, index, arraydescr):
raise NotImplementedError
def bh_getfield_gc_i(self, struct, fielddescr):
@@ -256,49 +256,49 @@
def bh_new(self, sizedescr):
raise NotImplementedError
- def bh_new_with_vtable(self, sizedescr, vtable):
+ def bh_new_with_vtable(self, vtable, sizedescr):
raise NotImplementedError
- def bh_new_array(self, arraydescr, length):
+ def bh_new_array(self, length, arraydescr):
raise NotImplementedError
def bh_newstr(self, length):
raise NotImplementedError
def bh_newunicode(self, length):
raise NotImplementedError
- def bh_arraylen_gc(self, arraydescr, array):
+ def bh_arraylen_gc(self, array, arraydescr):
raise NotImplementedError
def bh_classof(self, struct):
raise NotImplementedError
- def bh_setarrayitem_gc_i(self, arraydescr, array, index, newvalue):
+ def bh_setarrayitem_gc_i(self, array, index, newvalue, arraydescr):
raise NotImplementedError
- def bh_setarrayitem_gc_r(self, arraydescr, array, index, newvalue):
+ def bh_setarrayitem_gc_r(self, array, index, newvalue, arraydescr):
raise NotImplementedError
- def bh_setarrayitem_gc_f(self, arraydescr, array, index, newvalue):
+ def bh_setarrayitem_gc_f(self, array, index, newvalue, arraydescr):
raise NotImplementedError
- def bh_setfield_gc_i(self, struct, fielddescr, newvalue):
+ def bh_setfield_gc_i(self, struct, newvalue, fielddescr):
raise NotImplementedError
- def bh_setfield_gc_r(self, struct, fielddescr, newvalue):
+ def bh_setfield_gc_r(self, struct, newvalue, fielddescr):
raise NotImplementedError
- def bh_setfield_gc_f(self, struct, fielddescr, newvalue):
+ def bh_setfield_gc_f(self, struct, newvalue, fielddescr):
raise NotImplementedError
- def bh_setfield_raw_i(self, struct, fielddescr, newvalue):
+ def bh_setfield_raw_i(self, struct, newvalue, fielddescr):
raise NotImplementedError
- def bh_setfield_raw_r(self, struct, fielddescr, newvalue):
+ def bh_setfield_raw_r(self, struct, newvalue, fielddescr):
raise NotImplementedError
- def bh_setfield_raw_f(self, struct, fielddescr, newvalue):
+ def bh_setfield_raw_f(self, struct, newvalue, fielddescr):
raise NotImplementedError
- def bh_call_i(self, func, calldescr, args_i, args_r, args_f):
+ def bh_call_i(self, func, args_i, args_r, args_f, calldescr):
raise NotImplementedError
- def bh_call_r(self, func, calldescr, args_i, args_r, args_f):
+ def bh_call_r(self, func, args_i, args_r, args_f, calldescr):
raise NotImplementedError
- def bh_call_f(self, func, calldescr, args_i, args_r, args_f):
+ def bh_call_f(self, func, args_i, args_r, args_f, calldescr):
raise NotImplementedError
- def bh_call_v(self, func, calldescr, args_i, args_r, args_f):
+ def bh_call_v(self, func, args_i, args_r, args_f, calldescr):
raise NotImplementedError
def bh_strlen(self, string):
diff --git a/pypy/jit/backend/test/runner_test.py b/pypy/jit/backend/test/runner_test.py
--- a/pypy/jit/backend/test/runner_test.py
+++ b/pypy/jit/backend/test/runner_test.py
@@ -511,7 +511,7 @@
calldescr = cpu.calldescrof(deref(FPTR), (lltype.Char,), lltype.Char,
EffectInfo.MOST_GENERAL)
x = cpu.bh_call_i(self.get_funcbox(cpu, func_ptr).value,
- calldescr, [ord('A')], None, None)
+ [ord('A')], None, None, calldescr)
assert x == ord('B')
if cpu.supports_floats:
def func(f, i):
@@ -525,8 +525,8 @@
calldescr = cpu.calldescrof(FTP, FTP.ARGS, FTP.RESULT,
EffectInfo.MOST_GENERAL)
x = cpu.bh_call_f(self.get_funcbox(cpu, func_ptr).value,
- calldescr,
- [42], None, [longlong.getfloatstorage(3.5)])
+ [42], None, [longlong.getfloatstorage(3.5)],
+ calldescr)
assert longlong.getrealfloat(x) == 3.5 - 42
def test_call(self):
@@ -1002,7 +1002,7 @@
'void', descr=kdescr)
f = self.cpu.bh_getinteriorfield_gc_f(a_box.getref_base(), 3, kdescr)
assert longlong.getrealfloat(f) == 1.5
- self.cpu.bh_setinteriorfield_gc_f(a_box.getref_base(), 3, kdescr, longlong.getfloatstorage(2.5))
+ self.cpu.bh_setinteriorfield_gc_f(a_box.getref_base(), 3, longlong.getfloatstorage(2.5), kdescr)
r = self.execute_operation(rop.GETINTERIORFIELD_GC, [a_box, BoxInt(3)],
'float', descr=kdescr)
assert r.getfloat() == 2.5
@@ -1028,7 +1028,7 @@
for name, TYPE in NUMBER_FIELDS[::-1]:
vdescr = self.cpu.interiorfielddescrof(A, name)
self.cpu.bh_setinteriorfield_gc_i(a_box.getref_base(), 3,
- vdescr, -25)
+ -25, vdescr)
for name, TYPE in NUMBER_FIELDS:
vdescr = self.cpu.interiorfielddescrof(A, name)
r = self.execute_operation(rop.GETINTERIORFIELD_GC,
@@ -1041,8 +1041,8 @@
'void', descr=pdescr)
r = self.cpu.bh_getinteriorfield_gc_r(a_box.getref_base(), 4, pdescr)
assert r == s_box.getref_base()
- self.cpu.bh_setinteriorfield_gc_r(a_box.getref_base(), 3, pdescr,
- s_box.getref_base())
+ self.cpu.bh_setinteriorfield_gc_r(a_box.getref_base(), 3,
+ s_box.getref_base(), pdescr)
r = self.execute_operation(rop.GETINTERIORFIELD_GC, [a_box, BoxInt(3)],
'ref', descr=pdescr)
assert r.getref_base() == s_box.getref_base()
@@ -1926,7 +1926,7 @@
assert s.parent.chr2 == chr(150)
r = self.cpu.bh_getfield_gc_i(r1.value, descrshort)
assert r == 1313
- self.cpu.bh_setfield_gc_i(r1.value, descrshort, 1333)
+ self.cpu.bh_setfield_gc_i(r1.value, 1333, descrshort)
r = self.cpu.bh_getfield_gc_i(r1.value, descrshort)
assert r == 1333
r = self.execute_operation(rop.GETFIELD_GC, [r1], 'int',
@@ -2564,13 +2564,13 @@
A = lltype.GcArray(lltype.Char)
descr_A = cpu.arraydescrof(A)
a = lltype.malloc(A, 5)
- x = cpu.bh_arraylen_gc(descr_A,
- lltype.cast_opaque_ptr(llmemory.GCREF, a))
+ x = cpu.bh_arraylen_gc(lltype.cast_opaque_ptr(llmemory.GCREF, a),
+ descr_A)
assert x == 5
#
a[2] = 'Y'
x = cpu.bh_getarrayitem_gc_i(
- descr_A, lltype.cast_opaque_ptr(llmemory.GCREF, a), 2)
+ lltype.cast_opaque_ptr(llmemory.GCREF, a), 2, descr_A)
assert x == ord('Y')
#
B = lltype.GcArray(lltype.Ptr(A))
@@ -2578,7 +2578,7 @@
b = lltype.malloc(B, 4)
b[3] = a
x = cpu.bh_getarrayitem_gc_r(
- descr_B, lltype.cast_opaque_ptr(llmemory.GCREF, b), 3)
+ lltype.cast_opaque_ptr(llmemory.GCREF, b), 3, descr_B)
assert lltype.cast_opaque_ptr(lltype.Ptr(A), x) == a
if self.cpu.supports_floats:
C = lltype.GcArray(lltype.Float)
@@ -2586,11 +2586,11 @@
c[3] = 3.5
descr_C = cpu.arraydescrof(C)
x = cpu.bh_getarrayitem_gc_f(
- descr_C, lltype.cast_opaque_ptr(llmemory.GCREF, c), 3)
+ lltype.cast_opaque_ptr(llmemory.GCREF, c), 3, descr_C)
assert longlong.getrealfloat(x) == 3.5
cpu.bh_setarrayitem_gc_f(
- descr_C, lltype.cast_opaque_ptr(llmemory.GCREF, c), 4,
- longlong.getfloatstorage(4.5))
+ lltype.cast_opaque_ptr(llmemory.GCREF, c), 4,
+ longlong.getfloatstorage(4.5), descr_C)
assert c[4] == 4.5
s = rstr.mallocstr(6)
x = cpu.bh_strlen(lltype.cast_opaque_ptr(llmemory.GCREF, s))
@@ -2610,8 +2610,7 @@
assert x == ord('Z')
#
cpu.bh_setfield_gc_i(lltype.cast_opaque_ptr(llmemory.GCREF, s),
- descrfld_x,
- ord('4'))
+ ord('4'), descrfld_x)
assert s.x == '4'
#
descrfld_y = cpu.fielddescrof(S, 'y')
@@ -2622,7 +2621,7 @@
#
s.y = lltype.nullptr(A)
cpu.bh_setfield_gc_r(lltype.cast_opaque_ptr(llmemory.GCREF, s),
- descrfld_y, x)
+ x, descrfld_y)
assert s.y == a
#
RS = lltype.Struct('S', ('x', lltype.Char)) #, ('y', lltype.Ptr(A)))
@@ -2636,7 +2635,7 @@
#
cpu.bh_setfield_raw_i(
heaptracker.adr2int(llmemory.cast_ptr_to_adr(rs)),
- descrfld_rx, ord('!'))
+ ord('!'), descrfld_rx)
assert rs.x == '!'
#
@@ -2644,7 +2643,7 @@
descrfld_z = cpu.fielddescrof(S, 'z')
cpu.bh_setfield_gc_f(
lltype.cast_opaque_ptr(llmemory.GCREF, s),
- descrfld_z, longlong.getfloatstorage(3.5))
+ longlong.getfloatstorage(3.5), descrfld_z)
assert s.z == 3.5
s.z = 3.2
x = cpu.bh_getfield_gc_f(
@@ -2675,21 +2674,21 @@
vtable2 = lltype.malloc(rclass.OBJECT_VTABLE, immortal=True)
vtable2_int = heaptracker.adr2int(llmemory.cast_ptr_to_adr(vtable2))
heaptracker.register_known_gctype(cpu, vtable2, rclass.OBJECT)
- x = cpu.bh_new_with_vtable(descrsize2, vtable2_int)
+ x = cpu.bh_new_with_vtable(vtable2_int, descrsize2)
lltype.cast_opaque_ptr(lltype.Ptr(rclass.OBJECT), x) # type check
# well...
#assert x.getref(rclass.OBJECTPTR).typeptr == vtable2
#
arraydescr = cpu.arraydescrof(A)
- x = cpu.bh_new_array(arraydescr, 7)
+ x = cpu.bh_new_array(7, arraydescr)
array = lltype.cast_opaque_ptr(lltype.Ptr(A), x)
assert len(array) == 7
#
- cpu.bh_setarrayitem_gc_i(descr_A, x, 5, ord('*'))
+ cpu.bh_setarrayitem_gc_i(x, 5, ord('*'), descr_A)
assert array[5] == '*'
#
cpu.bh_setarrayitem_gc_r(
- descr_B, lltype.cast_opaque_ptr(llmemory.GCREF, b), 1, x)
+ lltype.cast_opaque_ptr(llmemory.GCREF, b), 1, x, descr_B)
assert b[1] == array
#
x = cpu.bh_newstr(5)
@@ -3029,7 +3028,7 @@
expected = rffi.cast(lltype.Signed, rffi.cast(RESTYPE, value))
a[3] = rffi.cast(RESTYPE, value)
x = cpu.bh_getarrayitem_gc_i(
- descrarray, lltype.cast_opaque_ptr(llmemory.GCREF, a), 3)
+ lltype.cast_opaque_ptr(llmemory.GCREF, a), 3, descrarray)
assert x == expected, (
"%r: got %r, expected %r" % (RESTYPE, x, expected))
@@ -3071,7 +3070,7 @@
expected = rffi.cast(lltype.Signed, rffi.cast(RESTYPE, value))
a[3] = rffi.cast(RESTYPE, value)
a_rawint = heaptracker.adr2int(llmemory.cast_ptr_to_adr(a))
- x = cpu.bh_getarrayitem_raw_i(descrarray, a_rawint, 3)
+ x = cpu.bh_getarrayitem_raw_i(a_rawint, 3, descrarray)
assert x == expected, (
"%r: got %r, expected %r" % (RESTYPE, x, expected))
lltype.free(a, flavor='raw')
@@ -3129,7 +3128,7 @@
calldescr = self.cpu.calldescrof(FUNC, FUNC.ARGS, FUNC.RESULT,
EffectInfo.MOST_GENERAL)
x = self.cpu.bh_call_i(self.get_funcbox(self.cpu, f).value,
- calldescr, [value], None, None)
+ [value], None, None, calldescr)
assert x == expected, (
"%r: got %r, expected %r" % (RESTYPE, x, expected))
@@ -3198,7 +3197,7 @@
calldescr = self.cpu.calldescrof(FUNC, FUNC.ARGS, FUNC.RESULT,
EffectInfo.MOST_GENERAL)
x = self.cpu.bh_call_f(self.get_funcbox(self.cpu, f).value,
- calldescr, None, None, [value])
+ None, None, [value], calldescr)
assert x == expected
def test_longlong_result_of_call_compiled(self):
@@ -3257,7 +3256,7 @@
ivalue = longlong.singlefloat2int(value)
iexpected = longlong.singlefloat2int(expected)
x = self.cpu.bh_call_i(self.get_funcbox(self.cpu, f).value,
- calldescr, [ivalue], None, None)
+ [ivalue], None, None, calldescr)
assert x == iexpected
def test_singlefloat_result_of_call_compiled(self):
diff --git a/pypy/jit/codewriter/jtransform.py b/pypy/jit/codewriter/jtransform.py
--- a/pypy/jit/codewriter/jtransform.py
+++ b/pypy/jit/codewriter/jtransform.py
@@ -316,7 +316,8 @@
kind = self.callcontrol.guess_call_kind(op)
return getattr(self, 'handle_%s_indirect_call' % kind)(op)
- def rewrite_call(self, op, namebase, initialargs, args=None):
+ def rewrite_call(self, op, namebase, initialargs, args=None,
+ calldescr=None):
"""Turn 'i0 = direct_call(fn, i1, i2, ref1, ref2)'
into 'i0 = xxx_call_ir_i(fn, descr, [i1,i2], [ref1,ref2])'.
The name is one of '{residual,direct}_call_{r,ir,irf}_{i,r,f,v}'."""
@@ -332,6 +333,8 @@
if 'i' in kinds: sublists.append(lst_i)
if 'r' in kinds: sublists.append(lst_r)
if 'f' in kinds: sublists.append(lst_f)
+ if calldescr is not None:
+ sublists.append(calldescr)
return SpaceOperation('%s_%s_%s' % (namebase, kinds, reskind),
initialargs + sublists, op.result)
@@ -360,7 +363,7 @@
of 'residual_call_xxx' are the function to call, and its calldescr."""
calldescr = self.callcontrol.getcalldescr(op)
op1 = self.rewrite_call(op, 'residual_call',
- [op.args[0], calldescr] + extraargs)
+ [op.args[0]] + extraargs, calldescr=calldescr)
if may_call_jitcodes or self.callcontrol.calldescr_canraise(calldescr):
op1 = [op1, SpaceOperation('-live-', [], None)]
return op1
@@ -547,7 +550,7 @@
# XXX only strings or simple arrays for now
ARRAY = op.args[0].value
arraydescr = self.cpu.arraydescrof(ARRAY)
- return SpaceOperation('new_array', [arraydescr, op.args[2]],
+ return SpaceOperation('new_array', [op.args[2], arraydescr],
op.result)
def rewrite_op_free(self, op):
@@ -579,8 +582,8 @@
kind = getkind(op.result.concretetype)
return [SpaceOperation('-live-', [], None),
SpaceOperation('getarrayitem_vable_%s' % kind[0],
- [v_base, arrayfielddescr, arraydescr,
- op.args[1]], op.result)]
+ [v_base, op.args[1], arrayfielddescr,
+ arraydescr], op.result)]
# normal case follows
pure = ''
immut = ARRAY._immutable_field(None)
@@ -590,7 +593,7 @@
kind = getkind(op.result.concretetype)
return SpaceOperation('getarrayitem_%s_%s%s' % (ARRAY._gckind,
kind[0], pure),
- [op.args[0], arraydescr, op.args[1]],
+ [op.args[0], op.args[1], arraydescr],
op.result)
def rewrite_op_setarrayitem(self, op):
@@ -603,12 +606,12 @@
kind = getkind(op.args[2].concretetype)
return [SpaceOperation('-live-', [], None),
SpaceOperation('setarrayitem_vable_%s' % kind[0],
- [v_base, arrayfielddescr, arraydescr,
- op.args[1], op.args[2]], None)]
+ [v_base, op.args[1], op.args[2],
+ arrayfielddescr, arraydescr], None)]
arraydescr = self.cpu.arraydescrof(ARRAY)
kind = getkind(op.args[2].concretetype)
return SpaceOperation('setarrayitem_%s_%s' % (ARRAY._gckind, kind[0]),
- [op.args[0], arraydescr, op.args[1], op.args[2]],
+ [op.args[0], op.args[1], op.args[2], arraydescr],
None)
def rewrite_op_getarraysize(self, op):
@@ -702,14 +705,14 @@
kind = getkind(RESULT)[0]
return [SpaceOperation('-live-', [], None),
SpaceOperation('setfield_vable_%s' % kind,
- [v_inst, descr, v_value], None)]
+ [v_inst, v_value, descr], None)]
self.check_field_access(v_inst.concretetype.TO)
argname = getattr(v_inst.concretetype.TO, '_gckind', 'gc')
descr = self.cpu.fielddescrof(v_inst.concretetype.TO,
c_fieldname.value)
kind = getkind(RESULT)[0]
return SpaceOperation('setfield_%s_%s' % (argname, kind),
- [v_inst, descr, v_value],
+ [v_inst, v_value, descr],
None)
def rewrite_op_getsubstruct(self, op):
@@ -877,7 +880,7 @@
assert kind != 'r'
descr = self.cpu.arraydescrof(rffi.CArray(T))
return SpaceOperation('raw_store_%s' % kind,
- [op.args[0], op.args[1], descr, op.args[2]],
+ [op.args[0], op.args[1], op.args[2], descr],
None)
def rewrite_op_raw_load(self, op):
@@ -1455,8 +1458,8 @@
v_posindex = Variable('posindex')
v_posindex.concretetype = lltype.Signed
op0 = SpaceOperation('-live-', [], None)
- op1 = SpaceOperation(checkname, [args[0],
- descr, args[1]], v_posindex)
+ op1 = SpaceOperation(checkname, [args[0], args[1],
+ descr], v_posindex)
return v_posindex, [op0, op1]
def _prepare_void_list_getset(self, op):
@@ -1491,7 +1494,7 @@
v = Variable('new_length')
v.concretetype = lltype.Signed
ops.append(SpaceOperation('int_force_ge_zero', [v_length], v))
- ops.append(SpaceOperation('new_array', [arraydescr, v], op.result))
+ ops.append(SpaceOperation('new_array', [v, arraydescr], op.result))
return ops
def do_fixed_list_len(self, op, args, arraydescr):
@@ -1513,15 +1516,15 @@
kind = getkind(op.result.concretetype)
return [SpaceOperation('-live-', [], None),
SpaceOperation('getarrayitem_vable_%s' % kind[0],
- [v_base, arrayfielddescr, arraydescr,
- args[1]], op.result)]
+ [v_base, args[1], arrayfielddescr,
+ arraydescr], op.result)]
v_index, extraop = self._prepare_list_getset(op, arraydescr, args,
'check_neg_index')
extra = getkind(op.result.concretetype)[0]
if pure:
extra += '_pure'
op = SpaceOperation('getarrayitem_gc_%s' % extra,
- [args[0], arraydescr, v_index], op.result)
+ [args[0], v_index, arraydescr], op.result)
return extraop + [op]
def do_fixed_list_getitem_foldable(self, op, args, arraydescr):
@@ -1534,13 +1537,13 @@
kind = getkind(args[2].concretetype)
return [SpaceOperation('-live-', [], None),
SpaceOperation('setarrayitem_vable_%s' % kind[0],
- [v_base, arrayfielddescr, arraydescr,
- args[1], args[2]], None)]
+ [v_base, args[1], args[2],
+ arrayfielddescr, arraydescr], None)]
v_index, extraop = self._prepare_list_getset(op, arraydescr, args,
'check_neg_index')
kind = getkind(args[2].concretetype)[0]
op = SpaceOperation('setarrayitem_gc_%s' % kind,
- [args[0], arraydescr, v_index, args[2]], None)
+ [args[0], v_index, args[2], arraydescr], None)
return extraop + [op]
def do_fixed_list_ll_arraycopy(self, op, args, arraydescr):
@@ -1558,16 +1561,16 @@
itemsdescr, structdescr):
v_length = self._get_initial_newlist_length(op, args)
return SpaceOperation('newlist',
- [structdescr, lengthdescr, itemsdescr,
- arraydescr, v_length],
+ [v_length, structdescr, lengthdescr, itemsdescr,
+ arraydescr],
op.result)
def do_resizable_newlist_hint(self, op, args, arraydescr, lengthdescr,
itemsdescr, structdescr):
v_hint = self._get_initial_newlist_length(op, args)
return SpaceOperation('newlist_hint',
- [structdescr, lengthdescr, itemsdescr,
- arraydescr, v_hint],
+ [v_hint, structdescr, lengthdescr, itemsdescr,
+ arraydescr],
op.result)
def do_resizable_list_getitem(self, op, args, arraydescr, lengthdescr,
@@ -1576,7 +1579,7 @@
'check_resizable_neg_index')
kind = getkind(op.result.concretetype)[0]
op = SpaceOperation('getlistitem_gc_%s' % kind,
- [args[0], itemsdescr, arraydescr, v_index],
+ [args[0], v_index, itemsdescr, arraydescr],
op.result)
return extraop + [op]
@@ -1586,8 +1589,8 @@
'check_resizable_neg_index')
kind = getkind(args[2].concretetype)[0]
op = SpaceOperation('setlistitem_gc_%s' % kind,
- [args[0], itemsdescr, arraydescr,
- v_index, args[2]], None)
+ [args[0], v_index, args[2],
+ itemsdescr, arraydescr], None)
return extraop + [op]
def do_resizable_list_len(self, op, args, arraydescr, lengthdescr,
@@ -1618,8 +1621,8 @@
self.callcontrol.callinfocollection.add(oopspecindex,
calldescr, func)
op1 = self.rewrite_call(op, 'residual_call',
- [op.args[0], calldescr],
- args=args)
+ [op.args[0]],
+ args=args, calldescr=calldescr)
if self.callcontrol.calldescr_canraise(calldescr):
op1 = [op1, SpaceOperation('-live-', [], None)]
return op1
diff --git a/pypy/jit/codewriter/test/test_flatten.py b/pypy/jit/codewriter/test/test_flatten.py
--- a/pypy/jit/codewriter/test/test_flatten.py
+++ b/pypy/jit/codewriter/test/test_flatten.py
@@ -371,7 +371,7 @@
return 4
self.encoding_test(f, [65], """
- residual_call_ir_v $<* fn g>, <Descr>, I[%i0], R[]
+ residual_call_ir_v $<* fn g>, I[%i0], R[], <Descr>
-live-
catch_exception L1
int_return $4
@@ -430,16 +430,16 @@
foo.sideeffect = 5
self.encoding_test(f, [65], """
- residual_call_ir_v $<* fn get_exception>, <Descr>, I[%i0], R[]
+ residual_call_ir_v $<* fn get_exception>, I[%i0], R[], <Descr>
-live-
catch_exception L1
- setfield_gc_i $<* struct test.Foo>, <Descr>, $5
+ setfield_gc_i $<* struct test.Foo>, $5, <Descr>
void_return
---
L1:
last_exception -> %i1
last_exc_value -> %r0
- setfield_gc_i $<* struct test.Foo>, <Descr>, $5
+ setfield_gc_i $<* struct test.Foo>, $5, <Descr>
-live-
raise %r0
""", transform=True)
@@ -470,7 +470,7 @@
except ZeroDivisionError:
return -42
self.encoding_test(f, [7, 2], """
- residual_call_ir_i $<* fn int_floordiv_ovf_zer>, <Descr>, I[%i0, %i1], R[] -> %i2
+ residual_call_ir_i $<* fn int_floordiv_ovf_zer>, I[%i0, %i1], R[], <Descr> -> %i2
-live-
catch_exception L1
int_return %i2
@@ -497,7 +497,7 @@
return 42
# XXX so far, this really produces a int_mod_ovf_zer...
self.encoding_test(f, [7, 2], """
- residual_call_ir_i $<* fn int_mod_ovf_zer>, <Descr>, I[%i0, %i1], R[] -> %i2
+ residual_call_ir_i $<* fn int_mod_ovf_zer>, I[%i0, %i1], R[], <Descr> -> %i2
-live-
catch_exception L1
int_return %i2
@@ -551,7 +551,7 @@
except Exception:
return 42 + j
self.encoding_test(f, [7, 2], """
- residual_call_ir_i $<* fn g>, <Descr>, I[%i0, %i1], R[] -> %i2
+ residual_call_ir_i $<* fn g>, I[%i0, %i1], R[], <Descr> -> %i2
-live- %i1, %i2
catch_exception L1
int_return %i2
@@ -572,7 +572,7 @@
except Exception:
return 42 + j
self.encoding_test(f, [7, 2], """
- residual_call_ir_i $<* fn cannot_raise>, <Descr>, I[%i0, %i1], R[] -> %i2
+ residual_call_ir_i $<* fn cannot_raise>, I[%i0, %i1], R[], <Descr> -> %i2
int_return %i2
""", transform=True, liveness=True)
@@ -620,18 +620,18 @@
keepalive_until_here(q)
return x
self.encoding_test(f, [5], """
- residual_call_r_r $<* fn g>, <Descr>, R[] -> %r0
+ residual_call_r_r $<* fn g>, R[], <Descr> -> %r0
-live-
- residual_call_r_r $<* fn g>, <Descr>, R[] -> %r1
+ residual_call_r_r $<* fn g>, R[], <Descr> -> %r1
-live-
-live- %r0
-live- %r1
int_return %i0
""", transform=True)
self.encoding_test(f, [5], """
- residual_call_r_r $<* fn g>, <Descr>, R[] -> %r0
+ residual_call_r_r $<* fn g>, R[], <Descr> -> %r0
-live- %i0, %r0
- residual_call_r_r $<* fn g>, <Descr>, R[] -> %r1
+ residual_call_r_r $<* fn g>, R[], <Descr> -> %r1
-live- %i0, %r0, %r1
-live- %i0, %r0, %r1
-live- %i0, %r1
@@ -676,7 +676,7 @@
self.encoding_test(f, [], """
new_with_vtable <Descr> -> %r0
virtual_ref %r0 -> %r1
- residual_call_r_r $<* fn jit_force_virtual>, <Descr>, R[%r1] -> %r2
+ residual_call_r_r $<* fn jit_force_virtual>, R[%r1], <Descr> -> %r2
ref_return %r2
""", transform=True, cc=FakeCallControlWithVRefInfo())
@@ -687,9 +687,9 @@
array[2] = 5
return array[2] + len(array)
self.encoding_test(f, [], """
- new_array <Descr>, $5 -> %r0
- setarrayitem_gc_i %r0, <Descr>, $2, $5
- getarrayitem_gc_i %r0, <Descr>, $2 -> %i0
+ new_array $5, <Descr> -> %r0
+ setarrayitem_gc_i %r0, $2, $5, <Descr>
+ getarrayitem_gc_i %r0, $2, <Descr> -> %i0
arraylen_gc %r0, <Descr> -> %i1
int_add %i0, %i1 -> %i2
int_return %i2
@@ -703,7 +703,7 @@
x = array[2]
return len(array)
self.encoding_test(f, [], """
- new_array <Descr>, $5 -> %r0
+ new_array $5, <Descr> -> %r0
arraylen_gc %r0, <Descr> -> %i0
int_return %i0
""", transform=True)
@@ -824,7 +824,7 @@
else:
FROM = rffi.ULONGLONG
expected.insert(0,
- "residual_call_irf_i $<* fn llong_to_int>, <Descr>, I[], R[], F[%f0] -> %i0")
+ "residual_call_irf_i $<* fn llong_to_int>, I[], R[], F[%f0], <Descr> -> %i0")
expectedstr = '\n'.join(expected)
self.encoding_test(f, [rffi.cast(FROM, 42)], expectedstr,
transform=True)
@@ -840,7 +840,7 @@
fnname = "u" + fnname
expected.pop() # remove int_return
expected.append(
- "residual_call_irf_f $<* fn %s>, <Descr>, I[%s], R[], F[] -> %%f0"
+ "residual_call_irf_f $<* fn %s>, I[%s], R[], F[], <Descr> -> %%f0"
% (fnname, returnvar))
expected.append("float_return %f0")
expectedstr = '\n'.join(expected)
@@ -909,7 +909,7 @@
def f(dbl):
return rffi.cast(lltype.Unsigned, dbl)
self.encoding_test(f, [12.456], """
- residual_call_irf_i $<* fn cast_float_to_uint>, <Descr>, I[], R[], F[%f0] -> %i0
+ residual_call_irf_i $<* fn cast_float_to_uint>, I[], R[], F[%f0], <Descr> -> %i0
int_return %i0
""", transform=True)
@@ -923,7 +923,7 @@
def f(i):
return rffi.cast(lltype.Float, r_uint(i)) # "uint -> float"
self.encoding_test(f, [12], """
- residual_call_irf_f $<* fn cast_uint_to_float>, <Descr>, I[%i0], R[], F[] -> %f0
+ residual_call_irf_f $<* fn cast_uint_to_float>, I[%i0], R[], F[], <Descr> -> %f0
float_return %f0
""", transform=True)
@@ -931,14 +931,14 @@
def f(dbl):
return rffi.cast(lltype.SignedLongLong, dbl)
self.encoding_test(f, [12.3], """
- residual_call_irf_f $<* fn llong_from_float>, <Descr>, I[], R[], F[%f0] -> %f1
+ residual_call_irf_f $<* fn llong_from_float>, I[], R[], F[%f0], <Descr> -> %f1
float_return %f1
""", transform=True)
def f(dbl):
return rffi.cast(lltype.UnsignedLongLong, dbl)
self.encoding_test(f, [12.3], """
- residual_call_irf_f $<* fn ullong_from_float>, <Descr>, I[], R[], F[%f0] -> %f1
+ residual_call_irf_f $<* fn ullong_from_float>, I[], R[], F[%f0], <Descr> -> %f1
float_return %f1
""", transform=True)
@@ -946,8 +946,8 @@
ll = r_longlong(x)
return rffi.cast(lltype.Float, ll)
self.encoding_test(f, [12], """
- residual_call_irf_f $<* fn llong_from_int>, <Descr>, I[%i0], R[], F[] -> %f0
- residual_call_irf_f $<* fn llong_to_float>, <Descr>, I[], R[], F[%f0] -> %f1
+ residual_call_irf_f $<* fn llong_from_int>, I[%i0], R[], F[], <Descr> -> %f0
+ residual_call_irf_f $<* fn llong_to_float>, I[], R[], F[%f0], <Descr> -> %f1
float_return %f1
""", transform=True)
@@ -955,8 +955,8 @@
ll = r_ulonglong(x)
return rffi.cast(lltype.Float, ll)
self.encoding_test(f, [12], """
- residual_call_irf_f $<* fn ullong_from_int>, <Descr>, I[%i0], R[], F[] -> %f0
- residual_call_irf_f $<* fn ullong_u_to_float>, <Descr>, I[], R[], F[%f0] -> %f1
+ residual_call_irf_f $<* fn ullong_from_int>, I[%i0], R[], F[], <Descr> -> %f0
+ residual_call_irf_f $<* fn ullong_u_to_float>, I[], R[], F[%f0], <Descr> -> %f1
float_return %f1
""", transform=True)
diff --git a/pypy/jit/codewriter/test/test_jtransform.py b/pypy/jit/codewriter/test/test_jtransform.py
--- a/pypy/jit/codewriter/test/test_jtransform.py
+++ b/pypy/jit/codewriter/test/test_jtransform.py
@@ -337,9 +337,9 @@
assert op0.opname == 'residual_call_%s_%s' % (expectedkind, reskind)
assert op0.result == op.result
assert op0.args[0] == op.args[0]
- assert op0.args[1] == 'calldescr'
- assert len(op0.args) == 2 + len(expectedkind)
- for sublist, kind1 in zip(op0.args[2:], expectedkind):
+ assert op0.args[-1] == 'calldescr'
+ assert len(op0.args) == 1 + len(expectedkind) + 1
+ for sublist, kind1 in zip(op0.args[1:-1], expectedkind):
assert sublist.kind.startswith(kind1)
assert list(sublist) == [v for v in op.args[1:]
if getkind(v.concretetype) == sublist.kind]
@@ -385,9 +385,9 @@
assert op0.opname == 'residual_call_%s_%s' % (expectedkind, reskind)
assert op0.result == op.result
assert op0.args[0] == op.args[0]
- assert op0.args[1] == 'calldescr'
- assert len(op0.args) == 2 + len(expectedkind)
- for sublist, kind1 in zip(op0.args[2:], expectedkind):
+ assert op0.args[-1] == 'calldescr'
+ assert len(op0.args) == 1 + len(expectedkind) + 1
+ for sublist, kind1 in zip(op0.args[1:-1], expectedkind):
assert sublist.kind.startswith(kind1)
assert list(sublist) == [v for v in op.args[1:]
if getkind(v.concretetype)==sublist.kind]
@@ -419,11 +419,11 @@
assert op0.opname == 'residual_call_%s_%s' % (expectedkind, reskind)
assert op0.result == op.result
assert op0.args[0] == op.args[0]
- assert op0.args[1] == 'calldescr'
- assert isinstance(op0.args[2], IndirectCallTargets)
- assert op0.args[2].lst == ['somejitcode1', 'somejitcode2']
- assert len(op0.args) == 3 + len(expectedkind)
- for sublist, kind1 in zip(op0.args[3:], expectedkind):
+ assert isinstance(op0.args[1], IndirectCallTargets)
+ assert op0.args[1].lst == ['somejitcode1', 'somejitcode2']
+ assert op0.args[-1] == 'calldescr'
+ assert len(op0.args) == 2 + len(expectedkind) + 1
+ for sublist, kind1 in zip(op0.args[2:-1], expectedkind):
assert sublist.kind.startswith(kind1)
assert list(sublist) == [v for v in op.args[1:]
if getkind(v.concretetype)==sublist.kind]
@@ -505,7 +505,7 @@
op1 = Transformer(FakeCPU()).rewrite_operation(op)
assert op1.opname == 'setfield_gc_' + suffix
fielddescr = ('fielddescr', S, name)
- assert op1.args == [v_parent, fielddescr, v_newvalue]
+ assert op1.args == [v_parent, v_newvalue, fielddescr]
assert op1.result is None
def test_malloc_new():
@@ -547,7 +547,7 @@
op0, op1 = oplist
assert op0.opname == 'residual_call_r_r'
assert op0.args[0].value == 'alloc_with_del' # pseudo-function as a str
- assert list(op0.args[2]) == []
+ assert list(op0.args[1]) == []
assert op1.opname == '-live-'
assert op1.args == []
@@ -562,7 +562,7 @@
op0, op1 = tr.rewrite_operation(op)
assert op0.opname == 'residual_call_ir_i'
assert op0.args[0].value == 'raw_malloc_varsize' # pseudo-function as a str
- assert (op0.args[1] == 'calldescr-%d' %
+ assert (op0.args[-1] == 'calldescr-%d' %
effectinfo.EffectInfo.OS_RAW_MALLOC_VARSIZE)
assert op1.opname == '-live-'
@@ -614,7 +614,7 @@
op0 = tr.rewrite_operation(op)
assert op0.opname == 'residual_call_ir_v'
assert op0.args[0].value == 'raw_free'
- assert op0.args[1] == 'calldescr-%d' % effectinfo.EffectInfo.OS_RAW_FREE
+ assert op0.args[-1] == 'calldescr-%d' % effectinfo.EffectInfo.OS_RAW_FREE
def test_raw_free_no_track_allocation():
S = rffi.CArray(lltype.Signed)
@@ -867,8 +867,8 @@
assert op1.opname == 'raw_store_i'
assert op1.args[0] == v_storage
assert op1.args[1] == v_index
- assert op1.args[2] == ('arraydescr', rffi.CArray(lltype.Signed))
- assert op1.args[3] == v_item
+ assert op1.args[2] == v_item
+ assert op1.args[3] == ('arraydescr', rffi.CArray(lltype.Signed))
def test_raw_load():
v_storage = varoftype(llmemory.Address)
@@ -1027,8 +1027,8 @@
op1 = tr.rewrite_operation(op)
assert op1.opname == 'residual_call_r_r'
assert op1.args[0].value == func
- assert op1.args[1] == 'calldescr-%d' % effectinfo.EffectInfo.OS_STR_CONCAT
- assert op1.args[2] == ListOfKind('ref', [v1, v2])
+ assert op1.args[1] == ListOfKind('ref', [v1, v2])
+ assert op1.args[2] == 'calldescr-%d' % effectinfo.EffectInfo.OS_STR_CONCAT
assert op1.result == v3
def test_str_promote():
@@ -1061,14 +1061,14 @@
op1 = tr.rewrite_operation(op)
assert op1.opname == 'residual_call_r_r'
assert op1.args[0].value == func
- assert op1.args[1] == 'calldescr-%d' % effectinfo.EffectInfo.OS_UNI_CONCAT
- assert op1.args[2] == ListOfKind('ref', [v1, v2])
+ assert op1.args[1] == ListOfKind('ref', [v1, v2])
+ assert op1.args[2] == 'calldescr-%d' % effectinfo.EffectInfo.OS_UNI_CONCAT
assert op1.result == v3
#
# check the callinfo_for_oopspec
got = cc.callinfocollection.seen[0]
assert got[0] == effectinfo.EffectInfo.OS_UNI_CONCAT
- assert got[1] == op1.args[1] # the calldescr
+ assert got[1] == op1.args[2] # the calldescr
assert heaptracker.int2adr(got[2]) == llmemory.cast_ptr_to_adr(func)
def test_str_slice():
@@ -1087,9 +1087,9 @@
op1 = tr.rewrite_operation(op)
assert op1.opname == 'residual_call_ir_r'
assert op1.args[0].value == func
- assert op1.args[1] == 'calldescr-%d' % effectinfo.EffectInfo.OS_STR_SLICE
- assert op1.args[2] == ListOfKind('int', [v2, v3])
- assert op1.args[3] == ListOfKind('ref', [v1])
+ assert op1.args[1] == ListOfKind('int', [v2, v3])
+ assert op1.args[2] == ListOfKind('ref', [v1])
+ assert op1.args[3] == 'calldescr-%d' % effectinfo.EffectInfo.OS_STR_SLICE
assert op1.result == v4
def test_unicode_slice():
@@ -1108,9 +1108,9 @@
op1 = tr.rewrite_operation(op)
assert op1.opname == 'residual_call_ir_r'
assert op1.args[0].value == func
- assert op1.args[1] == 'calldescr-%d' % effectinfo.EffectInfo.OS_UNI_SLICE
- assert op1.args[2] == ListOfKind('int', [v2, v3])
- assert op1.args[3] == ListOfKind('ref', [v1])
+ assert op1.args[1] == ListOfKind('int', [v2, v3])
+ assert op1.args[2] == ListOfKind('ref', [v1])
+ assert op1.args[3] == 'calldescr-%d' % effectinfo.EffectInfo.OS_UNI_SLICE
assert op1.result == v4
def test_str2unicode():
@@ -1127,8 +1127,8 @@
op1 = tr.rewrite_operation(op)
assert op1.opname == 'residual_call_r_r'
assert op1.args[0].value == func
- assert op1.args[1] == 'calldescr-%d' % effectinfo.EffectInfo.OS_STR2UNICODE
- assert op1.args[2] == ListOfKind('ref', [v1])
+ assert op1.args[1] == ListOfKind('ref', [v1])
+ assert op1.args[2] == 'calldescr-%d' % effectinfo.EffectInfo.OS_STR2UNICODE
assert op1.result == v2
def test_unicode_eq_checknull_char():
@@ -1146,8 +1146,8 @@
op1 = tr.rewrite_operation(op)
assert op1.opname == 'residual_call_r_i'
assert op1.args[0].value == func
- assert op1.args[1] == 'calldescr-%d' % effectinfo.EffectInfo.OS_UNI_EQUAL
- assert op1.args[2] == ListOfKind('ref', [v1, v2])
+ assert op1.args[1] == ListOfKind('ref', [v1, v2])
+ assert op1.args[2] == 'calldescr-%d' % effectinfo.EffectInfo.OS_UNI_EQUAL
assert op1.result == v3
# test that the OS_UNIEQ_* functions are registered
cic = cc.callinfocollection
@@ -1172,9 +1172,9 @@
op1 = tr.rewrite_operation(op)
assert op1.opname == 'residual_call_ir_v'
assert op1.args[0].value == func
- assert op1.args[1] == 'calldescr-%d' % effectinfo.EffectInfo.OS_ARRAYCOPY
- assert op1.args[2] == ListOfKind('int', [v3, v4, v5])
- assert op1.args[3] == ListOfKind('ref', [v1, v2])
+ assert op1.args[1] == ListOfKind('int', [v3, v4, v5])
+ assert op1.args[2] == ListOfKind('ref', [v1, v2])
+ assert op1.args[3] == 'calldescr-%d' % effectinfo.EffectInfo.OS_ARRAYCOPY
def test_math_sqrt():
# test that the oopspec is present and correctly transformed
@@ -1189,10 +1189,10 @@
op1 = tr.rewrite_operation(op)
assert op1.opname == 'residual_call_irf_f'
assert op1.args[0].value == func
- assert op1.args[1] == 'calldescr-%d' % effectinfo.EffectInfo.OS_MATH_SQRT
- assert op1.args[2] == ListOfKind("int", [])
- assert op1.args[3] == ListOfKind("ref", [])
- assert op1.args[4] == ListOfKind('float', [v1])
+ assert op1.args[1] == ListOfKind("int", [])
+ assert op1.args[2] == ListOfKind("ref", [])
+ assert op1.args[3] == ListOfKind('float', [v1])
+ assert op1.args[4] == 'calldescr-%d' % effectinfo.EffectInfo.OS_MATH_SQRT
assert op1.result == v2
def test_quasi_immutable():
diff --git a/pypy/jit/codewriter/test/test_list.py b/pypy/jit/codewriter/test/test_list.py
--- a/pypy/jit/codewriter/test/test_list.py
+++ b/pypy/jit/codewriter/test/test_list.py
@@ -82,17 +82,17 @@
def test_newlist():
builtin_test('newlist', [], FIXEDLIST,
- """new_array <ArrayDescr>, $0 -> %r0""")
+ """new_array $0, <ArrayDescr> -> %r0""")
builtin_test('newlist', [Constant(5, lltype.Signed)], FIXEDLIST,
- """new_array <ArrayDescr>, $5 -> %r0""")
+ """new_array $5, <ArrayDescr> -> %r0""")
builtin_test('newlist', [Constant(-2, lltype.Signed)], FIXEDLIST,
- """new_array <ArrayDescr>, $0 -> %r0""")
+ """new_array $0, <ArrayDescr> -> %r0""")
builtin_test('newlist', [varoftype(lltype.Signed)], FIXEDLIST,
"""int_force_ge_zero %i0 -> %i1\n"""
- """new_array <ArrayDescr>, %i1 -> %r0""")
+ """new_array %i1, <ArrayDescr> -> %r0""")
builtin_test('newlist', [Constant(5, lltype.Signed),
Constant(0, lltype.Signed)], FIXEDLIST,
- """new_array <ArrayDescr>, $5 -> %r0""")
+ """new_array $5, <ArrayDescr> -> %r0""")
builtin_test('newlist', [Constant(5, lltype.Signed),
Constant(1, lltype.Signed)], FIXEDLIST,
NotSupported)
@@ -108,35 +108,35 @@
varoftype(lltype.Signed),
varoftype(lltype.Signed)],
lltype.Void, """
- residual_call_ir_v $'myfunc', <CallDescrOS1>, I[%i0, %i1, %i2], R[%r0, %r1]
+ residual_call_ir_v $'myfunc', I[%i0, %i1, %i2], R[%r0, %r1], <CallDescrOS1>
""")
def test_fixed_getitem():
builtin_test('list.getitem/NONNEG',
[varoftype(FIXEDLIST), varoftype(lltype.Signed)],
lltype.Signed, """
- getarrayitem_gc_i %r0, <ArrayDescr>, %i0 -> %i1
+ getarrayitem_gc_i %r0, %i0, <ArrayDescr> -> %i1
""")
builtin_test('list.getitem/NEG',
[varoftype(FIXEDLIST), varoftype(lltype.Signed)],
lltype.Signed, """
-live-
- check_neg_index %r0, <ArrayDescr>, %i0 -> %i1
- getarrayitem_gc_i %r0, <ArrayDescr>, %i1 -> %i2
+ check_neg_index %r0, %i0, <ArrayDescr> -> %i1
+ getarrayitem_gc_i %r0, %i1, <ArrayDescr> -> %i2
""")
def test_fixed_getitem_foldable():
builtin_test('list.getitem_foldable/NONNEG',
[varoftype(FIXEDLIST), varoftype(lltype.Signed)],
lltype.Signed, """
- getarrayitem_gc_i_pure %r0, <ArrayDescr>, %i0 -> %i1
+ getarrayitem_gc_i_pure %r0, %i0, <ArrayDescr> -> %i1
""")
builtin_test('list.getitem_foldable/NEG',
[varoftype(FIXEDLIST), varoftype(lltype.Signed)],
lltype.Signed, """
-live-
- check_neg_index %r0, <ArrayDescr>, %i0 -> %i1
- getarrayitem_gc_i_pure %r0, <ArrayDescr>, %i1 -> %i2
+ check_neg_index %r0, %i0, <ArrayDescr> -> %i1
+ getarrayitem_gc_i_pure %r0, %i1, <ArrayDescr> -> %i2
""")
def test_fixed_setitem():
@@ -144,15 +144,15 @@
varoftype(lltype.Signed),
varoftype(lltype.Signed)],
lltype.Void, """
- setarrayitem_gc_i %r0, <ArrayDescr>, %i0, %i1
+ setarrayitem_gc_i %r0, %i0, %i1, <ArrayDescr>
""")
builtin_test('list.setitem/NEG', [varoftype(FIXEDLIST),
varoftype(lltype.Signed),
varoftype(lltype.Signed)],
lltype.Void, """
-live-
- check_neg_index %r0, <ArrayDescr>, %i0 -> %i1
- setarrayitem_gc_i %r0, <ArrayDescr>, %i1, %i2
+ check_neg_index %r0, %i0, <ArrayDescr> -> %i1
+ setarrayitem_gc_i %r0, %i1, %i2, <ArrayDescr>
""")
def test_fixed_len():
@@ -170,14 +170,14 @@
alldescrs = ("<SizeDescr>, <FieldDescr length>,"
" <FieldDescr items>, <ArrayDescr>")
builtin_test('newlist', [], VARLIST,
- """newlist """+alldescrs+""", $0 -> %r0""")
+ """newlist $0, """+alldescrs+""" -> %r0""")
builtin_test('newlist', [Constant(5, lltype.Signed)], VARLIST,
- """newlist """+alldescrs+""", $5 -> %r0""")
+ """newlist $5, """+alldescrs+""" -> %r0""")
builtin_test('newlist', [varoftype(lltype.Signed)], VARLIST,
- """newlist """+alldescrs+""", %i0 -> %r0""")
+ """newlist %i0, """+alldescrs+""" -> %r0""")
builtin_test('newlist', [Constant(5, lltype.Signed),
Constant(0, lltype.Signed)], VARLIST,
- """newlist """+alldescrs+""", $5 -> %r0""")
+ """newlist $5, """+alldescrs+""" -> %r0""")
builtin_test('newlist', [Constant(5, lltype.Signed),
Constant(1, lltype.Signed)], VARLIST,
NotSupported)
@@ -189,14 +189,14 @@
builtin_test('list.getitem/NONNEG',
[varoftype(VARLIST), varoftype(lltype.Signed)],
lltype.Signed, """
- getlistitem_gc_i %r0, <FieldDescr items>, <ArrayDescr>, %i0 -> %i1
+ getlistitem_gc_i %r0, %i0, <FieldDescr items>, <ArrayDescr> -> %i1
""")
builtin_test('list.getitem/NEG',
[varoftype(VARLIST), varoftype(lltype.Signed)],
lltype.Signed, """
-live-
- check_resizable_neg_index %r0, <FieldDescr length>, %i0 -> %i1
- getlistitem_gc_i %r0, <FieldDescr items>, <ArrayDescr>, %i1 -> %i2
+ check_resizable_neg_index %r0, %i0, <FieldDescr length> -> %i1
+ getlistitem_gc_i %r0, %i1, <FieldDescr items>, <ArrayDescr> -> %i2
""")
def test_resizable_setitem():
@@ -204,15 +204,15 @@
varoftype(lltype.Signed),
varoftype(lltype.Signed)],
lltype.Void, """
- setlistitem_gc_i %r0, <FieldDescr items>, <ArrayDescr>, %i0, %i1
+ setlistitem_gc_i %r0, %i0, %i1, <FieldDescr items>, <ArrayDescr>
""")
builtin_test('list.setitem/NEG', [varoftype(VARLIST),
varoftype(lltype.Signed),
varoftype(lltype.Signed)],
lltype.Void, """
-live-
- check_resizable_neg_index %r0, <FieldDescr length>, %i0 -> %i1
- setlistitem_gc_i %r0, <FieldDescr items>, <ArrayDescr>, %i1, %i2
+ check_resizable_neg_index %r0, %i0, <FieldDescr length> -> %i1
+ setlistitem_gc_i %r0, %i1, %i2, <FieldDescr items>, <ArrayDescr>
""")
def test_resizable_len():
diff --git a/pypy/jit/codewriter/test/test_longlong.py b/pypy/jit/codewriter/test/test_longlong.py
--- a/pypy/jit/codewriter/test/test_longlong.py
+++ b/pypy/jit/codewriter/test/test_longlong.py
@@ -60,12 +60,12 @@
gotindex = getattr(EffectInfo,
'OS_' + op1.args[0].value.upper().lstrip('U'))
assert gotindex == oopspecindex
- assert op1.args[1] == 'calldescr-%d' % oopspecindex
- assert list(op1.args[2]) == [v for v in vlist
+ assert list(op1.args[1]) == [v for v in vlist
if not is_llf(v.concretetype)]
- assert list(op1.args[3]) == []
- assert list(op1.args[4]) == [v for v in vlist
+ assert list(op1.args[2]) == []
+ assert list(op1.args[3]) == [v for v in vlist
if is_llf(v.concretetype)]
+ assert op1.args[4] == 'calldescr-%d' % oopspecindex
assert op1.result == v_result
def test_is_true(self):
@@ -79,19 +79,19 @@
assert len(oplist) == 2
assert oplist[0].opname == 'residual_call_irf_f'
assert oplist[0].args[0].value == opname.split('_')[0]+'_from_int'
- assert oplist[0].args[1] == 'calldescr-84'
- assert list(oplist[0].args[2]) == [const(0)]
+ assert list(oplist[0].args[1]) == [const(0)]
+ assert list(oplist[0].args[2]) == []
assert list(oplist[0].args[3]) == []
- assert list(oplist[0].args[4]) == []
+ assert oplist[0].args[4] == 'calldescr-84'
v_x = oplist[0].result
assert isinstance(v_x, Variable)
assert v_x.concretetype is T
assert oplist[1].opname == 'residual_call_irf_i'
assert oplist[1].args[0].value == 'llong_ne'
- assert oplist[1].args[1] == 'calldescr-76'
+ assert list(oplist[1].args[1]) == []
assert list(oplist[1].args[2]) == []
- assert list(oplist[1].args[3]) == []
- assert list(oplist[1].args[4]) == [v, v_x]
+ assert list(oplist[1].args[3]) == [v, v_x]
+ assert oplist[1].args[4] == 'calldescr-76'
assert oplist[1].result == v_result
def test_llong_neg(self):
@@ -104,18 +104,18 @@
assert len(oplist) == 2
assert oplist[0].opname == 'residual_call_irf_f'
assert oplist[0].args[0].value == 'llong_from_int'
- assert oplist[0].args[1] == 'calldescr-84'
- assert list(oplist[0].args[2]) == [const(0)]
+ assert list(oplist[0].args[1]) == [const(0)]
+ assert list(oplist[0].args[2]) == []
assert list(oplist[0].args[3]) == []
- assert list(oplist[0].args[4]) == []
+ assert oplist[0].args[4] == 'calldescr-84'
v_x = oplist[0].result
assert isinstance(v_x, Variable)
assert oplist[1].opname == 'residual_call_irf_f'
assert oplist[1].args[0].value == 'llong_sub'
- assert oplist[1].args[1] == 'calldescr-71'
+ assert list(oplist[1].args[1]) == []
assert list(oplist[1].args[2]) == []
- assert list(oplist[1].args[3]) == []
- assert list(oplist[1].args[4]) == [v_x, v]
+ assert list(oplist[1].args[3]) == [v_x, v]
+ assert oplist[1].args[4] == 'calldescr-71'
assert oplist[1].result == v_result
def test_unary_op(self):
@@ -231,9 +231,9 @@
op1 = tr.rewrite_operation(op)
#
assert op1.opname == 'residual_call_irf_f'
+ assert list(op1.args[1]) == []
assert list(op1.args[2]) == []
- assert list(op1.args[3]) == []
- assert list(op1.args[4]) == vlist
+ assert list(op1.args[3]) == vlist
assert op1.result == v_result
diff --git a/pypy/jit/codewriter/test/test_regalloc.py b/pypy/jit/codewriter/test/test_regalloc.py
--- a/pypy/jit/codewriter/test/test_regalloc.py
+++ b/pypy/jit/codewriter/test/test_regalloc.py
@@ -282,9 +282,9 @@
# last_exc_value -> %r0
# ref_copy %r0 -> %r1 -- but expect to read the old value of %r0!
self.check_assembler(graph, """
- residual_call_r_r $<* fn bar>, <Descr>, R[%r0] -> %r1
+ residual_call_r_r $<* fn bar>, R[%r0], <Descr> -> %r1
-live-
- residual_call_ir_r $<* fn g>, <Descr>, I[%i0], R[] -> %r1
+ residual_call_ir_r $<* fn g>, I[%i0], R[], <Descr> -> %r1
-live-
catch_exception L1
ref_return %r1
@@ -293,7 +293,7 @@
goto_if_exception_mismatch $<* struct object_vtable>, L2
ref_copy %r0 -> %r1
last_exc_value -> %r0
- residual_call_r_r $<* fn foo>, <Descr>, R[%r0] -> %r0
+ residual_call_r_r $<* fn foo>, R[%r0], <Descr> -> %r0
-live-
ref_return %r1
---
diff --git a/pypy/jit/metainterp/blackhole.py b/pypy/jit/metainterp/blackhole.py
--- a/pypy/jit/metainterp/blackhole.py
+++ b/pypy/jit/metainterp/blackhole.py
@@ -936,34 +936,34 @@
def bhimpl_recursive_call_i(self, jdindex, greens_i, greens_r, greens_f,
reds_i, reds_r, reds_f):
fnptr, calldescr = self.get_portal_runner(jdindex)
- return self.cpu.bh_call_i(fnptr, calldescr,
+ return self.cpu.bh_call_i(fnptr,
greens_i + reds_i,
greens_r + reds_r,
- greens_f + reds_f)
+ greens_f + reds_f, calldescr)
@arguments("self", "i", "I", "R", "F", "I", "R", "F", returns="r")
def bhimpl_recursive_call_r(self, jdindex, greens_i, greens_r, greens_f,
reds_i, reds_r, reds_f):
fnptr, calldescr = self.get_portal_runner(jdindex)
- return self.cpu.bh_call_r(fnptr, calldescr,
+ return self.cpu.bh_call_r(fnptr,
greens_i + reds_i,
greens_r + reds_r,
- greens_f + reds_f)
+ greens_f + reds_f, calldescr)
@arguments("self", "i", "I", "R", "F", "I", "R", "F", returns="f")
def bhimpl_recursive_call_f(self, jdindex, greens_i, greens_r, greens_f,
reds_i, reds_r, reds_f):
fnptr, calldescr = self.get_portal_runner(jdindex)
- return self.cpu.bh_call_f(fnptr, calldescr,
+ return self.cpu.bh_call_f(fnptr,
greens_i + reds_i,
greens_r + reds_r,
- greens_f + reds_f)
+ greens_f + reds_f, calldescr)
@arguments("self", "i", "I", "R", "F", "I", "R", "F")
def bhimpl_recursive_call_v(self, jdindex, greens_i, greens_r, greens_f,
reds_i, reds_r, reds_f):
fnptr, calldescr = self.get_portal_runner(jdindex)
- return self.cpu.bh_call_v(fnptr, calldescr,
+ return self.cpu.bh_call_v(fnptr,
greens_i + reds_i,
greens_r + reds_r,
- greens_f + reds_f)
+ greens_f + reds_f, calldescr)
# ----------
# virtual refs
@@ -979,222 +979,222 @@
# ----------
# list operations
- @arguments("cpu", "r", "d", "i", returns="i")
- def bhimpl_check_neg_index(cpu, array, arraydescr, index):
+ @arguments("cpu", "r", "i", "d", returns="i")
+ def bhimpl_check_neg_index(cpu, array, index, arraydescr):
if index < 0:
- index += cpu.bh_arraylen_gc(arraydescr, array)
+ index += cpu.bh_arraylen_gc(array, arraydescr)
return index
- @arguments("cpu", "r", "d", "i", returns="i")
- def bhimpl_check_resizable_neg_index(cpu, lst, lengthdescr, index):
+ @arguments("cpu", "r", "i", "d", returns="i")
+ def bhimpl_check_resizable_neg_index(cpu, lst, index, lengthdescr):
if index < 0:
index += cpu.bh_getfield_gc_i(lst, lengthdescr)
return index
- @arguments("cpu", "d", "d", "d", "d", "i", returns="r")
- def bhimpl_newlist(cpu, structdescr, lengthdescr, itemsdescr,
- arraydescr, length):
+ @arguments("cpu", "i", "d", "d", "d", "d", returns="r")
+ def bhimpl_newlist(cpu, length, structdescr, lengthdescr,
+ itemsdescr, arraydescr):
result = cpu.bh_new(structdescr)
- cpu.bh_setfield_gc_i(result, lengthdescr, length)
- items = cpu.bh_new_array(arraydescr, length)
- cpu.bh_setfield_gc_r(result, itemsdescr, items)
+ cpu.bh_setfield_gc_i(result, length, lengthdescr)
+ items = cpu.bh_new_array(length, arraydescr)
+ cpu.bh_setfield_gc_r(result, items, itemsdescr)
return result
- @arguments("cpu", "d", "d", "d", "d", "i", returns="r")
- def bhimpl_newlist_hint(cpu, structdescr, lengthdescr, itemsdescr,
- arraydescr, lengthhint):
+ @arguments("cpu", "i", "d", "d", "d", "d", returns="r")
+ def bhimpl_newlist_hint(cpu, lengthhint, structdescr, lengthdescr,
+ itemsdescr, arraydescr):
result = cpu.bh_new(structdescr)
- cpu.bh_setfield_gc_i(result, lengthdescr, 0)
- items = cpu.bh_new_array(arraydescr, lengthhint)
- cpu.bh_setfield_gc_r(result, itemsdescr, items)
+ cpu.bh_setfield_gc_i(result, 0, lengthdescr)
+ items = cpu.bh_new_array(lengthhint, arraydescr)
+ cpu.bh_setfield_gc_r(result, items, itemsdescr)
return result
- @arguments("cpu", "r", "d", "d", "i", returns="i")
- def bhimpl_getlistitem_gc_i(cpu, lst, itemsdescr, arraydescr, index):
+ @arguments("cpu", "r", "i", "d", "d", returns="i")
+ def bhimpl_getlistitem_gc_i(cpu, lst, index, itemsdescr, arraydescr):
items = cpu.bh_getfield_gc_r(lst, itemsdescr)
- return cpu.bh_getarrayitem_gc_i(arraydescr, items, index)
- @arguments("cpu", "r", "d", "d", "i", returns="r")
- def bhimpl_getlistitem_gc_r(cpu, lst, itemsdescr, arraydescr, index):
+ return cpu.bh_getarrayitem_gc_i(items, index, arraydescr)
+ @arguments("cpu", "r", "i", "d", "d", returns="r")
+ def bhimpl_getlistitem_gc_r(cpu, lst, index, itemsdescr, arraydescr):
items = cpu.bh_getfield_gc_r(lst, itemsdescr)
- return cpu.bh_getarrayitem_gc_r(arraydescr, items, index)
- @arguments("cpu", "r", "d", "d", "i", returns="f")
- def bhimpl_getlistitem_gc_f(cpu, lst, itemsdescr, arraydescr, index):
+ return cpu.bh_getarrayitem_gc_r(items, index, arraydescr)
+ @arguments("cpu", "r", "i", "d", "d", returns="f")
+ def bhimpl_getlistitem_gc_f(cpu, lst, index, itemsdescr, arraydescr):
items = cpu.bh_getfield_gc_r(lst, itemsdescr)
- return cpu.bh_getarrayitem_gc_f(arraydescr, items, index)
+ return cpu.bh_getarrayitem_gc_f(items, index, arraydescr)
- @arguments("cpu", "r", "d", "d", "i", "i")
- def bhimpl_setlistitem_gc_i(cpu, lst, itemsdescr, arraydescr, index, nval):
+ @arguments("cpu", "r", "i", "i", "d", "d")
+ def bhimpl_setlistitem_gc_i(cpu, lst, index, nval, itemsdescr, arraydescr):
items = cpu.bh_getfield_gc_r(lst, itemsdescr)
- cpu.bh_setarrayitem_gc_i(arraydescr, items, index, nval)
- @arguments("cpu", "r", "d", "d", "i", "r")
- def bhimpl_setlistitem_gc_r(cpu, lst, itemsdescr, arraydescr, index, nval):
+ cpu.bh_setarrayitem_gc_i(items, index, nval, arraydescr)
+ @arguments("cpu", "r", "i", "r", "d", "d")
+ def bhimpl_setlistitem_gc_r(cpu, lst, index, nval, itemsdescr, arraydescr):
items = cpu.bh_getfield_gc_r(lst, itemsdescr)
- cpu.bh_setarrayitem_gc_r(arraydescr, items, index, nval)
- @arguments("cpu", "r", "d", "d", "i", "f")
- def bhimpl_setlistitem_gc_f(cpu, lst, itemsdescr, arraydescr, index, nval):
+ cpu.bh_setarrayitem_gc_r(items, index, nval, arraydescr)
+ @arguments("cpu", "r", "i", "f", "d", "d")
+ def bhimpl_setlistitem_gc_f(cpu, lst, index, nval, itemsdescr, arraydescr):
items = cpu.bh_getfield_gc_r(lst, itemsdescr)
- cpu.bh_setarrayitem_gc_f(arraydescr, items, index, nval)
+ cpu.bh_setarrayitem_gc_f(items, index, nval, arraydescr)
# ----------
# the following operations are directly implemented by the backend
- @arguments("cpu", "i", "d", "R", returns="i")
- def bhimpl_residual_call_r_i(cpu, func, calldescr, args_r):
- return cpu.bh_call_i(func, calldescr, None, args_r, None)
- @arguments("cpu", "i", "d", "R", returns="r")
- def bhimpl_residual_call_r_r(cpu, func, calldescr, args_r):
- return cpu.bh_call_r(func, calldescr, None, args_r, None)
- @arguments("cpu", "i", "d", "R")
- def bhimpl_residual_call_r_v(cpu, func, calldescr, args_r):
- return cpu.bh_call_v(func, calldescr, None, args_r, None)
+ @arguments("cpu", "i", "R", "d", returns="i")
+ def bhimpl_residual_call_r_i(cpu, func, args_r, calldescr):
+ return cpu.bh_call_i(func, None, args_r, None, calldescr)
+ @arguments("cpu", "i", "R", "d", returns="r")
+ def bhimpl_residual_call_r_r(cpu, func, args_r, calldescr):
+ return cpu.bh_call_r(func, None, args_r, None, calldescr)
+ @arguments("cpu", "i", "R", "d")
+ def bhimpl_residual_call_r_v(cpu, func, args_r, calldescr):
+ return cpu.bh_call_v(func, None, args_r, None, calldescr)
- @arguments("cpu", "i", "d", "I", "R", returns="i")
- def bhimpl_residual_call_ir_i(cpu, func, calldescr, args_i, args_r):
- return cpu.bh_call_i(func, calldescr, args_i, args_r, None)
- @arguments("cpu", "i", "d", "I", "R", returns="r")
- def bhimpl_residual_call_ir_r(cpu, func, calldescr, args_i, args_r):
- return cpu.bh_call_r(func, calldescr, args_i, args_r, None)
- @arguments("cpu", "i", "d", "I", "R")
- def bhimpl_residual_call_ir_v(cpu, func, calldescr, args_i, args_r):
- return cpu.bh_call_v(func, calldescr, args_i, args_r, None)
+ @arguments("cpu", "i", "I", "R", "d", returns="i")
+ def bhimpl_residual_call_ir_i(cpu, func, args_i, args_r, calldescr):
+ return cpu.bh_call_i(func, args_i, args_r, None, calldescr)
+ @arguments("cpu", "i", "I", "R", "d", returns="r")
+ def bhimpl_residual_call_ir_r(cpu, func, args_i, args_r, calldescr):
+ return cpu.bh_call_r(func, args_i, args_r, None, calldescr)
+ @arguments("cpu", "i", "I", "R", "d")
+ def bhimpl_residual_call_ir_v(cpu, func, args_i, args_r, calldescr):
+ return cpu.bh_call_v(func, args_i, args_r, None, calldescr)
- @arguments("cpu", "i", "d", "I", "R", "F", returns="i")
- def bhimpl_residual_call_irf_i(cpu, func, calldescr,args_i,args_r,args_f):
- return cpu.bh_call_i(func, calldescr, args_i, args_r, args_f)
- @arguments("cpu", "i", "d", "I", "R", "F", returns="r")
- def bhimpl_residual_call_irf_r(cpu, func, calldescr,args_i,args_r,args_f):
- return cpu.bh_call_r(func, calldescr, args_i, args_r, args_f)
- @arguments("cpu", "i", "d", "I", "R", "F", returns="f")
- def bhimpl_residual_call_irf_f(cpu, func, calldescr,args_i,args_r,args_f):
- return cpu.bh_call_f(func, calldescr, args_i, args_r, args_f)
- @arguments("cpu", "i", "d", "I", "R", "F")
- def bhimpl_residual_call_irf_v(cpu, func, calldescr,args_i,args_r,args_f):
- return cpu.bh_call_v(func, calldescr, args_i, args_r, args_f)
+ @arguments("cpu", "i", "I", "R", "F", "d", returns="i")
+ def bhimpl_residual_call_irf_i(cpu, func, args_i,args_r,args_f,calldescr):
+ return cpu.bh_call_i(func, args_i, args_r, args_f, calldescr)
+ @arguments("cpu", "i", "I", "R", "F", "d", returns="r")
+ def bhimpl_residual_call_irf_r(cpu, func, args_i,args_r,args_f,calldescr):
+ return cpu.bh_call_r(func, args_i, args_r, args_f, calldescr)
+ @arguments("cpu", "i", "I", "R", "F", "d", returns="f")
+ def bhimpl_residual_call_irf_f(cpu, func, args_i,args_r,args_f,calldescr):
+ return cpu.bh_call_f(func, args_i, args_r, args_f, calldescr)
+ @arguments("cpu", "i", "I", "R", "F", "d")
+ def bhimpl_residual_call_irf_v(cpu, func, args_i,args_r,args_f,calldescr):
+ return cpu.bh_call_v(func, args_i, args_r, args_f, calldescr)
@arguments("cpu", "j", "R", returns="i")
def bhimpl_inline_call_r_i(cpu, jitcode, args_r):
- return cpu.bh_call_i(jitcode.get_fnaddr_as_int(), jitcode.calldescr,
- None, args_r, None)
+ return cpu.bh_call_i(jitcode.get_fnaddr_as_int(),
+ None, args_r, None, jitcode.calldescr)
@arguments("cpu", "j", "R", returns="r")
def bhimpl_inline_call_r_r(cpu, jitcode, args_r):
- return cpu.bh_call_r(jitcode.get_fnaddr_as_int(), jitcode.calldescr,
- None, args_r, None)
+ return cpu.bh_call_r(jitcode.get_fnaddr_as_int(),
+ None, args_r, None, jitcode.calldescr)
@arguments("cpu", "j", "R")
def bhimpl_inline_call_r_v(cpu, jitcode, args_r):
- return cpu.bh_call_v(jitcode.get_fnaddr_as_int(), jitcode.calldescr,
- None, args_r, None)
+ return cpu.bh_call_v(jitcode.get_fnaddr_as_int(),
+ None, args_r, None, jitcode.calldescr)
@arguments("cpu", "j", "I", "R", returns="i")
def bhimpl_inline_call_ir_i(cpu, jitcode, args_i, args_r):
- return cpu.bh_call_i(jitcode.get_fnaddr_as_int(), jitcode.calldescr,
- args_i, args_r, None)
+ return cpu.bh_call_i(jitcode.get_fnaddr_as_int(),
+ args_i, args_r, None, jitcode.calldescr)
@arguments("cpu", "j", "I", "R", returns="r")
def bhimpl_inline_call_ir_r(cpu, jitcode, args_i, args_r):
- return cpu.bh_call_r(jitcode.get_fnaddr_as_int(), jitcode.calldescr,
- args_i, args_r, None)
+ return cpu.bh_call_r(jitcode.get_fnaddr_as_int(),
+ args_i, args_r, None, jitcode.calldescr)
@arguments("cpu", "j", "I", "R")
def bhimpl_inline_call_ir_v(cpu, jitcode, args_i, args_r):
- return cpu.bh_call_v(jitcode.get_fnaddr_as_int(), jitcode.calldescr,
- args_i, args_r, None)
+ return cpu.bh_call_v(jitcode.get_fnaddr_as_int(),
+ args_i, args_r, None, jitcode.calldescr)
@arguments("cpu", "j", "I", "R", "F", returns="i")
def bhimpl_inline_call_irf_i(cpu, jitcode, args_i, args_r, args_f):
- return cpu.bh_call_i(jitcode.get_fnaddr_as_int(), jitcode.calldescr,
- args_i, args_r, args_f)
+ return cpu.bh_call_i(jitcode.get_fnaddr_as_int(),
+ args_i, args_r, args_f, jitcode.calldescr)
@arguments("cpu", "j", "I", "R", "F", returns="r")
def bhimpl_inline_call_irf_r(cpu, jitcode, args_i, args_r, args_f):
- return cpu.bh_call_r(jitcode.get_fnaddr_as_int(), jitcode.calldescr,
More information about the pypy-commit
mailing list