Ejemplo n.º 1
0
 def test_unescaped_array(self):
     h = HeapCache()
     h.new_array(box1, lengthbox1)
     assert h.is_unescaped(box1)
     h.invalidate_caches(rop.SETARRAYITEM_GC, None, [box1, index1, box2])
     assert h.is_unescaped(box1)
     h.invalidate_caches(rop.SETARRAYITEM_GC, None, [box2, index1, box1])
     assert not h.is_unescaped(box1)
Ejemplo n.º 2
0
 def test_unescaped(self):
     h = HeapCache()
     assert not h.is_unescaped(box1)
     h.new(box2)
     assert h.is_unescaped(box2)
     h.invalidate_caches(rop.SETFIELD_GC, None, [box2, box1])
     assert h.is_unescaped(box2)
     h.invalidate_caches(rop.SETFIELD_GC, None, [box1, box2])
     assert not h.is_unescaped(box2)
Ejemplo n.º 3
0
 def test_unescaped(self):
     h = HeapCache()
     assert not h.is_unescaped(box1)
     h.new(box2)
     assert h.is_unescaped(box2)
     h.invalidate_caches(rop.SETFIELD_GC, None, [box2, box1])
     assert h.is_unescaped(box2)
     h.invalidate_caches(rop.SETFIELD_GC, None, [box1, box2])
     assert not h.is_unescaped(box2)
Ejemplo n.º 4
0
 def test_unescaped_testing(self):
     h = HeapCache()
     h.new(box1)
     h.new(box2)
     assert h.is_unescaped(box1)
     assert h.is_unescaped(box2)
     # Putting a virtual inside of another virtual doesn't escape it.
     h.invalidate_caches(rop.SETFIELD_GC, None, [box1, box2])
     assert h.is_unescaped(box2)
     # Reading a field from a virtual doesn't escape it.
     h.invalidate_caches(rop.GETFIELD_GC, None, [box1])
     assert h.is_unescaped(box1)
     # Escaping a virtual transitively escapes anything inside of it.
     assert not h.is_unescaped(box3)
     h.invalidate_caches(rop.SETFIELD_GC, None, [box3, box1])
     assert not h.is_unescaped(box1)
     assert not h.is_unescaped(box2)
Ejemplo n.º 5
0
 def test_unescaped_testing(self):
     h = HeapCache()
     h.new(box1)
     h.new(box2)
     assert h.is_unescaped(box1)
     assert h.is_unescaped(box2)
     # Putting a virtual inside of another virtual doesn't escape it.
     h.invalidate_caches(rop.SETFIELD_GC, None, [box1, box2])
     assert h.is_unescaped(box2)
     # Reading a field from a virtual doesn't escape it.
     h.invalidate_caches(rop.GETFIELD_GC, None, [box1])
     assert h.is_unescaped(box1)
     # Escaping a virtual transitively escapes anything inside of it.
     assert not h.is_unescaped(box3)
     h.invalidate_caches(rop.SETFIELD_GC, None, [box3, box1])
     assert not h.is_unescaped(box1)
     assert not h.is_unescaped(box2)
Ejemplo n.º 6
0
    def test_unescaped_array(self):
        h = HeapCache()
        h.new_array(box1, lengthbox1)
        assert h.is_unescaped(box1)
        h.invalidate_caches(rop.SETARRAYITEM_GC, None, [box1, index1, box2])
        assert h.is_unescaped(box1)
        h.invalidate_caches(rop.SETARRAYITEM_GC, None, [box2, index1, box1])
        assert not h.is_unescaped(box1)

        h = HeapCache()
        h.new_array(box1, lengthbox1)
        h.new(box2)
        assert h.is_unescaped(box1)
        assert h.is_unescaped(box2)
        h.invalidate_caches(rop.SETARRAYITEM_GC, None, [box1, lengthbox2, box2])
        assert h.is_unescaped(box1)
        assert h.is_unescaped(box2)
        h.invalidate_caches(
            rop.CALL, FakeCallDescr(FakeEffektinfo.EF_RANDOM_EFFECTS), [box1]
        )
        assert not h.is_unescaped(box1)
        assert not h.is_unescaped(box2)
Ejemplo n.º 7
0
    def test_unescaped_array(self):
        h = HeapCache()
        h.new_array(box1, lengthbox1)
        assert h.is_unescaped(box1)
        h.invalidate_caches(rop.SETARRAYITEM_GC, None, [box1, index1, box2])
        assert h.is_unescaped(box1)
        h.invalidate_caches(rop.SETARRAYITEM_GC, None, [box2, index1, box1])
        assert not h.is_unescaped(box1)

        h = HeapCache()
        h.new_array(box1, lengthbox1)
        h.new(box2)
        assert h.is_unescaped(box1)
        assert h.is_unescaped(box2)
        h.invalidate_caches(rop.SETARRAYITEM_GC, None, [box1, lengthbox2, box2])
        assert h.is_unescaped(box1)
        assert h.is_unescaped(box2)
        h.invalidate_caches(
            rop.CALL, FakeCallDescr(FakeEffektinfo.EF_RANDOM_EFFECTS), [box1]
        )
        assert not h.is_unescaped(box1)
        assert not h.is_unescaped(box2)