[pypy-svn] pypy arm-backend-2: support refs as imm values in failargs
bivab
commits-noreply at bitbucket.org
Wed Feb 2 13:50:29 CET 2011
Author: David Schneider <david.schneider at picle.org>
Branch: arm-backend-2
Changeset: r41554:2a82d42e0a77
Date: 2011-01-30 15:47 +0100
http://bitbucket.org/pypy/pypy/changeset/2a82d42e0a77/
Log: support refs as imm values in failargs
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
@@ -128,7 +128,7 @@
i += 1
res = enc[i]
if res == self.IMM_LOC:
- assert group == self.INT_TYPE
+ assert group == self.INT_TYPE or group == self.REF_TYPE
# imm value
value = self.decode32(enc, i+1)
i += 4
diff --git a/pypy/jit/backend/arm/test/test_trace_operations.py b/pypy/jit/backend/arm/test/test_trace_operations.py
new file mode 100644
--- /dev/null
+++ b/pypy/jit/backend/arm/test/test_trace_operations.py
@@ -0,0 +1,39 @@
+from pypy.jit.backend.x86.test.test_regalloc import BaseTestRegalloc
+from pypy.jit.backend.detect_cpu import getcpuclass
+from pypy.rpython.lltypesystem import lltype, llmemory
+CPU = getcpuclass()
+
+class TestConstPtr(BaseTestRegalloc):
+
+ cpu = CPU(None, None)
+ #cpu.gc_ll_descr = MockGcDescr(False)
+ cpu.setup_once()
+
+ S = lltype.GcForwardReference()
+ S.become(lltype.GcStruct('S', ('field', lltype.Ptr(S)),
+ ('int', lltype.Signed)))
+
+ fielddescr = cpu.fielddescrof(S, 'field')
+
+ struct_ptr = lltype.malloc(S)
+ struct_ref = lltype.cast_opaque_ptr(llmemory.GCREF, struct_ptr)
+ #child_ptr = lltype.nullptr(S)
+ #struct_ptr.field = child_ptr
+
+
+ #descr0 = cpu.fielddescrof(S, 'int')
+ ptr0 = struct_ref
+
+ namespace = locals().copy()
+
+ def test_finish_failargs_constptr(self):
+ ops = '''
+ [i0]
+ i1 = int_add(i0, 1)
+ finish(i1, ConstPtr(ptr0))
+ '''
+ self.interpret(ops, [99])
+ assert self.getint(0) == 100
+ ptr = self.cpu.get_latest_value_ref(1)
+ assert self.ptr0 == ptr
+
More information about the Pypy-commit
mailing list