Author: Armin Rigo <[email protected]>
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())
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to