[pypy-commit] pypy cleanup-llgraph-backend: (fijal, arigo) pass few more tests, really

arigo noreply at buildbot.pypy.org
Wed Oct 17 12:37:46 CEST 2012


Author: Armin Rigo <arigo at tunes.org>
Branch: cleanup-llgraph-backend
Changeset: r58162:39517f9580e2
Date: 2012-10-17 12:37 +0200
http://bitbucket.org/pypy/pypy/changeset/39517f9580e2/

Log:	(fijal, arigo) pass few more tests, really

diff --git a/pypy/jit/backend/llgraph/runner.py b/pypy/jit/backend/llgraph/runner.py
--- a/pypy/jit/backend/llgraph/runner.py
+++ b/pypy/jit/backend/llgraph/runner.py
@@ -11,6 +11,7 @@
 from pypy.rpython.lltypesystem import lltype, llmemory, rffi, rclass, rstr
 
 from pypy.rlib.rarithmetic import ovfcheck
+from pypy.rlib.rtimer import read_timestamp
 
 class LLTrace(object):
     has_been_freed = False
@@ -53,6 +54,9 @@
         self.fieldname = fieldname
         self.FIELD = getattr(S, fieldname)
 
+    def sort_key(self):
+        return self.fieldname
+
     def is_pointer_field(self):
         return getkind(self.FIELD) == 'ref'
 
@@ -70,7 +74,12 @@
         self.FIELD = getattr(A.OF, fieldname)
 
 class LLGraphCPU(model.AbstractCPU):
+    supports_floats = True
+    supports_longlong = True
+    supports_singlefloats = True
+
     def __init__(self, rtyper):
+        model.AbstractCPU.__init__(self)
         self.rtyper = rtyper
         self.llinterp = LLInterpreter(rtyper)
         self.known_labels = WeakKeyDictionary()
@@ -240,21 +249,31 @@
     bh_call_v = _do_call
 
     def bh_getfield_gc(self, p, descr):
-        p = lltype.cast_opaque_ptr(lltype.Ptr(descr.S), p)
+        p = support.cast_arg(lltype.Ptr(descr.S), p)
         return support.cast_result(descr.FIELD, getattr(p, descr.fieldname))
 
     bh_getfield_gc_i = bh_getfield_gc
     bh_getfield_gc_r = bh_getfield_gc
     bh_getfield_gc_f = bh_getfield_gc
 
+    bh_getfield_raw   = bh_getfield_gc
+    bh_getfield_raw_i = bh_getfield_raw
+    bh_getfield_raw_r = bh_getfield_raw
+    bh_getfield_raw_f = bh_getfield_raw
+
     def bh_setfield_gc(self, p, newvalue, descr):
-        p = lltype.cast_opaque_ptr(lltype.Ptr(descr.S), p)
+        p = support.cast_arg(lltype.Ptr(descr.S), p)
         setattr(p, descr.fieldname, support.cast_arg(descr.FIELD, newvalue))
 
     bh_setfield_gc_i = bh_setfield_gc
     bh_setfield_gc_r = bh_setfield_gc
     bh_setfield_gc_f = bh_setfield_gc
 
+    bh_setfield_raw   = bh_setfield_gc
+    bh_setfield_raw_i = bh_setfield_raw
+    bh_setfield_raw_r = bh_setfield_raw
+    bh_setfield_raw_f = bh_setfield_raw
+
     def bh_arraylen_gc(self, a, descr):
         array = a._obj.container
         return array.getlength()
@@ -348,6 +367,9 @@
         array = lltype.malloc(arraydescr.A, length, zero=True)
         return lltype.cast_opaque_ptr(llmemory.GCREF, array)
 
+    def bh_read_timestamp(self):
+        return read_timestamp()
+
 
 class LLFrame(object):
     def __init__(self, cpu, argboxes, args):
@@ -369,6 +391,9 @@
         i = 0
         while True:
             op = self.lltrace.operations[i]
+            if op.getopnum() == -124:      # force_spill, for tests
+                i += 1
+                continue
             args = [self.lookup(arg) for arg in op.getarglist()]
             self.current_op = op # for label
             try:
diff --git a/pypy/jit/backend/test/runner_test.py b/pypy/jit/backend/test/runner_test.py
--- a/pypy/jit/backend/test/runner_test.py
+++ b/pypy/jit/backend/test/runner_test.py
@@ -2586,11 +2586,11 @@
             c[3] = 3.5
             descr_C = cpu.arraydescrof(C)
             x = cpu.bh_getarrayitem_gc_f(
-                descr_C, lltype.cast_opaque_ptr(llmemory.GCREF, c), 3)
+                lltype.cast_opaque_ptr(llmemory.GCREF, c), 3, descr_C)
             assert longlong.getrealfloat(x) == 3.5
             cpu.bh_setarrayitem_gc_f(
-                descr_C, lltype.cast_opaque_ptr(llmemory.GCREF, c), 4,
-                longlong.getfloatstorage(4.5))
+                lltype.cast_opaque_ptr(llmemory.GCREF, c), 4,
+                longlong.getfloatstorage(4.5), descr_C)
             assert c[4] == 4.5
         s = rstr.mallocstr(6)
         x = cpu.bh_strlen(lltype.cast_opaque_ptr(llmemory.GCREF, s))
@@ -2635,15 +2635,14 @@
         #
         cpu.bh_setfield_raw_i(
             heaptracker.adr2int(llmemory.cast_ptr_to_adr(rs)),
-            descrfld_rx, ord('!'))
+            ord('!'), descrfld_rx)
         assert rs.x == '!'
         #
-
         if self.cpu.supports_floats:
             descrfld_z = cpu.fielddescrof(S, 'z')
             cpu.bh_setfield_gc_f(
                 lltype.cast_opaque_ptr(llmemory.GCREF, s),
-                descrfld_z, longlong.getfloatstorage(3.5))
+                longlong.getfloatstorage(3.5), descrfld_z)
             assert s.z == 3.5
             s.z = 3.2
             x = cpu.bh_getfield_gc_f(
@@ -2674,7 +2673,7 @@
         vtable2 = lltype.malloc(rclass.OBJECT_VTABLE, immortal=True)
         vtable2_int = heaptracker.adr2int(llmemory.cast_ptr_to_adr(vtable2))
         heaptracker.register_known_gctype(cpu, vtable2, rclass.OBJECT)
-        x = cpu.bh_new_with_vtable(descrsize2, vtable2_int)
+        x = cpu.bh_new_with_vtable(vtable2_int, descrsize2)
         lltype.cast_opaque_ptr(lltype.Ptr(rclass.OBJECT), x)    # type check
         # well...
         #assert x.getref(rclass.OBJECTPTR).typeptr == vtable2


More information about the pypy-commit mailing list