[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