Author: Armin Rigo <ar...@tunes.org> Branch: heapcache-refactor Changeset: r83100:669fec3af2a8 Date: 2016-03-17 11:38 +0100 http://bitbucket.org/pypy/pypy/changeset/669fec3af2a8/
Log: test_known_nullity diff --git a/rpython/jit/metainterp/heapcache.py b/rpython/jit/metainterp/heapcache.py --- a/rpython/jit/metainterp/heapcache.py +++ b/rpython/jit/metainterp/heapcache.py @@ -7,6 +7,7 @@ # RefFrontendOp._heapc_flags: HF_LIKELY_VIRTUAL = 0x01 HF_KNOWN_CLASS = 0x02 +HF_KNOWN_NULLITY = 0x04 @always_inline def add_flags(ref_frontend_op, flags): @@ -32,7 +33,6 @@ self.reset_keep_likely_virtual() def reset_keep_likely_virtual(self): - self.known_nullity = False # did we see the allocation during tracing? self.seen_allocation = False self.is_unescaped = False @@ -340,13 +340,14 @@ add_flags(box, HF_KNOWN_CLASS) def is_nullity_known(self, box): - value = self.getvalue(box, create=False) - if value: - return value.known_nullity - return False + return (isinstance(box, RefFrontendOp) and + self.test_head_version(box) and + test_flags(box, HF_KNOWN_NULLITY)) def nullity_now_known(self, box): - self.getvalue(box).known_nullity = True + assert isinstance(box, RefFrontendOp) + self.update_version(box) + add_flags(box, HF_KNOWN_NULLITY) def is_nonstandard_virtualizable(self, box): value = self.getvalue(box, create=False) diff --git a/rpython/jit/metainterp/test/test_heapcache.py b/rpython/jit/metainterp/test/test_heapcache.py --- a/rpython/jit/metainterp/test/test_heapcache.py +++ b/rpython/jit/metainterp/test/test_heapcache.py @@ -74,15 +74,17 @@ def test_known_nullity(self): h = HeapCache() - assert not h.is_nullity_known(1) - assert not h.is_nullity_known(2) - h.nullity_now_known(1) - assert h.is_nullity_known(1) - assert not h.is_nullity_known(2) + box1 = RefFrontendOp(1) + box2 = RefFrontendOp(2) + assert not h.is_nullity_known(box1) + assert not h.is_nullity_known(box2) + h.nullity_now_known(box1) + assert h.is_nullity_known(box1) + assert not h.is_nullity_known(box2) h.reset() - assert not h.is_nullity_known(1) - assert not h.is_nullity_known(2) + assert not h.is_nullity_known(box1) + assert not h.is_nullity_known(box2) def test_nonstandard_virtualizable(self): _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit