[pypy-svn] r79718 - pypy/branch/arm-backend/pypy/jit/backend/arm/test
david at codespeak.net
david at codespeak.net
Wed Dec 1 17:35:58 CET 2010
Author: david
Date: Wed Dec 1 17:35:57 2010
New Revision: 79718
Added:
pypy/branch/arm-backend/pypy/jit/backend/arm/test/test_ztranslate_backend.py
Log:
Test for the translation of the backend
Added: pypy/branch/arm-backend/pypy/jit/backend/arm/test/test_ztranslate_backend.py
==============================================================================
--- (empty file)
+++ pypy/branch/arm-backend/pypy/jit/backend/arm/test/test_ztranslate_backend.py Wed Dec 1 17:35:57 2010
@@ -0,0 +1,55 @@
+import py
+from pypy.jit.metainterp.history import (AbstractFailDescr,
+ AbstractDescr,
+ BasicFailDescr,
+ BoxInt, Box, BoxPtr,
+ LoopToken,
+ ConstInt, ConstPtr,
+ BoxObj, Const,
+ ConstObj, BoxFloat, ConstFloat)
+from pypy.jit.metainterp.resoperation import ResOperation, rop
+from pypy.rpython.test.test_llinterp import interpret
+from pypy.jit.backend.detect_cpu import getcpuclass
+from pypy.jit.backend.arm.runner import ArmCPU
+
+class FakeStats(object):
+ pass
+cpu = getcpuclass()(rtyper=None, stats=FakeStats(), translate_support_code=True)
+class TestBackendTranslation(object):
+ def test_compile_bridge(self):
+ def loop():
+ i0 = BoxInt()
+ i1 = BoxInt()
+ i2 = BoxInt()
+ faildescr1 = BasicFailDescr(1)
+ faildescr2 = BasicFailDescr(2)
+ looptoken = LoopToken()
+ operations = [
+ ResOperation(rop.INT_ADD, [i0, ConstInt(1)], i1),
+ ResOperation(rop.INT_LE, [i1, ConstInt(9)], i2),
+ ResOperation(rop.GUARD_TRUE, [i2], None, descr=faildescr1),
+ ResOperation(rop.JUMP, [i1], None, descr=looptoken),
+ ]
+ inputargs = [i0]
+ operations[2].setfailargs([i1])
+ cpu.compile_loop(inputargs, operations, looptoken)
+
+ i1b = BoxInt()
+ i3 = BoxInt()
+ bridge = [
+ ResOperation(rop.INT_LE, [i1b, ConstInt(19)], i3),
+ ResOperation(rop.GUARD_TRUE, [i3], None, descr=faildescr2),
+ ResOperation(rop.JUMP, [i1b], None, descr=looptoken),
+ ]
+ bridge[1].setfailargs([i1b])
+
+ cpu.compile_bridge(faildescr1, [i1b], bridge)
+
+ cpu.set_future_value_int(0, 2)
+ fail = cpu.execute_token(looptoken)
+ res = cpu.get_latest_value_int(0)
+ return fail.identifier * 1000 + res
+
+ res = interpret(loop, [], insist=True)
+ assert res == 2020
+
More information about the Pypy-commit
mailing list