[pypy-commit] pypy optresult: whack at test_resume until it passes
fijal
noreply at buildbot.pypy.org
Fri Jun 5 10:43:39 CEST 2015
Author: Maciej Fijalkowski <fijall at gmail.com>
Branch: optresult
Changeset: r77884:143291527023
Date: 2015-06-05 10:43 +0200
http://bitbucket.org/pypy/pypy/changeset/143291527023/
Log: whack at test_resume until it passes
diff --git a/rpython/jit/metainterp/resume.py b/rpython/jit/metainterp/resume.py
--- a/rpython/jit/metainterp/resume.py
+++ b/rpython/jit/metainterp/resume.py
@@ -513,9 +513,8 @@
num = self._gettagged(box)
fieldnum = self._gettagged(fieldbox)
# the index is limited to 2147483647 (64-bit machines only)
- #if itemindex > 2147483647:
- # raise TagOverflow
- #itemindex = rffi.cast(rffi.INT, itemindex)
+ if itemindex > 2147483647:
+ raise TagOverflow
#
rd_pendingfields[i].lldescr = lldescr
rd_pendingfields[i].num = num
diff --git a/rpython/jit/metainterp/test/test_resume.py b/rpython/jit/metainterp/test/test_resume.py
--- a/rpython/jit/metainterp/test/test_resume.py
+++ b/rpython/jit/metainterp/test/test_resume.py
@@ -2,16 +2,23 @@
import py
import sys
from rpython.rtyper.lltypesystem import lltype, llmemory, rffi
-from rpython.jit.metainterp.resume import *
-from rpython.jit.metainterp.optimizeopt.info import AbstractInfo,\
- AbstractVirtualPtrInfo
-from rpython.jit.metainterp.history import ConstInt
+from rpython.jit.metainterp.resume import ResumeDataVirtualAdder,\
+ AbstractResumeDataReader, get_VirtualCache_class, ResumeDataBoxReader,\
+ tag, TagOverflow, untag, tagged_eq, UNASSIGNED, TAGBOX, TAGVIRTUAL,\
+ tagged_list_eq, AbstractVirtualInfo, NUMBERING, TAGCONST, NULLREF,\
+ ResumeDataDirectReader, TAGINT, REF, VirtualInfo, VStructInfo,\
+ VArrayInfoNotClear, VStrPlainInfo, VStrConcatInfo, VStrSliceInfo,\
+ VUniPlainInfo, VUniConcatInfo, VUniSliceInfo, Snapshot, FrameInfo,\
+ capture_resumedata, ResumeDataLoopMemo, UNASSIGNEDVIRTUAL, INT,\
+ annlowlevel, PENDINGFIELDSP
+from rpython.jit.metainterp.optimizeopt import info
+from rpython.jit.metainterp.history import ConstInt, Const, AbstractDescr
from rpython.jit.metainterp.history import ConstPtr, ConstFloat
from rpython.jit.metainterp.optimizeopt.test.test_util import LLtypeMixin
from rpython.jit.metainterp import executor
from rpython.jit.codewriter import heaptracker, longlong
from rpython.jit.metainterp.resoperation import ResOperation, InputArgInt,\
- InputArgRef, InputArgFloat
+ InputArgRef, rop
from rpython.rlib.debug import debug_start, debug_stop, debug_print,\
have_debug_prints
@@ -27,7 +34,7 @@
class FakeOptimizer(object):
def get_box_replacement(self, op):
while (op.get_forwarded() is not None and
- not isinstance(op.get_forwarded(), AbstractInfo)):
+ not isinstance(op.get_forwarded(), info.AbstractInfo)):
op = op.get_forwarded()
return op
@@ -128,7 +135,7 @@
self.fieldnums = fieldnums
def equals(self, fieldnums):
return self.fieldnums == fieldnums
- class FakeVirtualValue(AbstractVirtualPtrInfo):
+ class FakeVirtualValue(info.AbstractVirtualPtrInfo):
def visitor_dispatch_virtual_type(self, *args):
return FakeVInfo()
modifier = ResumeDataVirtualAdder(None, None, None, None)
@@ -933,7 +940,7 @@
env3 = [c3, b3, b1, c3]
snap3 = Snapshot(snap, env3)
- class FakeVirtualInfo(AbstractInfo):
+ class FakeVirtualInfo(info.AbstractInfo):
def __init__(self, virt):
self.virt = virt
@@ -1148,18 +1155,11 @@
storage = make_storage(b1s, b2s, b3s)
memo = ResumeDataLoopMemo(FakeMetaInterpStaticData())
b1_2 = InputArgInt()
- modifier = ResumeDataVirtualAdder(storage, storage, memo)
- class FakeValue(object):
+ modifier = ResumeDataVirtualAdder(FakeOptimizer(), storage, storage, memo)
- def is_virtual(self):
- return False
-
- def get_key_box(self):
- return b1_2
-
- val = FakeValue()
- values = {b1s: val, b2s: val}
- liveboxes = modifier.finish(FakeOptimizer(values))
+ b1s.set_forwarded(b1_2)
+ b2s.set_forwarded(b1_2)
+ liveboxes = modifier.finish(FakeOptimizer())
assert storage.rd_snapshot is None
b1t, b3t = [InputArgInt(11), InputArgInt(33)]
newboxes = _resume_remap(liveboxes, [b1_2, b3s], b1t, b3t)
@@ -1179,8 +1179,8 @@
b1s = ConstInt(111)
storage = make_storage(b1s, b2s, b3s)
memo = ResumeDataLoopMemo(FakeMetaInterpStaticData())
- modifier = ResumeDataVirtualAdder(storage, storage, memo)
- liveboxes = modifier.finish(FakeOptimizer({}))
+ modifier = ResumeDataVirtualAdder(FakeOptimizer(), storage, storage, memo)
+ liveboxes = modifier.finish(FakeOptimizer())
b2t, b3t = [InputArgRef(demo55o), InputArgInt(33)]
newboxes = _resume_remap(liveboxes, [b2s, b3s], b2t, b3t)
metainterp = MyMetaInterp()
@@ -1196,34 +1196,34 @@
def test_virtual_adder_make_virtual():
- b2s, b3s, b4s, b5s = [InputArgRef(), InputArgInt(3), InputArgRef(), InputArgRef()]
+ b2s, b3s, b4s, b5s = [InputArgRef(), InputArgInt(3), InputArgRef(),
+ InputArgRef()]
c1s = ConstInt(111)
storage = Storage()
memo = ResumeDataLoopMemo(FakeMetaInterpStaticData())
- modifier = ResumeDataVirtualAdder(storage, storage, memo)
+ modifier = ResumeDataVirtualAdder(FakeOptimizer(), storage, storage, memo)
modifier.liveboxes_from_env = {}
modifier.liveboxes = {}
modifier.vfieldboxes = {}
- v4 = VirtualValue(fakeoptimizer, ConstAddr(LLtypeMixin.node_vtable_adr2,
- LLtypeMixin.cpu), b4s)
- v4.setfield(LLtypeMixin.nextdescr, OptValue(b2s))
- v4.setfield(LLtypeMixin.valuedescr, OptValue(b3s))
- v4.setfield(LLtypeMixin.otherdescr, OptValue(b5s))
- v4._cached_sorted_fields = [LLtypeMixin.nextdescr, LLtypeMixin.valuedescr,
- LLtypeMixin.otherdescr]
- v2 = VirtualValue(fakeoptimizer, ConstAddr(LLtypeMixin.node_vtable_adr,
- LLtypeMixin.cpu), b2s)
- v2.setfield(LLtypeMixin.nextdescr, v4)
- v2.setfield(LLtypeMixin.valuedescr, OptValue(c1s))
- v2._cached_sorted_fields = [LLtypeMixin.nextdescr, LLtypeMixin.valuedescr]
+ vdescr = LLtypeMixin.nodesize2
+ v4 = info.InstancePtrInfo(ConstAddr(LLtypeMixin.node_vtable_adr2,
+ LLtypeMixin.cpu), vdescr)
+ b4s.set_forwarded(v4)
+ v4.setfield(LLtypeMixin.nextdescr, b2s)
+ v4.setfield(LLtypeMixin.valuedescr, b3s)
+ v4.setfield(LLtypeMixin.otherdescr, b5s)
+ v2 = info.InstancePtrInfo(ConstAddr(LLtypeMixin.node_vtable_adr,
+ LLtypeMixin.cpu), LLtypeMixin.nodesize)
+ v2.setfield(LLtypeMixin.nextdescr, b4s)
+ v2.setfield(LLtypeMixin.valuedescr, c1s)
+ b2s.set_forwarded(v2)
- modifier.register_virtual_fields(b2s, [b4s, c1s])
- modifier.register_virtual_fields(b4s, [b2s, b3s, b5s])
- values = {b2s: v2, b4s: v4}
+ modifier.register_virtual_fields(b2s, [c1s, None, None, b4s])
+ modifier.register_virtual_fields(b4s, [b3s, None, None, b2s, b5s])
liveboxes = []
- modifier._number_virtuals(liveboxes, FakeOptimizer(values), 0)
+ modifier._number_virtuals(liveboxes, FakeOptimizer(), 0)
storage.rd_consts = memo.consts[:]
storage.rd_numb = None
# resume
@@ -1241,12 +1241,8 @@
b2t = reader.decode_ref(modifier._gettagged(b2s))
b4t = reader.decode_ref(modifier._gettagged(b4s))
trace = metainterp.trace
- b2new = (rop.NEW_WITH_VTABLE, [ConstAddr(LLtypeMixin.node_vtable_adr,
- LLtypeMixin.cpu)],
- b2t.getref_base(), None)
- b4new = (rop.NEW_WITH_VTABLE, [ConstAddr(LLtypeMixin.node_vtable_adr2,
- LLtypeMixin.cpu)],
- b4t.getref_base(), None)
+ b2new = (rop.NEW_WITH_VTABLE, [], b2t.getref_base(), LLtypeMixin.nodesize)
+ b4new = (rop.NEW_WITH_VTABLE, [], b4t.getref_base(), LLtypeMixin.nodesize2)
b2set = [(rop.SETFIELD_GC, [b2t, b4t], None, LLtypeMixin.nextdescr),
(rop.SETFIELD_GC, [b2t, c1s], None, LLtypeMixin.valuedescr)]
b4set = [(rop.SETFIELD_GC, [b4t, b2t], None, LLtypeMixin.nextdescr),
@@ -1257,6 +1253,7 @@
# check that we get the operations in 'expected', in a possibly different
# order.
assert len(trace) == len(expected)
+ orig = trace[:]
with CompareableConsts():
for x in trace:
assert x in expected
@@ -1283,17 +1280,17 @@
c1s = ConstInt(111)
storage = Storage()
memo = ResumeDataLoopMemo(FakeMetaInterpStaticData())
- modifier = ResumeDataVirtualAdder(storage, storage, memo)
+ modifier = ResumeDataVirtualAdder(FakeOptimizer(), storage, storage, memo)
modifier.liveboxes_from_env = {}
modifier.liveboxes = {}
modifier.vfieldboxes = {}
- v2 = VArrayValue(LLtypeMixin.arraydescr, None, 2, b2s)
+ v2 = info.ArrayPtrInfo(vdescr=LLtypeMixin.arraydescr, size=2)
+ b2s.set_forwarded(v2)
v2._items = [b4s, c1s]
modifier.register_virtual_fields(b2s, [b4s, c1s])
liveboxes = []
- values = {b2s: v2}
- modifier._number_virtuals(liveboxes, FakeOptimizer(values), 0)
+ modifier._number_virtuals(liveboxes, FakeOptimizer(), 0)
dump_storage(storage, liveboxes)
storage.rd_consts = memo.consts[:]
storage.rd_numb = None
@@ -1332,16 +1329,17 @@
c1s = ConstInt(111)
storage = Storage()
memo = ResumeDataLoopMemo(FakeMetaInterpStaticData())
- modifier = ResumeDataVirtualAdder(storage, storage, memo)
+ modifier = ResumeDataVirtualAdder(FakeOptimizer(), storage, storage, memo)
modifier.liveboxes_from_env = {}
modifier.liveboxes = {}
modifier.vfieldboxes = {}
- v2 = VStructValue(fakeoptimizer, LLtypeMixin.ssize, b2s)
- v2.setfield(LLtypeMixin.adescr, OptValue(c1s))
- v2.setfield(LLtypeMixin.bdescr, OptValue(b4s))
+ v2 = info.StructPtrInfo(LLtypeMixin.ssize)
+ b2s.set_forwarded(v2)
+ v2.setfield(LLtypeMixin.adescr, c1s)
+ v2.setfield(LLtypeMixin.bdescr, b4s)
modifier.register_virtual_fields(b2s, [c1s, b4s])
liveboxes = []
- modifier._number_virtuals(liveboxes, FakeOptimizer({b2s: v2}), 0)
+ modifier._number_virtuals(liveboxes, FakeOptimizer(), 0)
dump_storage(storage, liveboxes)
storage.rd_consts = memo.consts[:]
storage.rd_numb = None
@@ -1380,16 +1378,14 @@
modifier.liveboxes = {}
modifier.vfieldboxes = {}
- v2 = OptValue(b2s)
- v4 = OptValue(b4s)
modifier.register_box(b2s)
modifier.register_box(b4s)
- values = {b4s: v4, b2s: v2}
liveboxes = []
- modifier._number_virtuals(liveboxes, FakeOptimizer(values), 0)
+ modifier._number_virtuals(liveboxes, FakeOptimizer(), 0)
assert liveboxes == [b2s, b4s] or liveboxes == [b4s, b2s]
- modifier._add_pending_fields([(LLtypeMixin.nextdescr, b2s, b4s, -1)])
+ modifier._add_pending_fields(FakeOptimizer(), [
+ ResOperation(rop.SETFIELD_GC, [b2s, b4s], descr=LLtypeMixin.nextdescr)])
storage.rd_consts = memo.consts[:]
storage.rd_numb = None
# resume
@@ -1418,14 +1414,18 @@
modifier._add_pending_fields(None, [])
assert not storage.rd_pendingfields
#
- class FieldDescr(object):
+ class FieldDescr(AbstractDescr):
pass
field_a = FieldDescr()
storage = Storage()
modifier = ResumeDataVirtualAdder(None, storage, storage, None)
- modifier.liveboxes_from_env = {42: rffi.cast(rffi.SHORT, 1042),
- 61: rffi.cast(rffi.SHORT, 1061)}
- modifier._add_pending_fields(FakeOptimizer(), [(field_a, 42, 61, -1)])
+ a = InputArgInt()
+ b = InputArgInt()
+ modifier.liveboxes_from_env = {a: rffi.cast(rffi.SHORT, 1042),
+ b: rffi.cast(rffi.SHORT, 1061)}
+ modifier._add_pending_fields(FakeOptimizer(), [
+ ResOperation(rop.SETFIELD_GC, [a, b],
+ descr=field_a)])
pf = storage.rd_pendingfields
assert len(pf) == 1
assert (annlowlevel.cast_base_ptr_to_instance(FieldDescr, pf[0].lldescr)
@@ -1436,13 +1436,20 @@
#
array_a = FieldDescr()
storage = Storage()
- modifier = ResumeDataVirtualAdder(storage, storage, None)
- modifier.liveboxes_from_env = {42: rffi.cast(rffi.SHORT, 1042),
- 61: rffi.cast(rffi.SHORT, 1061),
- 62: rffi.cast(rffi.SHORT, 1062),
- 63: rffi.cast(rffi.SHORT, 1063)}
- modifier._add_pending_fields([(array_a, 42, 61, 0),
- (array_a, 42, 62, 2147483647)])
+ modifier = ResumeDataVirtualAdder(None, storage, storage, None)
+ a42 = InputArgInt()
+ a61 = InputArgInt()
+ a62 = InputArgInt()
+ a63 = InputArgInt()
+ modifier.liveboxes_from_env = {a42: rffi.cast(rffi.SHORT, 1042),
+ a61: rffi.cast(rffi.SHORT, 1061),
+ a62: rffi.cast(rffi.SHORT, 1062),
+ a63: rffi.cast(rffi.SHORT, 1063)}
+ modifier._add_pending_fields(FakeOptimizer(), [
+ ResOperation(rop.SETARRAYITEM_GC, [a42, ConstInt(0), a61],
+ descr=array_a),
+ ResOperation(rop.SETARRAYITEM_GC, [a42, ConstInt(2147483647), a62],
+ descr=array_a)])
pf = storage.rd_pendingfields
assert len(pf) == 2
assert (annlowlevel.cast_base_ptr_to_instance(FieldDescr, pf[0].lldescr)
@@ -1456,8 +1463,10 @@
assert rffi.cast(lltype.Signed, pf[1].fieldnum) == 1062
assert rffi.cast(lltype.Signed, pf[1].itemindex) == 2147483647
#
- py.test.raises(TagOverflow, modifier._add_pending_fields,
- [(array_a, 42, 63, 2147483648)])
+ py.test.raises(TagOverflow, modifier._add_pending_fields, FakeOptimizer(),
+ [ResOperation(rop.SETARRAYITEM_GC,
+ [a42, ConstInt(2147483648), a63],
+ descr=array_a)])
def test_resume_reader_fields_and_arrayitems():
class ResumeReader(AbstractResumeDataReader):
More information about the pypy-commit
mailing list