1*9f3f6d7bSStella Laurenzo# RUN: %PYTHON %s 2*9f3f6d7bSStella Laurenzo# Standalone sanity check of context life-cycle. 3*9f3f6d7bSStella Laurenzoimport gc 4*9f3f6d7bSStella Laurenzoimport mlir.ir 5*9f3f6d7bSStella Laurenzo 6*9f3f6d7bSStella Laurenzoassert mlir.ir.Context._get_live_count() == 0 7*9f3f6d7bSStella Laurenzo 8*9f3f6d7bSStella Laurenzo# Create first context. 9*9f3f6d7bSStella Laurenzoprint("CREATE C1") 10*9f3f6d7bSStella Laurenzoc1 = mlir.ir.Context() 11*9f3f6d7bSStella Laurenzoassert mlir.ir.Context._get_live_count() == 1 12*9f3f6d7bSStella Laurenzoc1_repr = repr(c1) 13*9f3f6d7bSStella Laurenzoprint("C1 = ", c1_repr) 14*9f3f6d7bSStella Laurenzo 15*9f3f6d7bSStella Laurenzoprint("GETTING AGAIN...") 16*9f3f6d7bSStella Laurenzoc2 = c1._get_context_again() 17*9f3f6d7bSStella Laurenzoc2_repr = repr(c2) 18*9f3f6d7bSStella Laurenzoassert mlir.ir.Context._get_live_count() == 1 19*9f3f6d7bSStella Laurenzoassert c1_repr == c2_repr 20*9f3f6d7bSStella Laurenzo 21*9f3f6d7bSStella Laurenzoprint("C2 =", c2) 22*9f3f6d7bSStella Laurenzo 23*9f3f6d7bSStella Laurenzo# Make sure new contexts on constructor. 24*9f3f6d7bSStella Laurenzoprint("CREATE C3") 25*9f3f6d7bSStella Laurenzoc3 = mlir.ir.Context() 26*9f3f6d7bSStella Laurenzoassert mlir.ir.Context._get_live_count() == 2 27*9f3f6d7bSStella Laurenzoc3_repr = repr(c3) 28*9f3f6d7bSStella Laurenzoprint("C3 =", c3) 29*9f3f6d7bSStella Laurenzoassert c3_repr != c1_repr 30*9f3f6d7bSStella Laurenzoprint("FREE C3") 31*9f3f6d7bSStella Laurenzoc3 = None 32*9f3f6d7bSStella Laurenzogc.collect() 33*9f3f6d7bSStella Laurenzoassert mlir.ir.Context._get_live_count() == 1 34*9f3f6d7bSStella Laurenzo 35*9f3f6d7bSStella Laurenzoprint("Free C1") 36*9f3f6d7bSStella Laurenzoc1 = None 37*9f3f6d7bSStella Laurenzogc.collect() 38*9f3f6d7bSStella Laurenzoassert mlir.ir.Context._get_live_count() == 1 39*9f3f6d7bSStella Laurenzoprint("Free C2") 40*9f3f6d7bSStella Laurenzoc2 = None 41*9f3f6d7bSStella Laurenzogc.collect() 42*9f3f6d7bSStella Laurenzoassert mlir.ir.Context._get_live_count() == 0 43*9f3f6d7bSStella Laurenzo 44*9f3f6d7bSStella Laurenzo# Create a context, get its capsule and create from capsule. 45*9f3f6d7bSStella Laurenzoc4 = mlir.ir.Context() 46*9f3f6d7bSStella Laurenzoc4_capsule = c4._CAPIPtr 47*9f3f6d7bSStella Laurenzoassert '"mlir.ir.Context._CAPIPtr"' in repr(c4_capsule) 48*9f3f6d7bSStella Laurenzoc5 = mlir.ir.Context._CAPICreate(c4_capsule) 49*9f3f6d7bSStella Laurenzoassert c4 is c5 50