Author: Richard Plangger <planri...@gmail.com>
Branch: s390x-backend
Changeset: r81948:acf6ac9d0d3d
Date: 2016-01-26 14:01 +0100
http://bitbucket.org/pypy/pypy/changeset/acf6ac9d0d3d/

Log:    gotcha, guard nonnull class was implemented incorrectly (substracted
        value that should have been shifted 16 bits to the left)

diff --git a/rpython/jit/backend/zarch/assembler.py 
b/rpython/jit/backend/zarch/assembler.py
--- a/rpython/jit/backend/zarch/assembler.py
+++ b/rpython/jit/backend/zarch/assembler.py
@@ -542,7 +542,6 @@
         mc.restore_link()
         # So we return to our caller, conditionally if "EQ"
         mc.BCR(c.EQ, r.r14)
-        mc.trap() # debug if this is EVER executed!
         #
         # Else, jump to propagate_exception_path
         assert self.propagate_exception_path
diff --git a/rpython/jit/backend/zarch/opassembler.py 
b/rpython/jit/backend/zarch/opassembler.py
--- a/rpython/jit/backend/zarch/opassembler.py
+++ b/rpython/jit/backend/zarch/opassembler.py
@@ -682,11 +682,10 @@
     def emit_guard_nonnull_class(self, op, arglocs, regalloc):
         self.mc.cmp_op(arglocs[0], l.imm(1), imm=True, signed=False)
         patch_pos = self.mc.currpos()
-        self.mc.trap()
-        self.mc.write('\x00' * 4)
+        self.mc.reserve_cond_jump(short=True)
         self._cmp_guard_class(op, arglocs, regalloc)
         pmc = OverwritingBuilder(self.mc, patch_pos, 1)
-        pmc.BRCL(c.LT, l.imm(self.mc.currpos() - patch_pos))
+        pmc.BRC(c.LT, l.imm(self.mc.currpos() - patch_pos))
         pmc.overwrite()
         self.guard_success_cc = c.EQ
         self._emit_guard(op, arglocs[2:])
@@ -716,6 +715,7 @@
     def _cmp_guard_gc_type(self, loc_ptr, expected_typeid):
         self._read_typeid(r.SCRATCH2, loc_ptr)
         assert 0 <= expected_typeid <= 0x7fffffff   # 4 bytes are always enough
+        # we can handle 4 byte compare immediate
         self.mc.cmp_op(r.SCRATCH2, l.imm(expected_typeid),
                        imm=True, signed=False)
 
_______________________________________________
pypy-commit mailing list
pypy-commit@python.org
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to