Author: Maciej Fijalkowski <fij...@gmail.com> Branch: ffi-backend Changeset: r55814:9cd1b3d755ed Date: 2012-06-24 22:36 +0200 http://bitbucket.org/pypy/pypy/changeset/9cd1b3d755ed/
Log: some more killing and make those tests pass on x86 backend 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 @@ -10,8 +10,8 @@ from pypy.jit.backend.llsupport.symbolic import WORD, unroll_basic_sizes from pypy.jit.backend.llsupport.descr import ( get_size_descr, get_field_descr, get_array_descr, - get_call_descr, get_interiorfield_descr, get_dynamic_interiorfield_descr, - FieldDescr, ArrayDescr, CallDescr, InteriorFieldDescr, get_dynamic_field_descr) + get_call_descr, get_interiorfield_descr, + FieldDescr, ArrayDescr, CallDescr, InteriorFieldDescr) from pypy.jit.backend.llsupport.asmmemmgr import AsmMemoryManager @@ -245,9 +245,6 @@ def fielddescrof(self, STRUCT, fieldname): return get_field_descr(self.gc_ll_descr, STRUCT, fieldname) - def fielddescrof_dynamic(self, offset, fieldsize, is_pointer, is_float, is_signed): - return get_dynamic_field_descr(offset, fieldsize, is_pointer, is_float, is_signed) - def unpack_fielddescr(self, fielddescr): assert isinstance(fielddescr, FieldDescr) return fielddescr.offset @@ -267,12 +264,6 @@ def interiorfielddescrof(self, A, fieldname): return get_interiorfield_descr(self.gc_ll_descr, A, fieldname) - def interiorfielddescrof_dynamic(self, offset, width, fieldsize, - is_pointer, is_float, is_signed): - return get_dynamic_interiorfield_descr(self.gc_ll_descr, - offset, width, fieldsize, - is_pointer, is_float, is_signed) - def unpack_arraydescr(self, arraydescr): assert isinstance(arraydescr, ArrayDescr) return arraydescr.basesize diff --git a/pypy/jit/backend/x86/assembler.py b/pypy/jit/backend/x86/assembler.py --- a/pypy/jit/backend/x86/assembler.py +++ b/pypy/jit/backend/x86/assembler.py @@ -1545,6 +1545,12 @@ genop_getarrayitem_gc_pure = genop_getarrayitem_gc genop_getarrayitem_raw = genop_getarrayitem_gc + def genop_raw_load(self, op, arglocs, resloc): + base_loc, ofs_loc, size_loc, ofs, sign_loc = arglocs + assert isinstance(ofs, ImmedLoc) + src_addr = addr_add(base_loc, ofs_loc, ofs.value, 0) + self.load_from_mem(resloc, src_addr, size_loc, sign_loc) + def _get_interiorfield_addr(self, temp_loc, index_loc, itemsize_loc, base_loc, ofs_loc): assert isinstance(itemsize_loc, ImmedLoc) @@ -1594,6 +1600,12 @@ dest_addr = AddressLoc(base_loc, ofs_loc, scale, baseofs.value) self.save_into_mem(dest_addr, value_loc, size_loc) + def genop_discard_raw_store(self, op, arglocs): + base_loc, ofs_loc, value_loc, size_loc, baseofs = arglocs + assert isinstance(baseofs, ImmedLoc) + dest_addr = AddressLoc(base_loc, ofs_loc, 0, baseofs.value) + self.save_into_mem(dest_addr, value_loc, size_loc) + def genop_discard_strsetitem(self, op, arglocs): base_loc, ofs_loc, val_loc = arglocs basesize, itemsize, ofs_length = symbolic.get_array_token(rstr.STR, diff --git a/pypy/jit/backend/x86/regalloc.py b/pypy/jit/backend/x86/regalloc.py --- a/pypy/jit/backend/x86/regalloc.py +++ b/pypy/jit/backend/x86/regalloc.py @@ -1102,6 +1102,7 @@ imm(itemsize), imm(ofs)]) consider_setarrayitem_raw = consider_setarrayitem_gc + consider_raw_store = consider_setarrayitem_gc def consider_getfield_gc(self, op): ofs_loc, size_loc, sign = self._unpack_fielddescr(op.getdescr()) @@ -1135,6 +1136,7 @@ consider_getarrayitem_raw = consider_getarrayitem_gc consider_getarrayitem_gc_pure = consider_getarrayitem_gc + consider_raw_load = consider_getarrayitem_gc def consider_getinteriorfield_gc(self, op): t = self._unpack_interiorfielddescr(op.getdescr()) _______________________________________________ pypy-commit mailing list pypy-commit@python.org http://mail.python.org/mailman/listinfo/pypy-commit