Author: Armin Rigo <[email protected]>
Branch: stmgc-c7
Changeset: r70207:e585aef6450f
Date: 2014-03-23 16:27 +0100
http://bitbucket.org/pypy/pypy/changeset/e585aef6450f/
Log: fixes
diff --git a/rpython/jit/backend/x86/assembler.py
b/rpython/jit/backend/x86/assembler.py
--- a/rpython/jit/backend/x86/assembler.py
+++ b/rpython/jit/backend/x86/assembler.py
@@ -1549,7 +1549,7 @@
genop_getarrayitem_raw_pure = genop_getarrayitem_raw
def genop_raw_load(self, op, arglocs, resloc):
- assert not isinstance(op.getarg(0), BoxPtr) # not for a GC argument!
+ assert op.getarg(0).type == INT # only for a GC argument!
base_loc, ofs_loc, size_loc, ofs, sign_loc = arglocs
assert isinstance(ofs, ImmedLoc)
src_addr = addr_add(self.SEGMENT_NO, base_loc, ofs_loc, ofs.value, 0)
@@ -1571,11 +1571,11 @@
itemsize >>= shift
#
if valid_addressing_size(itemsize - 1):
- mc.LEA_ra(targetreg, (sourcereg, sourcereg,
+ mc.LEA_ra(targetreg, (self.SEGMENT_NO, sourcereg, sourcereg,
get_scale(itemsize - 1), 0))
elif valid_addressing_size(itemsize):
- mc.LEA_ra(targetreg, (rx86.NO_BASE_REGISTER, sourcereg,
- get_scale(itemsize), 0))
+ mc.LEA_ra(targetreg, (self.SEGMENT_NO, rx86.NO_BASE_REGISTER,
+ sourcereg, get_scale(itemsize), 0))
else:
mc.IMUL_rri(targetreg, sourcereg, itemsize)
#
@@ -1602,7 +1602,7 @@
shift, ofs_loc.value)
def genop_getinteriorfield_gc(self, op, arglocs, resloc):
- assert not isinstance(op.getarg(0), BoxInt) # only for a GC argument!
+ assert op.getarg(0).type == REF # only for a GC argument!
(base_loc, ofs_loc, itemsize_loc, fieldsize_loc,
index_loc, temp_loc, sign_loc) = arglocs
src_addr = self._get_interiorfield_addr(temp_loc, index_loc,
@@ -1630,13 +1630,13 @@
self._genop_discard_setfield(arglocs, self.SEGMENT_NO)
def genop_discard_setinteriorfield_gc(self, op, arglocs):
- assert not isinstance(op.getarg(0), BoxInt) # only for a GC argument!
+ assert op.getarg(0).type == REF # only for a GC argument!
(base_loc, ofs_loc, itemsize_loc, fieldsize_loc,
index_loc, temp_loc, value_loc) = arglocs
dest_addr = self._get_interiorfield_addr(temp_loc, index_loc,
itemsize_loc, base_loc,
ofs_loc)
- self.save_into_mem(dest_addr, value_loc, fieldsize_loc, op)
+ self.save_into_mem(dest_addr, value_loc, fieldsize_loc)
def _genop_discard_setarrayitem(self, arglocs, segment):
base_loc, ofs_loc, value_loc, size_loc, baseofs = arglocs
@@ -1653,7 +1653,7 @@
self._genop_discard_setarrayitem(arglocs, self.SEGMENT_NO)
def genop_discard_raw_store(self, op, arglocs):
- assert not isinstance(op.getarg(0), BoxPtr) # not for a GC argument!
+ assert op.getarg(0).type == INT # only for a GC argument!
base_loc, ofs_loc, value_loc, size_loc, baseofs = arglocs
assert isinstance(baseofs, ImmedLoc)
dest_addr = AddressLoc(self.SEGMENT_NO, base_loc, ofs_loc,
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit