def test_various_ops(): from pypy.objspace.flow.model import SpaceOperation, Constant X = lltype.Ptr(lltype.GcStruct('X')) Z = lltype.Ptr(lltype.Struct('Z')) S = lltype.GcStruct('S', ('x', lltype.Signed), ('y', X), ('z', Z)) v1 = varoftype(lltype.Bool) v2 = varoftype(lltype.Signed) f = FinalizerAnalyzer(None) r = f.analyze(SpaceOperation('cast_int_to_bool', [v2], v1)) assert not r v1 = varoftype(lltype.Ptr(S)) v2 = varoftype(lltype.Signed) v3 = varoftype(X) v4 = varoftype(Z) assert not f.analyze( SpaceOperation('bare_setfield', [v1, Constant('x'), v2], None)) assert f.analyze( SpaceOperation('bare_setfield', [v1, Constant('y'), v3], None)) assert not f.analyze( SpaceOperation('bare_setfield', [v1, Constant('z'), v4], None))
def test_various_ops(): from pypy.objspace.flow.model import SpaceOperation, Constant X = lltype.Ptr(lltype.GcStruct('X')) Z = lltype.Ptr(lltype.Struct('Z')) S = lltype.GcStruct('S', ('x', lltype.Signed), ('y', X), ('z', Z)) v1 = varoftype(lltype.Bool) v2 = varoftype(lltype.Signed) f = FinalizerAnalyzer(None) r = f.analyze(SpaceOperation('cast_int_to_bool', [v2], v1)) assert not r v1 = varoftype(lltype.Ptr(S)) v2 = varoftype(lltype.Signed) v3 = varoftype(X) v4 = varoftype(Z) assert not f.analyze(SpaceOperation('bare_setfield', [v1, Constant('x'), v2], None)) assert f.analyze(SpaceOperation('bare_setfield', [v1, Constant('y'), v3], None)) assert not f.analyze(SpaceOperation('bare_setfield', [v1, Constant('z'), v4], None))