[pypy-commit] pypy gc_no_cleanup_nursery: arm: zero_ptr_field
arigo
noreply at buildbot.pypy.org
Wed Sep 24 16:45:07 CEST 2014
Author: Armin Rigo <arigo at tunes.org>
Branch: gc_no_cleanup_nursery
Changeset: r73674:712ee4b2bdcf
Date: 2014-09-24 14:42 +0000
http://bitbucket.org/pypy/pypy/changeset/712ee4b2bdcf/
Log: arm: zero_ptr_field
diff --git a/rpython/jit/backend/arm/opassembler.py b/rpython/jit/backend/arm/opassembler.py
--- a/rpython/jit/backend/arm/opassembler.py
+++ b/rpython/jit/backend/arm/opassembler.py
@@ -578,6 +578,7 @@
return fcond
emit_op_setfield_raw = emit_op_setfield_gc
+ emit_op_zero_ptr_field = emit_op_setfield_gc
def emit_op_getfield_gc(self, op, arglocs, regalloc, fcond):
base_loc, ofs, res, size = arglocs
diff --git a/rpython/jit/backend/arm/regalloc.py b/rpython/jit/backend/arm/regalloc.py
--- a/rpython/jit/backend/arm/regalloc.py
+++ b/rpython/jit/backend/arm/regalloc.py
@@ -818,8 +818,11 @@
def prepare_op_setfield_gc(self, op, fcond):
boxes = op.getarglist()
+ ofs, size, sign = unpack_fielddescr(op.getdescr())
+ return self._prepare_op_setfield(boxes, ofs, size)
+
+ def _prepare_op_setfield(self, boxes, ofs, size):
a0, a1 = boxes
- ofs, size, sign = unpack_fielddescr(op.getdescr())
base_loc = self.make_sure_var_in_reg(a0, boxes)
value_loc = self.make_sure_var_in_reg(a1, boxes)
ofs_size = default_imm_size if size < 8 else VMEM_imm_size
@@ -832,6 +835,11 @@
prepare_op_setfield_raw = prepare_op_setfield_gc
+ def prepare_op_zero_ptr_field(self, op, fcond):
+ a0 = op.getarg(0)
+ ofs = op.getarg(1).getint()
+ return self._prepare_op_setfield([a0, ConstInt(0)], ofs, WORD)
+
def prepare_op_getfield_gc(self, op, fcond):
a0 = op.getarg(0)
ofs, size, sign = unpack_fielddescr(op.getdescr())
More information about the pypy-commit
mailing list