[pypy-commit] pypy optresult: whack whack whack until we get somewhere with the backend tests
fijal
noreply at buildbot.pypy.org
Thu May 28 15:49:24 CEST 2015
Author: Maciej Fijalkowski <fijall at gmail.com>
Branch: optresult
Changeset: r77651:813acea37659
Date: 2015-05-28 15:49 +0200
http://bitbucket.org/pypy/pypy/changeset/813acea37659/
Log: whack whack whack until we get somewhere with the backend tests
diff --git a/rpython/jit/backend/llsupport/descr.py b/rpython/jit/backend/llsupport/descr.py
--- a/rpython/jit/backend/llsupport/descr.py
+++ b/rpython/jit/backend/llsupport/descr.py
@@ -7,6 +7,7 @@
from rpython.jit.codewriter import heaptracker, longlong
from rpython.jit.codewriter.longlong import is_longlong
from rpython.jit.metainterp.optimizeopt import intbounds
+from rpython.rtyper import rclass
class GcCache(object):
@@ -37,7 +38,7 @@
def __init__(self, size, count_fields_if_immut=-1,
gc_fielddescrs=None, all_fielddescrs=None,
- vtable=0):
+ vtable=lltype.nullptr(rclass.OBJECT_VTABLE)):
self.size = size
self.count_fields_if_immut = count_fields_if_immut
self.gc_fielddescrs = gc_fielddescrs
diff --git a/rpython/jit/backend/llsupport/test/test_descr.py b/rpython/jit/backend/llsupport/test/test_descr.py
--- a/rpython/jit/backend/llsupport/test/test_descr.py
+++ b/rpython/jit/backend/llsupport/test/test_descr.py
@@ -13,24 +13,24 @@
T = lltype.GcStruct('T')
S = lltype.GcStruct('S', ('x', lltype.Char),
('y', lltype.Ptr(T)))
- descr_s = get_size_descr(c0, S)
- descr_t = get_size_descr(c0, T)
+ descr_s = get_size_descr(None, c0, S, False)
+ descr_t = get_size_descr(None, c0, T, False)
assert descr_s.size == symbolic.get_size(S, False)
assert descr_t.size == symbolic.get_size(T, False)
assert descr_s.count_fields_if_immutable() == -1
assert descr_t.count_fields_if_immutable() == -1
assert descr_t.gc_fielddescrs == []
assert len(descr_s.gc_fielddescrs) == 1
- assert descr_s == get_size_descr(c0, S)
- assert descr_s != get_size_descr(c1, S)
+ assert descr_s == get_size_descr(None, c0, S, False)
+ assert descr_s != get_size_descr(None, c1, S, False)
#
- descr_s = get_size_descr(c1, S)
+ descr_s = get_size_descr(None, c1, S, False)
assert isinstance(descr_s.size, Symbolic)
assert descr_s.count_fields_if_immutable() == -1
PARENT = lltype.Struct('P', ('x', lltype.Ptr(T)))
STRUCT = lltype.GcStruct('S', ('parent', PARENT), ('y', lltype.Ptr(T)))
- descr_struct = get_size_descr(c0, STRUCT)
+ descr_struct = get_size_descr(None, c0, STRUCT, False)
assert len(descr_struct.gc_fielddescrs) == 2
def test_get_size_descr_immut():
@@ -49,7 +49,7 @@
for STRUCT, expected in [(S, 0), (T, 1), (U, 3), (V, 3)]:
for translated in [False, True]:
c0 = GcCache(translated)
- descr_s = get_size_descr(c0, STRUCT)
+ descr_s = get_size_descr(None, c0, STRUCT, False)
assert descr_s.count_fields_if_immutable() == expected
def test_get_field_descr():
@@ -329,7 +329,7 @@
S = lltype.GcStruct('S', ('x', lltype.Char),
('y', lltype.Ptr(T)),
('z', lltype.Ptr(T)))
- descr1 = get_size_descr(c0, S)
+ descr1 = get_size_descr(None, c0, S, False)
s = symbolic.get_size(S, False)
assert repr_of_descr(descr1) == '<SizeDescr %d>' % s
#
diff --git a/rpython/jit/backend/llsupport/test/test_gc.py b/rpython/jit/backend/llsupport/test/test_gc.py
--- a/rpython/jit/backend/llsupport/test/test_gc.py
+++ b/rpython/jit/backend/llsupport/test/test_gc.py
@@ -5,9 +5,9 @@
from rpython.jit.backend.llsupport import jitframe, gc, descr
from rpython.jit.backend.llsupport import symbolic
from rpython.jit.metainterp.gc import get_description
-from rpython.jit.metainterp.history import BoxPtr, BoxInt, ConstPtr
+from rpython.jit.metainterp.history import ConstPtr
from rpython.jit.metainterp.resoperation import get_deep_immutable_oplist, rop,\
- ResOperation
+ ResOperation, InputArgRef
from rpython.rlib.rarithmetic import is_valid_int, r_uint
def test_boehm():
@@ -23,7 +23,7 @@
#
# ---------- gc_malloc ----------
S = lltype.GcStruct('S', ('x', lltype.Signed))
- sizedescr = descr.get_size_descr(gc_ll_descr, S)
+ sizedescr = descr.get_size_descr(None, gc_ll_descr, S, False)
p = gc_ll_descr.gc_malloc(sizedescr)
assert record == [(sizedescr.size, p)]
del record[:]
@@ -143,7 +143,7 @@
def test_gc_malloc(self):
S = lltype.GcStruct('S', ('x', lltype.Signed))
- sizedescr = descr.get_size_descr(self.gc_ll_descr, S)
+ sizedescr = descr.get_size_descr(None, self.gc_ll_descr, S, False)
p = self.gc_ll_descr.gc_malloc(sizedescr)
assert lltype.typeOf(p) == llmemory.GCREF
assert self.llop1.record == [("fixedsize", repr(sizedescr.size),
@@ -184,14 +184,13 @@
llop1 = self.llop1
#
rewriter = gc.GcRewriterAssembler(gc_ll_descr, None)
- newops = rewriter.newops
- v_base = BoxPtr()
+ newops = rewriter._newops
+ v_base = InputArgRef()
rewriter.gen_write_barrier(v_base)
assert llop1.record == []
assert len(newops) == 1
assert newops[0].getopnum() == rop.COND_CALL_GC_WB
assert newops[0].getarg(0) == v_base
- assert newops[0].result is None
wbdescr = newops[0].getdescr()
assert is_valid_int(wbdescr.jit_wb_if_flag)
assert is_valid_int(wbdescr.jit_wb_if_flag_byteofs)
@@ -217,11 +216,9 @@
S = lltype.GcStruct('S')
s = lltype.malloc(S)
s_gcref = lltype.cast_opaque_ptr(llmemory.GCREF, s)
- v_random_box = BoxPtr()
- v_result = BoxInt()
+ v_random_box = InputArgRef()
operations = [
- ResOperation(rop.PTR_EQ, [v_random_box, ConstPtr(s_gcref)],
- v_result),
+ ResOperation(rop.PTR_EQ, [v_random_box, ConstPtr(s_gcref)]),
]
gc_ll_descr = self.gc_ll_descr
gc_ll_descr.gcrefs = MyFakeGCRefList()
diff --git a/rpython/jit/backend/llsupport/test/test_gc_integration.py b/rpython/jit/backend/llsupport/test/test_gc_integration.py
--- a/rpython/jit/backend/llsupport/test/test_gc_integration.py
+++ b/rpython/jit/backend/llsupport/test/test_gc_integration.py
@@ -58,7 +58,7 @@
def test_basic(self):
ops = '''
[p0]
- p1 = getfield_gc(p0, descr=fielddescr)
+ p1 = getfield_gc_r(p0, descr=fielddescr)
finish(p1)
'''
self.interpret(ops, [self.struct_ptr])
@@ -67,7 +67,7 @@
def test_guard(self):
ops = '''
[i0, p0, i1, p1]
- p3 = getfield_gc(p0, descr=fielddescr)
+ p3 = getfield_gc_r(p0, descr=fielddescr)
guard_true(i0) [p0, i1, p1, p3]
'''
s1 = lltype.malloc(self.S)
@@ -99,7 +99,7 @@
def test_rewrite_constptr(self):
ops = '''
[]
- p1 = getfield_gc(ConstPtr(struct_ref), descr=fielddescr)
+ p1 = getfield_gc_r(ConstPtr(struct_ref), descr=fielddescr)
finish(p1)
'''
self.interpret(ops, [])
@@ -111,30 +111,30 @@
label(i0, i1, i2, i3, i4, i5, i6, i7, i8, descr=targettoken)
guard_value(i2, 1) [i2, i3, i4, i5, i6, i7, i0, i1, i8]
guard_class(i4, 138998336) [i4, i5, i6, i7, i0, i1, i8]
- i11 = getfield_gc(i4, descr=intdescr)
+ i11 = getfield_gc_i(i4, descr=intdescr)
guard_nonnull(i11) [i4, i5, i6, i7, i0, i1, i11, i8]
- i13 = getfield_gc(i11, descr=intdescr)
+ i13 = getfield_gc_i(i11, descr=intdescr)
guard_isnull(i13) [i4, i5, i6, i7, i0, i1, i11, i8]
- i15 = getfield_gc(i4, descr=intdescr)
+ i15 = getfield_gc_i(i4, descr=intdescr)
i17 = int_lt(i15, 0)
guard_false(i17) [i4, i5, i6, i7, i0, i1, i11, i15, i8]
- i18 = getfield_gc(i11, descr=intdescr)
+ i18 = getfield_gc_i(i11, descr=intdescr)
i19 = int_ge(i15, i18)
guard_false(i19) [i4, i5, i6, i7, i0, i1, i11, i15, i8]
i20 = int_lt(i15, 0)
guard_false(i20) [i4, i5, i6, i7, i0, i1, i11, i15, i8]
- i21 = getfield_gc(i11, descr=intdescr)
- i22 = getfield_gc(i11, descr=intdescr)
+ i21 = getfield_gc_i(i11, descr=intdescr)
+ i22 = getfield_gc_i(i11, descr=intdescr)
i23 = int_mul(i15, i22)
i24 = int_add(i21, i23)
- i25 = getfield_gc(i4, descr=intdescr)
+ i25 = getfield_gc_i(i4, descr=intdescr)
i27 = int_add(i25, 1)
setfield_gc(i4, i27, descr=intdescr)
- i29 = getfield_raw(144839744, descr=intdescr)
+ i29 = getfield_raw_i(144839744, descr=intdescr)
i31 = int_and(i29, -2141192192)
i32 = int_is_true(i31)
guard_false(i32) [i4, i6, i7, i0, i1, i24]
- i33 = getfield_gc(i0, descr=intdescr)
+ i33 = getfield_gc_i(i0, descr=intdescr)
guard_value(i33, ConstPtr(ptr0)) [i4, i6, i7, i0, i1, i33, i24]
jump(i0, i1, 1, 17, i4, ConstPtr(ptr0), i6, i7, i24, descr=targettoken)
'''
@@ -388,22 +388,22 @@
self.namespace['ds%i' % i] = cpu.fielddescrof(S2, 's%d' % i)
ops = '''
[i0, p0]
- p1 = getfield_gc(p0, descr=ds0)
- p2 = getfield_gc(p0, descr=ds1)
- p3 = getfield_gc(p0, descr=ds2)
- p4 = getfield_gc(p0, descr=ds3)
- p5 = getfield_gc(p0, descr=ds4)
- p6 = getfield_gc(p0, descr=ds5)
- p7 = getfield_gc(p0, descr=ds6)
- p8 = getfield_gc(p0, descr=ds7)
- p9 = getfield_gc(p0, descr=ds8)
- p10 = getfield_gc(p0, descr=ds9)
- p11 = getfield_gc(p0, descr=ds10)
- p12 = getfield_gc(p0, descr=ds11)
- p13 = getfield_gc(p0, descr=ds12)
- p14 = getfield_gc(p0, descr=ds13)
- p15 = getfield_gc(p0, descr=ds14)
- p16 = getfield_gc(p0, descr=ds15)
+ p1 = getfield_gc_r(p0, descr=ds0)
+ p2 = getfield_gc_r(p0, descr=ds1)
+ p3 = getfield_gc_r(p0, descr=ds2)
+ p4 = getfield_gc_r(p0, descr=ds3)
+ p5 = getfield_gc_r(p0, descr=ds4)
+ p6 = getfield_gc_r(p0, descr=ds5)
+ p7 = getfield_gc_r(p0, descr=ds6)
+ p8 = getfield_gc_r(p0, descr=ds7)
+ p9 = getfield_gc_r(p0, descr=ds8)
+ p10 = getfield_gc_r(p0, descr=ds9)
+ p11 = getfield_gc_r(p0, descr=ds10)
+ p12 = getfield_gc_r(p0, descr=ds11)
+ p13 = getfield_gc_r(p0, descr=ds12)
+ p14 = getfield_gc_r(p0, descr=ds13)
+ p15 = getfield_gc_r(p0, descr=ds14)
+ p16 = getfield_gc_r(p0, descr=ds15)
#
# now all registers are in use
p17 = call_malloc_nursery(40)
@@ -664,12 +664,12 @@
loop = self.parse("""
[p0, p1, p2]
pf = force_token() # this is the frame
- call(ConstClass(check_adr), pf, descr=checkdescr) # this can collect
- p3 = getfield_gc(p0, descr=fielddescr)
+ call_n(ConstClass(check_adr), pf, descr=checkdescr) # this can collect
+ p3 = getfield_gc_r(p0, descr=fielddescr)
pf2 = force_token()
- call(ConstClass(check2_adr), pf2, descr=checkdescr)
+ call_n(ConstClass(check2_adr), pf2, descr=checkdescr)
guard_nonnull(p3, descr=faildescr) [p0, p1, p2, p3]
- p4 = getfield_gc(p0, descr=fielddescr)
+ p4 = getfield_gc_r(p0, descr=fielddescr)
finish(p4, descr=finaldescr)
""", namespace={'finaldescr': BasicFinalDescr(),
'faildescr': BasicFailDescr(),
@@ -737,7 +737,7 @@
loop = self.parse("""
[f0]
i = force_token()
- f1 = call(ConstClass(fptr), i, f0, descr=calldescr)
+ f1 = call_f(ConstClass(fptr), i, f0, descr=calldescr)
finish(f1, descr=finaldescr)
""", namespace={'fptr': fptr, 'calldescr': calldescr,
'finaldescr': BasicFinalDescr(1)})
@@ -754,7 +754,7 @@
def test_malloc_1(self):
cpu = self.cpu
- sizeof = cpu.sizeof(self.S)
+ sizeof = cpu.sizeof(self.S, False)
sizeof.tid = 0
size = sizeof.size
loop = self.parse("""
@@ -856,11 +856,11 @@
loop = self.parse("""
[i0, p0]
pf = force_token()
- p1 = getarrayitem_gc(p0, 0, descr=arraydescr)
- p2 = getarrayitem_gc(p0, 1, descr=arraydescr)
- p3 = getarrayitem_gc(p0, 2, descr=arraydescr)
- pdying = getarrayitem_gc(p0, 0, descr=arraydescr)
- px = call_may_force(ConstClass(fptr), pf, pdying, i0, descr=calldescr)
+ p1 = getarrayitem_gc_r(p0, 0, descr=arraydescr)
+ p2 = getarrayitem_gc_r(p0, 1, descr=arraydescr)
+ p3 = getarrayitem_gc_r(p0, 2, descr=arraydescr)
+ pdying = getarrayitem_gc_r(p0, 0, descr=arraydescr)
+ px = call_may_force_r(ConstClass(fptr), pf, pdying, i0, descr=calldescr)
guard_not_forced(descr=faildescr) [p1, p2, p3, px]
finish(px, descr=finaldescr)
""", namespace={'fptr': fptr, 'calldescr': calldescr,
@@ -900,11 +900,11 @@
loop = self.parse("""
[i0, p0]
pf = force_token()
- p1 = getarrayitem_gc(p0, 0, descr=arraydescr)
- p2 = getarrayitem_gc(p0, 1, descr=arraydescr)
- p3 = getarrayitem_gc(p0, 2, descr=arraydescr)
- pdying = getarrayitem_gc(p0, 0, descr=arraydescr)
- px = call(ConstClass(fptr), pf, pdying, i0, descr=calldescr)
+ p1 = getarrayitem_gc_r(p0, 0, descr=arraydescr)
+ p2 = getarrayitem_gc_r(p0, 1, descr=arraydescr)
+ p3 = getarrayitem_gc_r(p0, 2, descr=arraydescr)
+ pdying = getarrayitem_gc_r(p0, 0, descr=arraydescr)
+ px = call_r(ConstClass(fptr), pf, pdying, i0, descr=calldescr)
guard_false(i0, descr=faildescr) [p1, p2, p3, px]
finish(px, descr=finaldescr)
""", namespace={'fptr': fptr, 'calldescr': calldescr,
diff --git a/rpython/jit/backend/llsupport/test/test_pinned_object_rewrite.py b/rpython/jit/backend/llsupport/test/test_pinned_object_rewrite.py
--- a/rpython/jit/backend/llsupport/test/test_pinned_object_rewrite.py
+++ b/rpython/jit/backend/llsupport/test/test_pinned_object_rewrite.py
@@ -116,20 +116,21 @@
lambda cpu: True)
#
class FakeCPU(BaseFakeCPU):
- def sizeof(self, STRUCT):
+ def sizeof(self, STRUCT, is_object):
descr = SizeDescrWithVTable(104)
descr.tid = 9315
+ descr.vtable = 12
return descr
self.cpu = FakeCPU()
def test_simple_getfield(self):
self.check_rewrite("""
[]
- i0 = getfield_gc(ConstPtr(pinned_obj_gcref), descr=pinned_obj_my_int_descr)
+ i0 = getfield_gc_i(ConstPtr(pinned_obj_gcref), descr=pinned_obj_my_int_descr)
""", """
[]
- p1 = getarrayitem_gc(ConstPtr(ptr_array_gcref), 0, descr=ptr_array_descr)
- i0 = getfield_gc(p1, descr=pinned_obj_my_int_descr)
+ p1 = getarrayitem_gc_r(ConstPtr(ptr_array_gcref), 0, descr=ptr_array_descr)
+ i0 = getfield_gc_i(p1, descr=pinned_obj_my_int_descr)
""")
assert len(self.gc_ll_descr.last_moving_obj_tracker._indexes) == 1
diff --git a/rpython/jit/backend/llsupport/test/test_recompilation.py b/rpython/jit/backend/llsupport/test/test_recompilation.py
--- a/rpython/jit/backend/llsupport/test/test_recompilation.py
+++ b/rpython/jit/backend/llsupport/test/test_recompilation.py
@@ -87,8 +87,8 @@
loop = self.interpret('''
[i0, i1, i2, i31, i32, i33]
label(i0, i1, i2, i31, i32, i33, descr=targettoken)
- i98 = same_as(0)
- i99 = same_as(1)
+ i98 = same_as_i(0)
+ i99 = same_as_i(1)
i30 = int_add(i1, i2)
i3 = int_add(i0, 1)
i4 = int_and(i3, 1)
@@ -137,8 +137,8 @@
loop = self.interpret('''
[i0, i1, i2]
label(i0, i1, i2, descr=targettoken)
- i98 = same_as(0)
- i99 = same_as(1)
+ i98 = same_as_i(0)
+ i99 = same_as_i(1)
i3 = int_add(i0, 1)
i4 = int_and(i3, 1)
guard_false(i4) [i98, i3]
diff --git a/rpython/jit/backend/llsupport/test/test_regalloc.py b/rpython/jit/backend/llsupport/test/test_regalloc.py
--- a/rpython/jit/backend/llsupport/test/test_regalloc.py
+++ b/rpython/jit/backend/llsupport/test/test_regalloc.py
@@ -1,20 +1,21 @@
import py
-from rpython.jit.metainterp.history import BoxInt, ConstInt, BoxFloat, INT, FLOAT,\
- BoxPtr
+from rpython.jit.metainterp.history import ConstInt, INT, FLOAT
from rpython.jit.backend.llsupport.regalloc import FrameManager, LinkedList
from rpython.jit.backend.llsupport.regalloc import RegisterManager as BaseRegMan
+from rpython.jit.metainterp.resoperation import InputArgInt, InputArgRef,\
+ InputArgFloat
def newboxes(*values):
- return [BoxInt(v) for v in values]
+ return [InputArgInt(v) for v in values]
def newrefboxes(count):
- return [BoxPtr() for _ in range(count)]
+ return [InputArgRef() for _ in range(count)]
def boxes_and_longevity(num):
res = []
longevity = {}
for i in range(num):
- box = BoxInt(0)
+ box = InputArgInt(0)
res.append(box)
longevity[box] = (0, 1)
return res, longevity
@@ -348,11 +349,11 @@
pass
fm = TFrameManager()
- b0 = BoxInt()
+ b0 = InputArgInt()
longevity = {b0: (0, 1)}
asm = MockAsm()
rm = RegisterManager(longevity, frame_manager=fm, assembler=asm)
- f0 = BoxFloat()
+ f0 = InputArgFloat()
longevity = {f0: (0, 1)}
xrm = XRegisterManager(longevity, frame_manager=fm, assembler=asm)
xrm.loc(f0)
@@ -474,42 +475,42 @@
loc0b = fm.loc(b0)
assert loc0b == loc0
#
- fm.loc(BoxInt())
+ fm.loc(InputArgInt())
assert fm.get_frame_depth() == 3
#
- f0 = BoxFloat()
+ f0 = InputArgFloat()
locf0 = fm.loc(f0)
assert fm.get_loc_index(locf0) == 3
assert fm.get_frame_depth() == 4
#
- f1 = BoxFloat()
+ f1 = InputArgFloat()
locf1 = fm.loc(f1)
assert fm.get_loc_index(locf1) == 4
assert fm.get_frame_depth() == 5
fm.mark_as_free(b1)
assert fm.freelist
- b2 = BoxInt()
+ b2 = InputArgInt()
fm.loc(b2) # should be in the same spot as b1 before
assert fm.get(b1) is None
assert fm.get(b2) == loc1
fm.mark_as_free(b0)
- p0 = BoxPtr()
+ p0 = InputArgRef()
ploc = fm.loc(p0)
assert fm.get_loc_index(ploc) == 0
assert fm.get_frame_depth() == 5
assert ploc != loc1
- p1 = BoxPtr()
+ p1 = InputArgRef()
p1loc = fm.loc(p1)
assert fm.get_loc_index(p1loc) == 5
assert fm.get_frame_depth() == 6
fm.mark_as_free(p0)
- p2 = BoxPtr()
+ p2 = InputArgRef()
p2loc = fm.loc(p2)
assert p2loc == ploc
assert len(fm.freelist) == 0
for box in fm.bindings.keys():
fm.mark_as_free(box)
- fm.bind(BoxPtr(), FakeFramePos(3, 'r'))
+ fm.bind(InputArgRef(), FakeFramePos(3, 'r'))
assert len(fm.freelist) == 6
def test_frame_manager_basic(self):
@@ -526,42 +527,42 @@
loc0b = fm.loc(b0)
assert loc0b == loc0
#
- fm.loc(BoxInt())
+ fm.loc(InputArgInt())
assert fm.get_frame_depth() == 3
#
- f0 = BoxFloat()
+ f0 = InputArgFloat()
locf0 = fm.loc(f0)
# can't be odd
assert fm.get_loc_index(locf0) == 4
assert fm.get_frame_depth() == 6
#
- f1 = BoxFloat()
+ f1 = InputArgFloat()
locf1 = fm.loc(f1)
assert fm.get_loc_index(locf1) == 6
assert fm.get_frame_depth() == 8
fm.mark_as_free(b1)
assert fm.freelist
- b2 = BoxInt()
+ b2 = InputArgInt()
fm.loc(b2) # should be in the same spot as b1 before
assert fm.get(b1) is None
assert fm.get(b2) == loc1
fm.mark_as_free(b0)
- p0 = BoxPtr()
+ p0 = InputArgRef()
ploc = fm.loc(p0)
assert fm.get_loc_index(ploc) == 0
assert fm.get_frame_depth() == 8
assert ploc != loc1
- p1 = BoxPtr()
+ p1 = InputArgRef()
p1loc = fm.loc(p1)
assert fm.get_loc_index(p1loc) == 3
assert fm.get_frame_depth() == 8
fm.mark_as_free(p0)
- p2 = BoxPtr()
+ p2 = InputArgRef()
p2loc = fm.loc(p2)
assert p2loc == ploc
assert len(fm.freelist) == 0
fm.mark_as_free(b2)
- f3 = BoxFloat()
+ f3 = InputArgFloat()
fm.mark_as_free(p2)
floc = fm.loc(f3)
assert fm.get_loc_index(floc) == 0
diff --git a/rpython/jit/backend/llsupport/test/test_regalloc_integration.py b/rpython/jit/backend/llsupport/test/test_regalloc_integration.py
--- a/rpython/jit/backend/llsupport/test/test_regalloc_integration.py
+++ b/rpython/jit/backend/llsupport/test/test_regalloc_integration.py
@@ -219,14 +219,14 @@
def test_exception_bridge_no_exception(self):
ops = '''
[i0]
- i1 = same_as(1)
- call(ConstClass(raising_fptr), i0, descr=raising_calldescr)
+ i1 = same_as_i(1)
+ call_n(ConstClass(raising_fptr), i0, descr=raising_calldescr)
guard_exception(ConstClass(zero_division_error)) [i1]
finish(0)
'''
bridge_ops = '''
[i3]
- i2 = same_as(2)
+ i2 = same_as_i(2)
guard_no_exception() [i2]
finish(1)
'''
@@ -382,7 +382,7 @@
def test_bug_wrong_stack_adj(self):
ops = '''
[i0, i1, i2, i3, i4, i5, i6, i7, i8]
- i9 = same_as(0)
+ i9 = same_as_i(0)
guard_true(i0) [i9, i0, i1, i2, i3, i4, i5, i6, i7, i8]
finish(1)
'''
@@ -390,7 +390,7 @@
assert self.getint(0) == 0
bridge_ops = '''
[i9, i0, i1, i2, i3, i4, i5, i6, i7, i8]
- call(ConstClass(raising_fptr), 0, descr=raising_calldescr)
+ call_n(ConstClass(raising_fptr), 0, descr=raising_calldescr)
guard_true(i9) [i0, i1, i2, i3, i4, i5, i6, i7, i8]
finish()
'''
@@ -415,7 +415,7 @@
def test_cmp_op_0(self):
ops = '''
[i0, i3]
- i1 = same_as(1)
+ i1 = same_as_i(1)
i2 = int_lt(i0, 100)
guard_true(i3) [i1, i2]
i4 = int_neg(i2)
@@ -525,7 +525,7 @@
ops = '''
[f0, f1]
f2 = float_add(f0, f1)
- i0 = same_as(0)
+ i0 = same_as_i(0)
guard_true(i0) [f2, f0, f1]
finish()
'''
@@ -537,7 +537,7 @@
[f0, f1, f2, f3, f4, f5, f6, f7, f8]
f9 = float_add(f0, f1)
f10 = float_add(f8, 3.5)
- i0 = same_as(0)
+ i0 = same_as_i(0)
guard_true(i0) [f9, f10, f2, f3, f4, f5, f6, f7, f8]
finish()
'''
diff --git a/rpython/jit/backend/llsupport/test/test_rewrite.py b/rpython/jit/backend/llsupport/test/test_rewrite.py
--- a/rpython/jit/backend/llsupport/test/test_rewrite.py
+++ b/rpython/jit/backend/llsupport/test/test_rewrite.py
@@ -24,6 +24,8 @@
class FakeLoopToken(object):
pass
+o_vtable = lltype.malloc(rclass.OBJECT_VTABLE, immortal=True)
+
class RewriteTests(object):
def check_rewrite(self, frm_operations, to_operations, **namespace):
S = lltype.GcStruct('S', ('x', lltype.Signed),
@@ -60,8 +62,8 @@
vtable_descr = self.gc_ll_descr.fielddescr_vtable
O = lltype.GcStruct('O', ('parent', rclass.OBJECT),
('x', lltype.Signed))
- o_vtable = lltype.malloc(rclass.OBJECT_VTABLE, immortal=True)
o_descr = self.cpu.sizeof(O, True)
+ o_vtable = globals()['o_vtable']
register_known_gctype(self.cpu, o_vtable, O)
#
tiddescr = self.gc_ll_descr.fielddescr_tid
@@ -164,7 +166,7 @@
def sizeof(self, STRUCT, is_object):
assert is_object
return SizeDescrWithVTable(102, gc_fielddescrs=[],
- vtable=12)
+ vtable=o_vtable)
self.cpu = FakeCPU()
self.gc_ll_descr = GcLLDescr_boehm(None, None, None)
@@ -241,7 +243,7 @@
[p1]
p0 = call_malloc_gc(ConstClass(malloc_fixedsize), 102, \
descr=malloc_fixedsize_descr)
- setfield_gc(p0, 12, descr=vtable_descr)
+ setfield_gc(p0, ConstClass(o_vtable), descr=vtable_descr)
jump()
""")
diff --git a/rpython/jit/backend/test/runner_test.py b/rpython/jit/backend/test/runner_test.py
--- a/rpython/jit/backend/test/runner_test.py
+++ b/rpython/jit/backend/test/runner_test.py
@@ -2861,15 +2861,16 @@
rffi.RFFI_SAVE_ERRNO | rffi.RFFI_ALT_ERRNO,
]:
faildescr = BasicFailDescr(1)
- inputargs = [BoxInt() for i in range(7)]
- i1 = BoxInt()
+ inputargs = [InputArgInt() for i in range(7)]
+ op0 = ResOperation(rop.CALL_RELEASE_GIL_I,
+ [ConstInt(saveerr), ConstInt(func1_adr)]
+ + inputargs,
+ descr=calldescr),
+
ops = [
- ResOperation(rop.CALL_RELEASE_GIL,
- [ConstInt(saveerr), ConstInt(func1_adr)]
- + inputargs, i1,
- descr=calldescr),
- ResOperation(rop.GUARD_NOT_FORCED, [], None, descr=faildescr),
- ResOperation(rop.FINISH, [i1], None, descr=BasicFinalDescr(0))
+ op0,
+ ResOperation(rop.GUARD_NOT_FORCED, [], descr=faildescr),
+ ResOperation(rop.FINISH, [op0], descr=BasicFinalDescr(0))
]
ops[-2].setfailargs([])
looptoken = JitCellToken()
@@ -2932,15 +2933,15 @@
rffi.RFFI_ZERO_ERRNO_BEFORE | rffi.RFFI_ALT_ERRNO,
]:
faildescr = BasicFailDescr(1)
- inputargs = [BoxInt() for i in range(7)]
- i1 = BoxInt()
+ inputargs = [InputArgInt() for i in range(7)]
+ op0 = ResOperation(rop.CALL_RELEASE_GIL_I,
+ [ConstInt(saveerr), ConstInt(func1_adr)]
+ + inputargs,
+ descr=calldescr),
+
ops = [
- ResOperation(rop.CALL_RELEASE_GIL,
- [ConstInt(saveerr), ConstInt(func1_adr)]
- + inputargs, i1,
- descr=calldescr),
- ResOperation(rop.GUARD_NOT_FORCED, [], None, descr=faildescr),
- ResOperation(rop.FINISH, [i1], None, descr=BasicFinalDescr(0))
+ ResOperation(rop.GUARD_NOT_FORCED, [], descr=faildescr),
+ ResOperation(rop.FINISH, [op0], descr=BasicFinalDescr(0))
]
ops[-2].setfailargs([])
looptoken = JitCellToken()
@@ -3136,15 +3137,16 @@
]:
use_alt_errno = saveerr & rffi.RFFI_ALT_ERRNO
faildescr = BasicFailDescr(1)
- inputargs = [BoxInt() for i in range(7)]
- i1 = BoxInt()
+ inputargs = [InputArgInt() for i in range(7)]
+ op0 = ResOperation(rop.CALL_RELEASE_GIL_I,
+ [ConstInt(saveerr), ConstInt(func1_adr)]
+ + inputargs,
+ descr=calldescr),
+
ops = [
- ResOperation(rop.CALL_RELEASE_GIL,
- [ConstInt(saveerr), ConstInt(func1_adr)]
- + inputargs, i1,
- descr=calldescr),
- ResOperation(rop.GUARD_NOT_FORCED, [], None, descr=faildescr),
- ResOperation(rop.FINISH, [i1], None, descr=BasicFinalDescr(0))
+ op0,
+ ResOperation(rop.GUARD_NOT_FORCED, [], descr=faildescr),
+ ResOperation(rop.FINISH, [op0], descr=BasicFinalDescr(0))
]
ops[-2].setfailargs([])
looptoken = JitCellToken()
diff --git a/rpython/jit/backend/x86/regalloc.py b/rpython/jit/backend/x86/regalloc.py
--- a/rpython/jit/backend/x86/regalloc.py
+++ b/rpython/jit/backend/x86/regalloc.py
@@ -896,7 +896,7 @@
#
# We need edi as a temporary, but otherwise don't save any more
# register. See comments in _build_malloc_slowpath().
- tmp_box = TempBox()
+ tmp_box = TempVar()
self.rm.force_allocate_reg(tmp_box, selected_reg=edi)
gcmap = self.get_gcmap([eax, edi]) # allocate the gcmap *before*
self.rm.possibly_free_var(tmp_box)
@@ -909,7 +909,7 @@
def consider_call_malloc_nursery_varsize_frame(self, op):
size_box = op.getarg(0)
- assert isinstance(size_box, BoxInt) # we cannot have a const here!
+ assert not isinstance(size_box, Const) # we cannot have a const here!
# sizeloc must be in a register, but we can free it now
# (we take care explicitly of conflicts with eax or edi)
sizeloc = self.rm.make_sure_var_in_reg(size_box)
@@ -917,7 +917,7 @@
# the result will be in eax
self.rm.force_allocate_reg(op, selected_reg=eax)
# we need edi as a temporary
- tmp_box = TempBox()
+ tmp_box = TempVar()
self.rm.force_allocate_reg(tmp_box, selected_reg=edi)
gcmap = self.get_gcmap([eax, edi]) # allocate the gcmap *before*
self.rm.possibly_free_var(tmp_box)
@@ -935,11 +935,11 @@
# for boehm, this function should never be called
arraydescr = op.getdescr()
length_box = op.getarg(2)
- assert isinstance(length_box, BoxInt) # we cannot have a const here!
+ assert not isinstance(length_box, Const) # we cannot have a const here!
# the result will be in eax
self.rm.force_allocate_reg(op, selected_reg=eax)
# we need edi as a temporary
- tmp_box = TempBox()
+ tmp_box = TempVar()
self.rm.force_allocate_reg(tmp_box, selected_reg=edi)
gcmap = self.get_gcmap([eax, edi]) # allocate the gcmap *before*
self.rm.possibly_free_var(tmp_box)
diff --git a/rpython/jit/codewriter/heaptracker.py b/rpython/jit/codewriter/heaptracker.py
--- a/rpython/jit/codewriter/heaptracker.py
+++ b/rpython/jit/codewriter/heaptracker.py
@@ -69,8 +69,9 @@
if not hasattr(cpu, '_cache_gcstruct2vtable'):
cache = {}
cache.update(testing_gcstruct2vtable)
- for rinstance in cpu.rtyper.instance_reprs.values():
- cache[rinstance.lowleveltype.TO] = rinstance.rclass.getvtable()
+ if cpu.rtyper:
+ for rinstance in cpu.rtyper.instance_reprs.values():
+ cache[rinstance.lowleveltype.TO] = rinstance.rclass.getvtable()
cpu._cache_gcstruct2vtable = cache
def set_testing_vtable_for_gcstruct(GCSTRUCT, vtable, name):
More information about the pypy-commit
mailing list