Author: Richard Plangger <[email protected]>
Branch: s390x-backend
Changeset: r81983:228ce776f7f6
Date: 2016-01-27 20:46 +0100
http://bitbucket.org/pypy/pypy/changeset/228ce776f7f6/
Log: added ztranslation call assembler test and some more (hurray, one of
them fails and this might be the bug I'm searching for)
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
@@ -278,7 +278,7 @@
if exctploc is not None:
mc.LG(exctploc, l.addr(diff, r.SCRATCH))
# Zero out the exception fields
- mc.LGHI(r.SCRATCH2, l.imm(0))
+ mc.XGR(r.SCRATCH2, r.SCRATCH2)
mc.STG(r.SCRATCH2, l.addr(0, r.SCRATCH))
mc.STG(r.SCRATCH2, l.addr(diff, r.SCRATCH))
@@ -1169,10 +1169,8 @@
# to be executed, thus remove the first opcode
self.mc.b_offset(descr._ll_loop_code + self.mc.LARL_byte_count)
else:
- # restore the pool address
offset = self.pool.get_descr_offset(descr) + \
JUMPABS_TARGET_ADDR__POOL_OFFSET
- offset_pool = offset + JUMPABS_POOL_ADDR_POOL_OFFSET
self.mc.LG(r.SCRATCH, l.pool(offset))
self.mc.BCR(c.ANY, r.SCRATCH)
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
@@ -836,6 +836,22 @@
def emit_restore_exception(self, op, arglocs, regalloc):
self._restore_exception(self.mc, arglocs[1], arglocs[0])
+ def emit_guard_no_exception(self, op, arglocs, regalloc):
+ self.mc.load_imm(r.SCRATCH, self.cpu.pos_exception())
+ self.mc.LG(r.SCRATCH2, l.addr(0,r.SCRATCH))
+ self.mc.cmp_op(r.SCRATCH2, l.imm(0), imm=True)
+ self.guard_success_cc = c.EQ
+ self._emit_guard(op, arglocs)
+ # If the previous operation was a COND_CALL, overwrite its conditional
+ # jump to jump over this GUARD_NO_EXCEPTION as well, if we can
+ if self._find_nearby_operation(regalloc,-1).getopnum() ==
rop.COND_CALL:
+ jmp_adr, fcond = self.previous_cond_call_jcond
+ relative_target = self.mc.currpos() - jmp_adr
+ pmc = OverwritingBuilder(self.mc, jmp_adr, 1)
+ pmc.BRCL(fcond, l.imm(relative_target))
+ pmc.overwrite()
+
+
class MemoryOpAssembler(object):
_mixin_ = True
@@ -1194,21 +1210,6 @@
def emit_leave_portal_frame(self, op, arglocs, regalloc):
self.leave_portal_frame(op)
- def emit_guard_no_exception(self, op, arglocs, regalloc):
- self.mc.load_imm(r.SCRATCH, self.cpu.pos_exception())
- self.mc.LG(r.SCRATCH2, l.addr(0,r.SCRATCH))
- self.mc.cmp_op(r.SCRATCH2, l.imm(0), imm=True)
- self.guard_success_cc = c.EQ
- self._emit_guard(op, arglocs)
- # If the previous operation was a COND_CALL, overwrite its conditional
- # jump to jump over this GUARD_NO_EXCEPTION as well, if we can
- if self._find_nearby_operation(regalloc,-1).getopnum() ==
rop.COND_CALL:
- jmp_adr, fcond = self.previous_cond_call_jcond
- relative_target = self.mc.currpos() - jmp_adr
- pmc = OverwritingBuilder(self.mc, jmp_adr, 1)
- pmc.BRCL(fcond, l.imm(relative_target))
- pmc.overwrite()
-
class OpAssembler(IntOpAssembler, FloatOpAssembler,
GuardOpAssembler, CallOpAssembler,
AllocOpAssembler, MemoryOpAssembler,
diff --git a/rpython/jit/backend/zarch/test/test_tl.py
b/rpython/jit/backend/zarch/test/test_tl.py
new file mode 100644
--- /dev/null
+++ b/rpython/jit/backend/zarch/test/test_tl.py
@@ -0,0 +1,9 @@
+import py
+from rpython.jit.metainterp.test.test_tl import ToyLanguageTests
+from rpython.jit.backend.zarch.test.support import JitZARCHMixin
+
+class TestTL(JitZARCHMixin, ToyLanguageTests):
+ # for the individual tests see
+ # ====> ../../../metainterp/test/test_tl.py
+ pass
+
diff --git a/rpython/jit/backend/zarch/test/test_ztranslation_call_assembler.py
b/rpython/jit/backend/zarch/test/test_ztranslation_call_assembler.py
new file mode 100644
--- /dev/null
+++ b/rpython/jit/backend/zarch/test/test_ztranslation_call_assembler.py
@@ -0,0 +1,10 @@
+from rpython.jit.backend.llsupport.test.ztranslation_test import
TranslationTestCallAssembler
+from rpython.translator.translator import TranslationContext
+from rpython.config.translationoption import DEFL_GC
+from rpython.jit.backend.zarch.arch import WORD
+import sys
+
+class TestTranslationCallAssemblerZARCH(TranslationTestCallAssembler):
+ def _check_cbuilder(self, cbuilder):
+ pass
+
diff --git
a/rpython/jit/backend/zarch/test/test_ztranslation_external_exception.py
b/rpython/jit/backend/zarch/test/test_ztranslation_external_exception.py
new file mode 100644
--- /dev/null
+++ b/rpython/jit/backend/zarch/test/test_ztranslation_external_exception.py
@@ -0,0 +1,19 @@
+from rpython.jit.backend.llsupport.test.ztranslation_test import
TranslationRemoveTypePtrTest
+from rpython.translator.translator import TranslationContext
+from rpython.config.translationoption import DEFL_GC
+from rpython.translator.platform import platform as compiler
+
+if compiler.name == 'msvc':
+ _MSVC = True
+else:
+ _MSVC = False
+
+class TestTranslationRemoveTypePtrX86(TranslationRemoveTypePtrTest):
+ def _get_TranslationContext(self):
+ t = TranslationContext()
+ t.config.translation.gc = DEFL_GC # 'hybrid' or 'minimark'
+ if not _MSVC:
+ t.config.translation.gcrootfinder = 'asmgcc'
+ t.config.translation.list_comprehension_operations = True
+ t.config.translation.gcremovetypeptr = True
+ return t
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit