xref: /llvm-project/mlir/test/python/ir/context_lifecycle.py (revision 78bd124649ece163d3a26b33608bdbe518d8ff76)
1# RUN: %PYTHON %s
2# Standalone sanity check of context life-cycle.
3import gc
4import mlir.ir
5
6assert mlir.ir.Context._get_live_count() == 0
7
8# Create first context.
9print("CREATE C1")
10c1 = mlir.ir.Context()
11assert mlir.ir.Context._get_live_count() == 1
12c1_repr = repr(c1)
13print("C1 = ", c1_repr)
14
15print("GETTING AGAIN...")
16c2 = c1._get_context_again()
17c2_repr = repr(c2)
18assert mlir.ir.Context._get_live_count() == 1
19assert c1_repr == c2_repr
20
21print("C2 =", c2)
22
23# Make sure new contexts on constructor.
24print("CREATE C3")
25c3 = mlir.ir.Context()
26assert mlir.ir.Context._get_live_count() == 2
27c3_repr = repr(c3)
28print("C3 =", c3)
29assert c3_repr != c1_repr
30print("FREE C3")
31c3 = None
32gc.collect()
33assert mlir.ir.Context._get_live_count() == 1
34
35print("Free C1")
36c1 = None
37gc.collect()
38assert mlir.ir.Context._get_live_count() == 1
39print("Free C2")
40c2 = None
41gc.collect()
42assert mlir.ir.Context._get_live_count() == 0
43
44# Create a context, get its capsule and create from capsule.
45c4 = mlir.ir.Context()
46c4_capsule = c4._CAPIPtr
47assert '"mlir.ir.Context._CAPIPtr"' in repr(c4_capsule)
48c5 = mlir.ir.Context._CAPICreate(c4_capsule)
49assert c4 is c5
50