Ejemplo n.º 1
0
    def test_ll_arraycopy(self):
        h = HeapCache()
        box1 = RefFrontendOp(1)
        box2 = RefFrontendOp(2)
        box3 = RefFrontendOp(3)
        box4 = RefFrontendOp(4)
        box5 = RefFrontendOp(5)
        lengthbox1 = IntFrontendOp(11)
        lengthbox2 = IntFrontendOp(12)
        h.new_array(box1, lengthbox1)
        h.setarrayitem(box1, index1, box2, descr1)
        h.new_array(box2, lengthbox1)
        # Just need the destination box for this call
        h.invalidate_caches(
            rop.CALL_N,
            arraycopydescr1,
            [None, box5, box2, index1, index1, index1]
        )
        assert h.getarrayitem(box1, index1, descr1) is box2
        h.invalidate_caches(
            rop.CALL_N,
            arraycopydescr1,
            [None, box5, box3, index1, index1, index1]
        )
        assert h.getarrayitem(box1, index1, descr1) is box2

        h.setarrayitem(box4, index1, box2, descr1)
        assert h.getarrayitem(box4, index1, descr1) is box2
        h.invalidate_caches(
            rop.CALL_N,
            arraycopydescr1,
            [None, box3, box5, index1, index1, index2]
        )
        assert h.getarrayitem(box4, index1, descr1) is None
 def test_ll_arraycopy_differing_descrs(self):
     h = HeapCache()
     h.setarrayitem(box1, index1, box2, descr2)
     assert h.getarrayitem(box1, index1, descr2) is box2
     h.new_array(box2, lengthbox2)
     h.invalidate_caches(rop.CALL, arraycopydescr1, [None, box3, box2, index1, index1, index2])
     assert h.getarrayitem(box1, index1, descr2) is box2
Ejemplo n.º 3
0
    def test_ll_arraycopy(self):
        h = HeapCache()
        box1 = RefFrontendOp(1)
        box2 = RefFrontendOp(2)
        box3 = RefFrontendOp(3)
        box4 = RefFrontendOp(4)
        box5 = RefFrontendOp(5)
        lengthbox1 = IntFrontendOp(11)
        lengthbox2 = IntFrontendOp(12)
        h.new_array(box1, lengthbox1)
        h.setarrayitem(box1, index1, box2, descr1)
        h.new_array(box2, lengthbox1)
        # Just need the destination box for this call
        h.invalidate_caches(
            rop.CALL_N,
            arraycopydescr1,
            [None, box5, box2, index1, index1, index1]
        )
        assert h.getarrayitem(box1, index1, descr1) is box2
        h.invalidate_caches(
            rop.CALL_N,
            arraycopydescr1,
            [None, box5, box3, index1, index1, index1]
        )
        assert h.getarrayitem(box1, index1, descr1) is box2

        h.setarrayitem(box4, index1, box2, descr1)
        assert h.getarrayitem(box4, index1, descr1) is box2
        h.invalidate_caches(
            rop.CALL_N,
            arraycopydescr1,
            [None, box3, box5, index1, index1, index2]
        )
        assert h.getarrayitem(box4, index1, descr1) is None
Ejemplo n.º 4
0
    def test_ll_arraycopy(self):
        h = HeapCache()
        h.new_array(box1, lengthbox1)
        h.setarrayitem(box1, index1, box2, descr1)
        h.new_array(box2, lengthbox1)
        # Just need the destination box for this call
        h.invalidate_caches(
            rop.CALL,
            arraycopydescr1,
            [None, box5, box2, index1, index1, index1]
        )
        assert h.getarrayitem(box1, index1, descr1) is box2
        h.invalidate_caches(
            rop.CALL,
            arraycopydescr1,
            [None, box5, box3, index1, index1, index1]
        )
        assert h.getarrayitem(box1, index1, descr1) is box2

        h.setarrayitem(box4, index1, box2, descr1)
        assert h.getarrayitem(box4, index1, descr1) is box2
        h.invalidate_caches(
            rop.CALL,
            arraycopydescr1,
            [None, box3, box5, index1, index1, index2]
        )
        assert h.getarrayitem(box4, index1, descr1) is None
 def test_call_doesnt_invalidate_unescaped_array_boxes(self):
     h = HeapCache()
     h.new_array(box1, lengthbox1)
     assert h.is_unescaped(box1)
     h.setarrayitem(box1, index1, box3, descr1)
     h.invalidate_caches(rop.CALL, FakeCallDescr(FakeEffectinfo.EF_CAN_RAISE), [])
     assert h.getarrayitem(box1, index1, descr1) is box3
Ejemplo n.º 6
0
    def test_ll_arraycopy(self):
        h = HeapCache()
        h.new_array(box1, lengthbox1)
        h.setarrayitem(box1, index1, box2, descr1)
        h.new_array(box2, lengthbox1)
        # Just need the destination box for this call
        h.invalidate_caches(
            rop.CALL,
            arraycopydescr1,
            [None, box5, box2, index1, index1, index1]
        )
        assert h.getarrayitem(box1, index1, descr1) is box2
        h.invalidate_caches(
            rop.CALL,
            arraycopydescr1,
            [None, box5, box3, index1, index1, index1]
        )
        assert h.getarrayitem(box1, index1, descr1) is box2

        h.setarrayitem(box4, index1, box2, descr1)
        assert h.getarrayitem(box4, index1, descr1) is box2
        h.invalidate_caches(
            rop.CALL,
            arraycopydescr1,
            [None, box3, box5, index1, index1, index2]
        )
        assert h.getarrayitem(box4, index1, descr1) is None
Ejemplo n.º 7
0
    def test_ll_arraycopy(self):
        h = HeapCache()
        h.new_array(box1, lengthbox1)
        h.setarrayitem(box1, index1, box2, descr1)
        h.new_array(box2, lengthbox1)
        # Just need the destination box for this call
        h.invalidate_caches(
            rop.CALL,
            FakeCallDescr(FakeEffectinfo.EF_CANNOT_RAISE, FakeEffectinfo.OS_ARRAYCOPY, write_descrs_arrays=[descr1]),
            [None, box5, box2, index1, index1, index1]
        )
        assert h.getarrayitem(box1, index1, descr1) is box2
        h.invalidate_caches(
            rop.CALL,
            FakeCallDescr(FakeEffectinfo.EF_CANNOT_RAISE, FakeEffectinfo.OS_ARRAYCOPY, write_descrs_arrays=[descr1]),
            [None, box5, box3, index1, index1, index1]
        )
        assert h.getarrayitem(box1, index1, descr1) is box2

        h.setarrayitem(box4, index1, box2, descr1)
        assert h.getarrayitem(box4, index1, descr1) is box2
        h.invalidate_caches(
            rop.CALL,
            FakeCallDescr(FakeEffectinfo.EF_CANNOT_RAISE, FakeEffectinfo.OS_ARRAYCOPY, write_descrs_arrays=[descr1]),
            [None, box3, box5, index1, index1, index2]
        )
        assert h.getarrayitem(box4, index1, descr1) is None
Ejemplo n.º 8
0
    def test_ll_arraycopy(self):
        h = HeapCache()
        h.new_array(box1, lengthbox1)
        h.setarrayitem(box1, index1, box2, descr1)
        h.new_array(box2, lengthbox1)
        # Just need the destination box for this call
        h.invalidate_caches(
            rop.CALL,
            FakeCallDescr(FakeEffectinfo.EF_CANNOT_RAISE, FakeEffectinfo.OS_ARRAYCOPY, write_descrs_arrays=[descr1]),
            [None, box5, box2, index1, index1, index1]
        )
        assert h.getarrayitem(box1, index1, descr1) is box2
        h.invalidate_caches(
            rop.CALL,
            FakeCallDescr(FakeEffectinfo.EF_CANNOT_RAISE, FakeEffectinfo.OS_ARRAYCOPY, write_descrs_arrays=[descr1]),
            [None, box5, box3, index1, index1, index1]
        )
        assert h.getarrayitem(box1, index1, descr1) is box2

        h.setarrayitem(box4, index1, box2, descr1)
        assert h.getarrayitem(box4, index1, descr1) is box2
        h.invalidate_caches(
            rop.CALL,
            FakeCallDescr(FakeEffectinfo.EF_CANNOT_RAISE, FakeEffectinfo.OS_ARRAYCOPY, write_descrs_arrays=[descr1]),
            [None, box3, box5, index1, index1, index2]
        )
        assert h.getarrayitem(box4, index1, descr1) is None
Ejemplo n.º 9
0
    def test_invalidate_cache(self):
        h = HeapCache()
        box1 = RefFrontendOp(1)
        box2 = RefFrontendOp(2)
        box4 = RefFrontendOp(4)
        h.setfield(box1, box2, descr1)
        h.setarrayitem(box1, index1, box2, descr1)
        h.setarrayitem(box1, index2, box4, descr1)
        h.invalidate_caches(rop.INT_ADD, None, [])
        h.invalidate_caches(rop.INT_ADD_OVF, None, [])
        h.invalidate_caches(rop.SETFIELD_RAW, None, [])
        h.invalidate_caches(rop.SETARRAYITEM_RAW, None, [])
        assert h.getfield(box1, descr1) is box2
        assert h.getarrayitem(box1, index1, descr1) is box2
        assert h.getarrayitem(box1, index2, descr1) is box4

        h.invalidate_caches(
            rop.CALL_N, FakeCallDescr(FakeEffectinfo.EF_ELIDABLE_CANNOT_RAISE), [])
        assert h.getfield(box1, descr1) is box2
        assert h.getarrayitem(box1, index1, descr1) is box2
        assert h.getarrayitem(box1, index2, descr1) is box4

        h.invalidate_caches(rop.GUARD_TRUE, None, [])
        assert h.getfield(box1, descr1) is box2
        assert h.getarrayitem(box1, index1, descr1) is box2
        assert h.getarrayitem(box1, index2, descr1) is box4

        h.invalidate_caches(
            rop.CALL_LOOPINVARIANT_N, FakeCallDescr(FakeEffectinfo.EF_LOOPINVARIANT), [])

        h.invalidate_caches(
            rop.CALL_N, FakeCallDescr(FakeEffectinfo.EF_RANDOM_EFFECTS), [])
        assert h.getfield(box1, descr1) is None
        assert h.getarrayitem(box1, index1, descr1) is None
        assert h.getarrayitem(box1, index2, descr1) is None
Ejemplo n.º 10
0
    def test_invalidate_cache(self):
        h = HeapCache()
        h.setfield(box1, box2, descr1)
        h.setarrayitem(box1, index1, box2, descr1)
        h.setarrayitem(box1, index2, box4, descr1)
        h.invalidate_caches(rop.INT_ADD, None, [])
        h.invalidate_caches(rop.INT_ADD_OVF, None, [])
        h.invalidate_caches(rop.SETFIELD_RAW, None, [])
        h.invalidate_caches(rop.SETARRAYITEM_RAW, None, [])
        assert h.getfield(box1, descr1) is box2
        assert h.getarrayitem(box1, index1, descr1) is box2
        assert h.getarrayitem(box1, index2, descr1) is box4

        h.invalidate_caches(
            rop.CALL, FakeCallDescr(FakeEffectinfo.EF_ELIDABLE_CANNOT_RAISE), [])
        assert h.getfield(box1, descr1) is box2
        assert h.getarrayitem(box1, index1, descr1) is box2
        assert h.getarrayitem(box1, index2, descr1) is box4

        h.invalidate_caches(rop.GUARD_TRUE, None, [])
        assert h.getfield(box1, descr1) is box2
        assert h.getarrayitem(box1, index1, descr1) is box2
        assert h.getarrayitem(box1, index2, descr1) is box4

        h.invalidate_caches(
            rop.CALL_LOOPINVARIANT, FakeCallDescr(FakeEffectinfo.EF_LOOPINVARIANT), [])

        h.invalidate_caches(
            rop.CALL, FakeCallDescr(FakeEffectinfo.EF_RANDOM_EFFECTS), [])
        assert h.getfield(box1, descr1) is None
        assert h.getarrayitem(box1, index1, descr1) is None
        assert h.getarrayitem(box1, index2, descr1) is None
Ejemplo n.º 11
0
 def test_ll_arraycopy_result_propogated(self):
     h = HeapCache()
     box1 = RefFrontendOp(1)
     box2 = RefFrontendOp(2)
     box3 = RefFrontendOp(3)
     h.setarrayitem(box1, index1, box2, descr1)
     h.invalidate_caches(rop.CALL_N, arraycopydescr1, [None, box1, box3, index1, index1, index2])
     assert h.getarrayitem(box3, index1, descr1) is box2
Ejemplo n.º 12
0
 def test_ll_arraycopy_differing_descrs_nonconst_index(self):
     h = HeapCache()
     h.setarrayitem(box1, index1, box2, descr2)
     assert h.getarrayitem(box1, index1, descr2) is box2
     h.invalidate_caches(rop.CALL, arraycopydescr1,
                         [None, box3, box2, index1, index1,
                          BoxInt()])
     assert h.getarrayitem(box1, index1, descr2) is box2
Ejemplo n.º 13
0
 def test_ll_arraycopy_differing_descrs(self):
     h = HeapCache()
     h.setarrayitem(box1, index1, box2, descr2)
     assert h.getarrayitem(box1, index1, descr2) is box2
     h.new_array(box2, lengthbox2)
     h.invalidate_caches(rop.CALL, arraycopydescr1,
                         [None, box3, box2, index1, index1, index2])
     assert h.getarrayitem(box1, index1, descr2) is box2
Ejemplo n.º 14
0
 def test_call_doesnt_invalidate_unescaped_array_boxes(self):
     h = HeapCache()
     h.new_array(box1, lengthbox1)
     assert h.is_unescaped(box1)
     h.setarrayitem(box1, index1, box3, descr1)
     h.invalidate_caches(rop.CALL,
                         FakeCallDescr(FakeEffectinfo.EF_CAN_RAISE), [])
     assert h.getarrayitem(box1, index1, descr1) is box3
Ejemplo n.º 15
0
 def test_ll_arraycopy_result_propogated(self):
     h = HeapCache()
     h.setarrayitem(box1, index1, box2, descr1)
     h.invalidate_caches(
         rop.CALL,
         arraycopydescr1,
         [None, box1, box3, index1, index1, index2]
     )
     assert h.getarrayitem(box3, index1, descr1) is box2
Ejemplo n.º 16
0
 def test_ll_arraycopy_result_propogated(self):
     h = HeapCache()
     h.setarrayitem(box1, index1, box2, descr1)
     h.invalidate_caches(
         rop.CALL,
         FakeCallDescr(FakeEffectinfo.EF_CANNOT_RAISE, FakeEffectinfo.OS_ARRAYCOPY, write_descrs_arrays=[descr1]),
         [None, box1, box3, index1, index1, index2]
     )
     assert h.getarrayitem(box3, index1, descr1) is box2
Ejemplo n.º 17
0
 def test_ll_arraycopy_dest_new(self):
     h = HeapCache()
     h.new_array(box1, lengthbox1)
     h.setarrayitem(box3, index1, box4, descr1)
     h.invalidate_caches(
         rop.CALL,
         FakeCallDescr(FakeEffectinfo.EF_CANNOT_RAISE, FakeEffectinfo.OS_ARRAYCOPY, write_descrs_arrays=[descr1]),
         [None, box2, box1, index1, index1, index2]
     )
Ejemplo n.º 18
0
 def test_ll_arraycopy_dest_new(self):
     h = HeapCache()
     h.new_array(box1, lengthbox1)
     h.setarrayitem(box3, index1, box4, descr1)
     h.invalidate_caches(
         rop.CALL,
         FakeCallDescr(FakeEffectinfo.EF_CANNOT_RAISE, FakeEffectinfo.OS_ARRAYCOPY, write_descrs_arrays=[descr1]),
         [None, box2, box1, index1, index1, index2]
     )
Ejemplo n.º 19
0
 def test_ll_arraycopy_result_propogated(self):
     h = HeapCache()
     box1 = RefFrontendOp(1)
     box2 = RefFrontendOp(2)
     box3 = RefFrontendOp(3)
     h.setarrayitem(box1, index1, box2, descr1)
     h.invalidate_caches(rop.CALL_N, arraycopydescr1,
                         [None, box1, box3, index1, index1, index2])
     assert h.getarrayitem(box3, index1, descr1) is box2
Ejemplo n.º 20
0
 def test_ll_arraycopy_result_propogated(self):
     h = HeapCache()
     h.setarrayitem(box1, index1, box2, descr1)
     h.invalidate_caches(
         rop.CALL,
         arraycopydescr1,
         [None, box1, box3, index1, index1, index2]
     )
     assert h.getarrayitem(box3, index1, descr1) is box2
Ejemplo n.º 21
0
 def test_ll_arraycopy_dest_new(self):
     h = HeapCache()
     h.new_array(box1, lengthbox1)
     h.setarrayitem(box3, index1, box4, descr1)
     h.invalidate_caches(
         rop.CALL,
         arraycopydescr1,
         [None, box2, box1, index1, index1, index2]
     )
Ejemplo n.º 22
0
 def test_ll_arraycopy_result_propogated(self):
     h = HeapCache()
     h.setarrayitem(box1, index1, box2, descr1)
     h.invalidate_caches(
         rop.CALL,
         FakeCallDescr(FakeEffectinfo.EF_CANNOT_RAISE, FakeEffectinfo.OS_ARRAYCOPY, write_descrs_arrays=[descr1]),
         [None, box1, box3, index1, index1, index2]
     )
     assert h.getarrayitem(box3, index1, descr1) is box2
Ejemplo n.º 23
0
 def test_ll_arraycopy_dest_new(self):
     h = HeapCache()
     h.new_array(box1, lengthbox1)
     h.setarrayitem(box3, index1, box4, descr1)
     h.invalidate_caches(
         rop.CALL,
         arraycopydescr1,
         [None, box2, box1, index1, index1, index2]
     )
Ejemplo n.º 24
0
 def test_heapcache_array_nonconst_index(self):
     h = HeapCache()
     h.setarrayitem(box1, index1, box2, descr1)
     h.setarrayitem(box1, index2, box4, descr1)
     assert h.getarrayitem(box1, index1, descr1) is box2
     assert h.getarrayitem(box1, index2, descr1) is box4
     h.setarrayitem(box1, box2, box3, descr1)
     assert h.getarrayitem(box1, index1, descr1) is None
     assert h.getarrayitem(box1, index2, descr1) is None
Ejemplo n.º 25
0
 def test_ll_arraycopy_differing_descrs_nonconst_index(self):
     h = HeapCache()
     box1 = RefFrontendOp(1)
     box2 = RefFrontendOp(2)
     box3 = RefFrontendOp(3)
     h.setarrayitem(box1, index1, box2, descr2)
     assert h.getarrayitem(box1, index1, descr2) is box2
     h.invalidate_caches(rop.CALL_N, arraycopydescr1, [None, box3, box2, index1, index1, InputArgInt()])
     assert h.getarrayitem(box1, index1, descr2) is box2
Ejemplo n.º 26
0
 def test_heapcache_array_nonconst_index(self):
     h = HeapCache()
     h.setarrayitem(box1, index1, box2, descr1)
     h.setarrayitem(box1, index2, box4, descr1)
     assert h.getarrayitem(box1, index1, descr1) is box2
     assert h.getarrayitem(box1, index2, descr1) is box4
     h.setarrayitem(box1, box2, box3, descr1)
     assert h.getarrayitem(box1, index1, descr1) is None
     assert h.getarrayitem(box1, index2, descr1) is None
Ejemplo n.º 27
0
 def test_ll_arraycopy_dest_new(self):
     h = HeapCache()
     box1 = RefFrontendOp(1)
     box2 = RefFrontendOp(2)
     box3 = RefFrontendOp(3)
     box4 = RefFrontendOp(4)
     lengthbox1 = IntFrontendOp(11)
     h.new_array(box1, lengthbox1)
     h.setarrayitem(box3, index1, box4, descr1)
     h.invalidate_caches(rop.CALL_N, arraycopydescr1, [None, box2, box1, index1, index1, index2])
Ejemplo n.º 28
0
 def test_ll_arraycopy_differing_descrs_nonconst_index(self):
     h = HeapCache()
     h.setarrayitem(box1, index1, box2, descr2)
     assert h.getarrayitem(box1, index1, descr2) is box2
     h.invalidate_caches(
         rop.CALL,
         arraycopydescr1,
         [None, box3, box2, index1, index1, BoxInt()]
     )
     assert h.getarrayitem(box1, index1, descr2) is box2
Ejemplo n.º 29
0
 def test_ll_arraycopy_differing_descrs(self):
     h = HeapCache()
     h.setarrayitem(box1, index1, box2, descr1)
     assert h.getarrayitem(box1, index1, descr1) is box2
     h.new_array(box2, lengthbox2)
     h.invalidate_caches(
         rop.CALL,
         FakeCallDescr(FakeEffectinfo.EF_CANNOT_RAISE, FakeEffectinfo.OS_ARRAYCOPY, write_descrs_arrays=[descr2]),
         [None, box3, box2, index1, index1, index2]
     )
     assert h.getarrayitem(box1, index1, descr1) is box2
Ejemplo n.º 30
0
 def test_ll_arraycopy_differing_descrs(self):
     h = HeapCache()
     h.setarrayitem(box1, index1, box2, descr1)
     assert h.getarrayitem(box1, index1, descr1) is box2
     h.new_array(box2, lengthbox2)
     h.invalidate_caches(
         rop.CALL,
         FakeCallDescr(FakeEffectinfo.EF_CANNOT_RAISE, FakeEffectinfo.OS_ARRAYCOPY, write_descrs_arrays=[descr2]),
         [None, box3, box2, index1, index1, index2]
     )
     assert h.getarrayitem(box1, index1, descr1) is box2
Ejemplo n.º 31
0
 def test_ll_arraycopy_differing_descrs(self):
     h = HeapCache()
     box1 = RefFrontendOp(1)
     box2 = RefFrontendOp(2)
     box3 = RefFrontendOp(3)
     lengthbox2 = IntFrontendOp(12)
     h.setarrayitem(box1, index1, box2, descr2)
     assert h.getarrayitem(box1, index1, descr2) is box2
     h.new_array(box2, lengthbox2)
     h.invalidate_caches(rop.CALL_N, arraycopydescr1, [None, box3, box2, index1, index1, index2])
     assert h.getarrayitem(box1, index1, descr2) is box2
Ejemplo n.º 32
0
 def test_ll_arraycopy_dest_new(self):
     h = HeapCache()
     box1 = RefFrontendOp(1)
     box2 = RefFrontendOp(2)
     box3 = RefFrontendOp(3)
     box4 = RefFrontendOp(4)
     lengthbox1 = IntFrontendOp(11)
     h.new_array(box1, lengthbox1)
     h.setarrayitem(box3, index1, box4, descr1)
     h.invalidate_caches(rop.CALL_N, arraycopydescr1,
                         [None, box2, box1, index1, index1, index2])
Ejemplo n.º 33
0
 def test_ll_arraycopy_differing_descrs_nonconst_index(self):
     h = HeapCache()
     box1 = RefFrontendOp(1)
     box2 = RefFrontendOp(2)
     box3 = RefFrontendOp(3)
     h.setarrayitem(box1, index1, box2, descr2)
     assert h.getarrayitem(box1, index1, descr2) is box2
     h.invalidate_caches(rop.CALL_N, arraycopydescr1,
                         [None, box3, box2, index1, index1,
                          InputArgInt()])
     assert h.getarrayitem(box1, index1, descr2) is box2
Ejemplo n.º 34
0
 def test_ll_arraycopy_differing_descrs(self):
     h = HeapCache()
     box1 = RefFrontendOp(1)
     box2 = RefFrontendOp(2)
     box3 = RefFrontendOp(3)
     lengthbox2 = IntFrontendOp(12)
     h.setarrayitem(box1, index1, box2, descr2)
     assert h.getarrayitem(box1, index1, descr2) is box2
     h.new_array(box2, lengthbox2)
     h.invalidate_caches(rop.CALL_N, arraycopydescr1,
                         [None, box3, box2, index1, index1, index2])
     assert h.getarrayitem(box1, index1, descr2) is box2
Ejemplo n.º 35
0
 def test_heapcache_array_nonconst_index(self):
     h = HeapCache()
     box1 = RefFrontendOp(1)
     box2 = RefFrontendOp(2)
     box3 = RefFrontendOp(3)
     box4 = RefFrontendOp(4)
     h.setarrayitem(box1, index1, box2, descr1)
     h.setarrayitem(box1, index2, box4, descr1)
     assert h.getarrayitem(box1, index1, descr1) is box2
     assert h.getarrayitem(box1, index2, descr1) is box4
     h.setarrayitem(box1, box2, box3, descr1)
     assert h.getarrayitem(box1, index1, descr1) is None
     assert h.getarrayitem(box1, index2, descr1) is None
Ejemplo n.º 36
0
 def test_heapcache_array_nonconst_index(self):
     h = HeapCache()
     box1 = RefFrontendOp(1)
     box2 = RefFrontendOp(2)
     box3 = RefFrontendOp(3)
     box4 = RefFrontendOp(4)
     h.setarrayitem(box1, index1, box2, descr1)
     h.setarrayitem(box1, index2, box4, descr1)
     assert h.getarrayitem(box1, index1, descr1) is box2
     assert h.getarrayitem(box1, index2, descr1) is box4
     h.setarrayitem(box1, box2, box3, descr1)
     assert h.getarrayitem(box1, index1, descr1) is None
     assert h.getarrayitem(box1, index2, descr1) is None
Ejemplo n.º 37
0
    def test_heapcache_arrays(self):
        h = HeapCache()
        box1 = RefFrontendOp(1)
        box2 = RefFrontendOp(2)
        box3 = RefFrontendOp(3)
        box4 = RefFrontendOp(4)
        assert h.getarrayitem(box1, index1, descr1) is None
        assert h.getarrayitem(box1, index1, descr2) is None
        assert h.getarrayitem(box1, index2, descr1) is None
        assert h.getarrayitem(box1, index2, descr2) is None

        h.setarrayitem(box1, index1, box2, descr1)
        assert h.getarrayitem(box1, index1, descr1) is box2
        assert h.getarrayitem(box1, index1, descr2) is None
        assert h.getarrayitem(box1, index2, descr1) is None
        assert h.getarrayitem(box1, index2, descr2) is None
        h.setarrayitem(box1, index2, box4, descr1)
        assert h.getarrayitem(box1, index1, descr1) is box2
        assert h.getarrayitem(box1, index1, descr2) is None
        assert h.getarrayitem(box1, index2, descr1) is box4
        assert h.getarrayitem(box1, index2, descr2) is None

        h.setarrayitem(box1, index1, box3, descr2)
        assert h.getarrayitem(box1, index1, descr1) is box2
        assert h.getarrayitem(box1, index1, descr2) is box3
        assert h.getarrayitem(box1, index2, descr1) is box4
        assert h.getarrayitem(box1, index2, descr2) is None

        h.setarrayitem(box1, index1, box3, descr1)
        assert h.getarrayitem(box1, index1, descr1) is box3
        assert h.getarrayitem(box1, index1, descr2) is box3
        assert h.getarrayitem(box1, index2, descr1) is box4
        assert h.getarrayitem(box1, index2, descr2) is None

        h.setarrayitem(box3, index1, box1, descr1)
        assert h.getarrayitem(box3, index1, descr1) is box1
        assert h.getarrayitem(box1, index1, descr1) is None
        assert h.getarrayitem(box1, index1, descr2) is box3
        assert h.getarrayitem(box1, index2, descr1) is box4
        assert h.getarrayitem(box1, index2, descr2) is None

        h.reset()
        assert h.getarrayitem(box1, index1, descr1) is None
        assert h.getarrayitem(box1, index1, descr2) is None
        assert h.getarrayitem(box3, index1, descr1) is None
Ejemplo n.º 38
0
    def test_heapcache_arrays(self):
        h = HeapCache()
        box1 = RefFrontendOp(1)
        box2 = RefFrontendOp(2)
        box3 = RefFrontendOp(3)
        box4 = RefFrontendOp(4)
        assert h.getarrayitem(box1, index1, descr1) is None
        assert h.getarrayitem(box1, index1, descr2) is None
        assert h.getarrayitem(box1, index2, descr1) is None
        assert h.getarrayitem(box1, index2, descr2) is None

        h.setarrayitem(box1, index1, box2, descr1)
        assert h.getarrayitem(box1, index1, descr1) is box2
        assert h.getarrayitem(box1, index1, descr2) is None
        assert h.getarrayitem(box1, index2, descr1) is None
        assert h.getarrayitem(box1, index2, descr2) is None
        h.setarrayitem(box1, index2, box4, descr1)
        assert h.getarrayitem(box1, index1, descr1) is box2
        assert h.getarrayitem(box1, index1, descr2) is None
        assert h.getarrayitem(box1, index2, descr1) is box4
        assert h.getarrayitem(box1, index2, descr2) is None

        h.setarrayitem(box1, index1, box3, descr2)
        assert h.getarrayitem(box1, index1, descr1) is box2
        assert h.getarrayitem(box1, index1, descr2) is box3
        assert h.getarrayitem(box1, index2, descr1) is box4
        assert h.getarrayitem(box1, index2, descr2) is None

        h.setarrayitem(box1, index1, box3, descr1)
        assert h.getarrayitem(box1, index1, descr1) is box3
        assert h.getarrayitem(box1, index1, descr2) is box3
        assert h.getarrayitem(box1, index2, descr1) is box4
        assert h.getarrayitem(box1, index2, descr2) is None

        h.setarrayitem(box3, index1, box1, descr1)
        assert h.getarrayitem(box3, index1, descr1) is box1
        assert h.getarrayitem(box1, index1, descr1) is None
        assert h.getarrayitem(box1, index1, descr2) is box3
        assert h.getarrayitem(box1, index2, descr1) is box4
        assert h.getarrayitem(box1, index2, descr2) is None

        h.reset()
        assert h.getarrayitem(box1, index1, descr1) is None
        assert h.getarrayitem(box1, index1, descr2) is None
        assert h.getarrayitem(box3, index1, descr1) is None
Ejemplo n.º 39
0
    def test_replace_box_with_const_in_array(self):
        h = HeapCache()
        box1 = RefFrontendOp(1)
        lengthbox2 = IntFrontendOp(2)
        lengthbox2.setint(10)
        h.arraylen_now_known(box1, lengthbox2)
        assert h.arraylen(box1) is lengthbox2
        c10 = ConstInt(10)
        h.replace_box(lengthbox2, c10)
        assert c10.same_constant(h.arraylen(box1))

        box2 = IntFrontendOp(2)
        box2.setint(12)
        h.setarrayitem(box1, index2, box2, descr1)
        assert h.getarrayitem(box1, index2, descr1) is box2
        c12 = ConstInt(12)
        h.replace_box(box2, c12)
        assert c12.same_constant(h.getarrayitem(box1, index2, descr1))
Ejemplo n.º 40
0
    def test_replace_box_with_const_in_array(self):
        h = HeapCache()
        box1 = RefFrontendOp(1)
        lengthbox2 = IntFrontendOp(2)
        lengthbox2.setint(10)
        h.arraylen_now_known(box1, lengthbox2)
        assert h.arraylen(box1) is lengthbox2
        c10 = ConstInt(10)
        h.replace_box(lengthbox2, c10)
        assert c10.same_constant(h.arraylen(box1))

        box2 = IntFrontendOp(2)
        box2.setint(12)
        h.setarrayitem(box1, index2, box2, descr1)
        assert h.getarrayitem(box1, index2, descr1) is box2
        c12 = ConstInt(12)
        h.replace_box(box2, c12)
        assert c12.same_constant(h.getarrayitem(box1, index2, descr1))
Ejemplo n.º 41
0
    def test_heapcache_arrays(self):
        h = HeapCache()
        assert h.getarrayitem(box1, index1, descr1) is None
        assert h.getarrayitem(box1, index1, descr2) is None
        assert h.getarrayitem(box1, index2, descr1) is None
        assert h.getarrayitem(box1, index2, descr2) is None

        h.setarrayitem(box1, index1, box2, descr1)
        assert h.getarrayitem(box1, index1, descr1) is box2
        assert h.getarrayitem(box1, index1, descr2) is None
        assert h.getarrayitem(box1, index2, descr1) is None
        assert h.getarrayitem(box1, index2, descr2) is None
        h.setarrayitem(box1, index2, box4, descr1)
        assert h.getarrayitem(box1, index1, descr1) is box2
        assert h.getarrayitem(box1, index1, descr2) is None
        assert h.getarrayitem(box1, index2, descr1) is box4
        assert h.getarrayitem(box1, index2, descr2) is None

        h.setarrayitem(box1, index1, box3, descr2)
        assert h.getarrayitem(box1, index1, descr1) is box2
        assert h.getarrayitem(box1, index1, descr2) is box3
        assert h.getarrayitem(box1, index2, descr1) is box4
        assert h.getarrayitem(box1, index2, descr2) is None

        h.setarrayitem(box1, index1, box3, descr1)
        assert h.getarrayitem(box1, index1, descr1) is box3
        assert h.getarrayitem(box1, index1, descr2) is box3
        assert h.getarrayitem(box1, index2, descr1) is box4
        assert h.getarrayitem(box1, index2, descr2) is None

        h.setarrayitem(box3, index1, box1, descr1)
        assert h.getarrayitem(box3, index1, descr1) is box1
        assert h.getarrayitem(box1, index1, descr1) is None
        assert h.getarrayitem(box1, index1, descr2) is box3
        assert h.getarrayitem(box1, index2, descr1) is box4
        assert h.getarrayitem(box1, index2, descr2) is None

        h.reset()
        assert h.getarrayitem(box1, index1, descr1) is None
        assert h.getarrayitem(box1, index1, descr2) is None
        assert h.getarrayitem(box3, index1, descr1) is None
Ejemplo n.º 42
0
    def test_heapcache_arrays(self):
        h = HeapCache()
        assert h.getarrayitem(box1, index1, descr1) is None
        assert h.getarrayitem(box1, index1, descr2) is None
        assert h.getarrayitem(box1, index2, descr1) is None
        assert h.getarrayitem(box1, index2, descr2) is None

        h.setarrayitem(box1, index1, box2, descr1)
        assert h.getarrayitem(box1, index1, descr1) is box2
        assert h.getarrayitem(box1, index1, descr2) is None
        assert h.getarrayitem(box1, index2, descr1) is None
        assert h.getarrayitem(box1, index2, descr2) is None
        h.setarrayitem(box1, index2, box4, descr1)
        assert h.getarrayitem(box1, index1, descr1) is box2
        assert h.getarrayitem(box1, index1, descr2) is None
        assert h.getarrayitem(box1, index2, descr1) is box4
        assert h.getarrayitem(box1, index2, descr2) is None

        h.setarrayitem(box1, index1, box3, descr2)
        assert h.getarrayitem(box1, index1, descr1) is box2
        assert h.getarrayitem(box1, index1, descr2) is box3
        assert h.getarrayitem(box1, index2, descr1) is box4
        assert h.getarrayitem(box1, index2, descr2) is None

        h.setarrayitem(box1, index1, box3, descr1)
        assert h.getarrayitem(box1, index1, descr1) is box3
        assert h.getarrayitem(box1, index1, descr2) is box3
        assert h.getarrayitem(box1, index2, descr1) is box4
        assert h.getarrayitem(box1, index2, descr2) is None

        h.setarrayitem(box3, index1, box1, descr1)
        assert h.getarrayitem(box3, index1, descr1) is box1
        assert h.getarrayitem(box1, index1, descr1) is None
        assert h.getarrayitem(box1, index1, descr2) is box3
        assert h.getarrayitem(box1, index2, descr1) is box4
        assert h.getarrayitem(box1, index2, descr2) is None

        h.reset()
        assert h.getarrayitem(box1, index1, descr1) is None
        assert h.getarrayitem(box1, index1, descr2) is None
        assert h.getarrayitem(box3, index1, descr1) is None
Ejemplo n.º 43
0
    def test_replace_box_array(self):
        h = HeapCache()
        h.setarrayitem(box1, index1, box2, descr1)
        h.setarrayitem(box1, index1, box3, descr2)
        h.arraylen_now_known(box1, lengthbox1)
        h.setarrayitem(box2, index2, box1, descr1)
        h.setarrayitem(box3, index2, box1, descr2)
        h.setarrayitem(box2, index2, box3, descr3)
        h.replace_box(box1, box4)
        assert h.arraylen(box4) is lengthbox1
        assert h.getarrayitem(box4, index1, descr1) is box2
        assert h.getarrayitem(box4, index1, descr2) is box3
        assert h.getarrayitem(box2, index2, descr1) is box4
        assert h.getarrayitem(box3, index2, descr2) is box4
        assert h.getarrayitem(box2, index2, descr3) is box3

        h.replace_box(lengthbox1, lengthbox2)
        assert h.arraylen(box4) is lengthbox2
Ejemplo n.º 44
0
    def test_replace_box_array(self):
        h = HeapCache()
        h.setarrayitem(box1, index1, box2, descr1)
        h.setarrayitem(box1, index1, box3, descr2)
        h.arraylen_now_known(box1, lengthbox1)
        h.setarrayitem(box2, index2, box1, descr1)
        h.setarrayitem(box3, index2, box1, descr2)
        h.setarrayitem(box2, index2, box3, descr3)
        h.replace_box(box1, box4)
        assert h.arraylen(box4) is lengthbox1
        assert h.getarrayitem(box4, index1, descr1) is box2
        assert h.getarrayitem(box4, index1, descr2) is box3
        assert h.getarrayitem(box2, index2, descr1) is box4
        assert h.getarrayitem(box3, index2, descr2) is box4
        assert h.getarrayitem(box2, index2, descr3) is box3

        h.replace_box(lengthbox1, lengthbox2)
        assert h.arraylen(box4) is lengthbox2
Ejemplo n.º 45
0
    def test_replace_box_array(self):
        py.test.skip("replacing a box with another box: not supported any more")
        h = HeapCache()
        h.setarrayitem(box1, index1, box2, descr1)
        h.setarrayitem(box1, index1, box3, descr2)
        h.arraylen_now_known(box1, lengthbox1)
        h.setarrayitem(box2, index2, box1, descr1)
        h.setarrayitem(box3, index2, box1, descr2)
        h.setarrayitem(box2, index2, box3, descr3)
        h.replace_box(box1, box4)
        assert h.arraylen(box4) is lengthbox1
        assert h.getarrayitem(box4, index1, descr1) is box2
        assert h.getarrayitem(box4, index1, descr2) is box3
        assert h.getarrayitem(box2, index2, descr1) is box4
        assert h.getarrayitem(box3, index2, descr2) is box4
        assert h.getarrayitem(box2, index2, descr3) is box3

        h.replace_box(lengthbox1, lengthbox2)
        assert h.arraylen(box4) is lengthbox2
Ejemplo n.º 46
0
    def test_replace_box_array(self):
        py.test.skip("replacing a box with another box: not supported any more")
        h = HeapCache()
        h.setarrayitem(box1, index1, box2, descr1)
        h.setarrayitem(box1, index1, box3, descr2)
        h.arraylen_now_known(box1, lengthbox1)
        h.setarrayitem(box2, index2, box1, descr1)
        h.setarrayitem(box3, index2, box1, descr2)
        h.setarrayitem(box2, index2, box3, descr3)
        h.replace_box(box1, box4)
        assert h.arraylen(box4) is lengthbox1
        assert h.getarrayitem(box4, index1, descr1) is box2
        assert h.getarrayitem(box4, index1, descr2) is box3
        assert h.getarrayitem(box2, index2, descr1) is box4
        assert h.getarrayitem(box3, index2, descr2) is box4
        assert h.getarrayitem(box2, index2, descr3) is box3

        h.replace_box(lengthbox1, lengthbox2)
        assert h.arraylen(box4) is lengthbox2
Ejemplo n.º 47
0
    def test_heapcache_write_fields_multiple_array(self):
        h = HeapCache()
        h.setarrayitem(box1, index1, box2, descr1)
        assert h.getarrayitem(box1, index1, descr1) is box2
        h.setarrayitem(box3, index1, box4, descr1)
        assert h.getarrayitem(box3, index1, descr1) is box4
        assert h.getarrayitem(box1, index1, descr1) is None # box1 and box3 can alias

        h = HeapCache()
        h.new(box1)
        h.setarrayitem(box1, index1, box2, descr1)
        assert h.getarrayitem(box1, index1, descr1) is box2
        h.setarrayitem(box3, index1, box4, descr1)
        assert h.getarrayitem(box3, index1, descr1) is box4
        assert h.getarrayitem(box1, index1, descr1) is None # box1 and box3 can alias

        h = HeapCache()
        h.new(box1)
        h.new(box3)
        h.setarrayitem(box1, index1, box2, descr1)
        assert h.getarrayitem(box1, index1, descr1) is box2
        h.setarrayitem(box3, index1, box4, descr1)
        assert h.getarrayitem(box3, index1, descr1) is box4
        assert h.getarrayitem(box1, index1, descr1) is box2 # box1 and box3 cannot alias
        h.setarrayitem(box1, index1, box3, descr1)
        assert h.getarrayitem(box3, index1, descr1) is box4
        assert h.getarrayitem(box1, index1, descr1) is box3 # box1 and box3 cannot alias
Ejemplo n.º 48
0
    def test_heapcache_write_fields_multiple_array(self):
        h = HeapCache()
        box1 = RefFrontendOp(1)
        box2 = RefFrontendOp(2)
        box3 = RefFrontendOp(3)
        box4 = RefFrontendOp(4)
        h.setarrayitem(box1, index1, box2, descr1)
        assert h.getarrayitem(box1, index1, descr1) is box2
        h.setarrayitem(box3, index1, box4, descr1)
        assert h.getarrayitem(box3, index1, descr1) is box4
        assert h.getarrayitem(box1, index1, descr1) is None # box1 and box3 can alias

        h = HeapCache()
        box1 = RefFrontendOp(1)
        box2 = RefFrontendOp(2)
        box3 = RefFrontendOp(3)
        box4 = RefFrontendOp(4)
        h.new(box1)
        h.setarrayitem(box1, index1, box2, descr1)
        assert h.getarrayitem(box1, index1, descr1) is box2
        h.setarrayitem(box3, index1, box4, descr1)
        assert h.getarrayitem(box3, index1, descr1) is box4
        assert h.getarrayitem(box1, index1, descr1) is None # box1 and box3 can alias

        h = HeapCache()
        box1 = RefFrontendOp(1)
        box2 = RefFrontendOp(2)
        box3 = RefFrontendOp(3)
        box4 = RefFrontendOp(4)
        h.new(box1)
        h.new(box3)
        h.setarrayitem(box1, index1, box2, descr1)
        assert h.getarrayitem(box1, index1, descr1) is box2
        h.setarrayitem(box3, index1, box4, descr1)
        assert h.getarrayitem(box3, index1, descr1) is box4
        assert h.getarrayitem(box1, index1, descr1) is box2 # box1 and box3 cannot alias
        h.setarrayitem(box1, index1, box3, descr1)
        assert h.getarrayitem(box3, index1, descr1) is box4
        assert h.getarrayitem(box1, index1, descr1) is box3 # box1 and box3 cannot alias