Author: Armin Rigo <[email protected]>
Branch: cleanup-llgraph-backend
Changeset: r58156:7235b5827eec
Date: 2012-10-17 11:32 +0200
http://bitbucket.org/pypy/pypy/changeset/7235b5827eec/
Log: (fijal, arigo) More of the same kind.
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
@@ -239,29 +239,6 @@
array = a._obj.container
return support.cast_result(descr.A.OF, array.getitem(index))
- def bh_strlen(self, s):
- return s._obj.container.chars.getlength()
-
- def bh_strgetitem(self, s, item):
- return ord(s._obj.container.chars.getitem(item))
-
- def bh_strsetitem(self, s, item, v):
- s._obj.container.chars.setitem(item, chr(v))
-
- def bh_copystrcontent(self, src, dst, srcstart, dststart, length):
- src = lltype.cast_opaque_ptr(lltype.Ptr(rstr.STR), src)
- dst = lltype.cast_opaque_ptr(lltype.Ptr(rstr.STR), dst)
- assert 0 <= srcstart <= srcstart + length <= len(src.chars)
- assert 0 <= dststart <= dststart + length <= len(dst.chars)
- rstr.copy_string_contents(src, dst, srcstart, dststart, length)
-
- def bh_copyunicodecontent(self, src, dst, srcstart, dststart, length):
- src = lltype.cast_opaque_ptr(lltype.Ptr(rstr.UNICODE), src)
- dst = lltype.cast_opaque_ptr(lltype.Ptr(rstr.UNICODE), dst)
- assert 0 <= srcstart <= srcstart + length <= len(src.chars)
- assert 0 <= dststart <= dststart + length <= len(dst.chars)
- rstr.copy_unicode_contents(src, dst, srcstart, dststart, length)
-
def bh_getinteriorfield_gc(self, a, index, descr):
array = a._obj.container
return support.cast_result(descr.FIELD,
@@ -280,6 +257,26 @@
bh_setinteriorfield_gc_r = bh_setinteriorfield_gc
bh_setinteriorfield_gc_i = bh_setinteriorfield_gc
+ def bh_newstr(self, length):
+ return lltype.cast_opaque_ptr(llmemory.GCREF,
+ lltype.malloc(rstr.STR, length))
+
+ def bh_strlen(self, s):
+ return s._obj.container.chars.getlength()
+
+ def bh_strgetitem(self, s, item):
+ return ord(s._obj.container.chars.getitem(item))
+
+ def bh_strsetitem(self, s, item, v):
+ s._obj.container.chars.setitem(item, chr(v))
+
+ def bh_copystrcontent(self, src, dst, srcstart, dststart, length):
+ src = lltype.cast_opaque_ptr(lltype.Ptr(rstr.STR), src)
+ dst = lltype.cast_opaque_ptr(lltype.Ptr(rstr.STR), dst)
+ assert 0 <= srcstart <= srcstart + length <= len(src.chars)
+ assert 0 <= dststart <= dststart + length <= len(dst.chars)
+ rstr.copy_string_contents(src, dst, srcstart, dststart, length)
+
def bh_newunicode(self, length):
return lltype.cast_opaque_ptr(llmemory.GCREF,
lltype.malloc(rstr.UNICODE, length))
@@ -293,17 +290,28 @@
def bh_unicodesetitem(self, string, index, newvalue):
string._obj.container.chars.setitem(index, unichr(newvalue))
+ def bh_copyunicodecontent(self, src, dst, srcstart, dststart, length):
+ src = lltype.cast_opaque_ptr(lltype.Ptr(rstr.UNICODE), src)
+ dst = lltype.cast_opaque_ptr(lltype.Ptr(rstr.UNICODE), dst)
+ assert 0 <= srcstart <= srcstart + length <= len(src.chars)
+ assert 0 <= dststart <= dststart + length <= len(dst.chars)
+ rstr.copy_unicode_contents(src, dst, srcstart, dststart, length)
+
def bh_new(self, sizedescr):
return lltype.cast_opaque_ptr(llmemory.GCREF,
lltype.malloc(sizedescr.S))
- def bh_new_with_vtable(self, descr, vtable):
+ def bh_new_with_vtable(self, vtable, descr):
result = lltype.malloc(descr.S)
result_as_objptr = lltype.cast_pointer(rclass.OBJECTPTR, result)
result_as_objptr.typeptr = support.cast_from_int(rclass.CLASSTYPE,
vtable)
return lltype.cast_opaque_ptr(llmemory.GCREF, result)
+ def bh_new_array(self, length, arraydescr):
+ array = lltype.malloc(arraydescr.A, length, zero=True)
+ return lltype.cast_opaque_ptr(llmemory.GCREF, array)
+
class LLFrame(object):
def __init__(self, cpu, argboxes, args):
@@ -467,7 +475,7 @@
def execute_new_with_vtable(self, _, vtable):
descr = heaptracker.vtable2descr(self.cpu, vtable)
- return self.cpu.bh_new_with_vtable(descr, vtable)
+ return self.cpu.bh_new_with_vtable(vtable, descr)
def _setup():
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):
+ 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)
@@ -342,7 +342,7 @@
return pval
@specialize.argtype(2)
- def bh_getarrayitem_gc_f(self, arraydescr, gcref, itemindex):
+ 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)
@@ -352,7 +352,7 @@
return fval
@specialize.argtype(2)
- def bh_setarrayitem_gc_i(self, arraydescr, gcref, itemindex, newvalue):
+ 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!) ---
@@ -375,7 +375,7 @@
# --- end of GC unsafe code ---
@specialize.argtype(2)
- def bh_setarrayitem_gc_f(self, arraydescr, gcref, itemindex, newvalue):
+ 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)
@@ -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)
@@ -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)
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit