Exemplo n.º 1
0
def test_known_classes():
    cls = FakeClass()
    box1 = InputArgRef()
    box1.set_forwarded(InstancePtrInfo(known_class=cls))
    box2 = InputArgRef()
    box3 = InputArgRef()
    optimizer = FakeOptimizer()

    numb_state = NumberingState(4)
    numb_state.append_int(1)  # size of resume block
    liveboxes = [InputArgInt(), box2, box1, box3]

    serialize_optimizer_knowledge(optimizer, numb_state, liveboxes, {}, None)

    assert unpack_numbering(
        numb_state.create_numbering()) == [1, 0b010000, 0, 0, 0]

    rbox1 = InputArgRef()
    rbox2 = InputArgRef()
    rbox3 = InputArgRef()
    after_optimizer = FakeOptimizer(cpu=FakeCPU({rbox1: cls}))
    deserialize_optimizer_knowledge(after_optimizer,
                                    FakeStorage(numb_state.create_numbering()),
                                    [InputArgInt(), rbox2, rbox1, rbox3],
                                    liveboxes)
    assert box1 in after_optimizer.constant_classes
    assert box2 not in after_optimizer.constant_classes
    assert box3 not in after_optimizer.constant_classes
Exemplo n.º 2
0
 def test_virtual(self):
     loop = """
     [p1, p2, i3]
     p0 = new_with_vtable(descr=simpledescr)
     setfield_gc(p0, i3, descr=simplevalue)
     jump(p0, p0, i3)
     """
     es, loop, preamble = self.optimize(loop)
     vs = es.virtual_state
     assert vs.state[0] is vs.state[1]
     assert isinstance(vs.state[0], VirtualStateInfo)
     assert isinstance(vs.state[0].fieldstate[0], NotVirtualStateInfo)
     assert vs.state[0].fieldstate[0].level == LEVEL_UNKNOWN
     assert vs.numnotvirtuals == 1
     p = InputArgRef()
     i = InputArgInt()
     ptrinfo = info.StructPtrInfo(self.nodesize, is_virtual=True)
     ptrinfo._fields = [i]
     p.set_forwarded(ptrinfo)
     vs.make_inputargs([p, p, i], FakeOptimizer())
Exemplo n.º 3
0
 def test_virtual(self):
     loop = """
     [p1, p2, i3]
     p0 = new_with_vtable(descr=simpledescr)
     setfield_gc(p0, i3, descr=simplevalue)
     jump(p0, p0, i3)
     """
     es, loop, preamble = self.optimize(loop)
     vs = es.virtual_state
     assert vs.state[0] is vs.state[1]
     assert isinstance(vs.state[0], VirtualStateInfo)
     assert isinstance(vs.state[0].fieldstate[0], NotVirtualStateInfo)
     assert vs.state[0].fieldstate[0].level == LEVEL_UNKNOWN
     assert vs.numnotvirtuals == 1
     p = InputArgRef()
     i = InputArgInt()
     ptrinfo = info.StructPtrInfo(self.nodesize, is_virtual=True)
     ptrinfo._fields = [i]
     p.set_forwarded(ptrinfo)
     vs.make_inputargs([p, p, i], FakeOptimizer())