[pypy-commit] pypy arm-backend-2: simplify some conditional paths in the generated code

bivab noreply at buildbot.pypy.org
Mon Jan 9 11:56:49 CET 2012


Author: David Schneider <david.schneider at picle.org>
Branch: arm-backend-2
Changeset: r51165:895cbdd61311
Date: 2012-01-03 12:51 +0100
http://bitbucket.org/pypy/pypy/changeset/895cbdd61311/

Log:	simplify some conditional paths in the generated code

diff --git a/pypy/jit/backend/arm/assembler.py b/pypy/jit/backend/arm/assembler.py
--- a/pypy/jit/backend/arm/assembler.py
+++ b/pypy/jit/backend/arm/assembler.py
@@ -329,17 +329,13 @@
                 mc.LDR_ri(reg.value, r.fp.value, imm=ofs)
 
         mc.CMP_ri(r.r0.value, 0)
-        jmp_pos = mc.currpos()
-        mc.NOP()
+        mc.B(self.propagate_exception_path, c=c.EQ)
         nursery_free_adr = self.cpu.gc_ll_descr.get_nursery_free_addr()
         mc.gen_load_int(r.r1.value, nursery_free_adr)
         mc.LDR_ri(r.r1.value, r.r1.value)
         # see above
         mc.POP([r.ip.value, r.pc.value])
 
-        pmc = OverwritingBuilder(mc, jmp_pos, WORD)
-        pmc.B_offs(jmp_pos, c=c.EQ)
-        mc.B(self.propagate_exception_path)
         rawstart = mc.materialize(self.cpu.asmmemmgr, [])
         self.malloc_slowpath = rawstart
 
@@ -1055,9 +1051,6 @@
 
         self.mc.CMP_rr(r.r1.value, r.ip.value)
 
-        fast_jmp_pos = self.mc.currpos()
-        self.mc.NOP()
-
         # XXX update
         # See comments in _build_malloc_slowpath for the
         # details of the two helper functions that we are calling below.
@@ -1071,11 +1064,7 @@
         # a no-op.
         self.mark_gc_roots(self.write_new_force_index(),
                            use_copy_area=True)
-        self.mc.BL(self.malloc_slowpath)
-
-        offset = self.mc.currpos() - fast_jmp_pos
-        pmc = OverwritingBuilder(self.mc, fast_jmp_pos, WORD)
-        pmc.ADD_ri(r.pc.value, r.pc.value, offset - PC_OFFSET, cond=c.LS)
+        self.mc.BL(self.malloc_slowpath, c=c.HI)
 
         self.mc.gen_load_int(r.ip.value, nursery_free_adr)
         self.mc.STR_ri(r.r1.value, r.ip.value)


More information about the pypy-commit mailing list