3
from .Visitor cimport CythonTransform, TreeVisitor
5
cdef class ControlBlock:
6
cdef public set children
7
cdef public set parents
8
cdef public set positions
11
cdef public set bounded
14
cdef public object i_input
15
cdef public object i_output
16
cdef public object i_gen
17
cdef public object i_kill
18
cdef public object i_state
20
cpdef bint empty(self)
22
cpdef add_child(self, block)
24
cdef class ExitBlock(ControlBlock):
25
cpdef bint empty(self)
27
cdef class NameAssignment:
28
cdef public bint is_arg
29
cdef public bint is_deletion
30
cdef public object lhs
31
cdef public object rhs
32
cdef public object entry
33
cdef public object pos
35
cdef public object bit
36
cdef public object inferred_type
37
cdef public object rhs_scope
39
cdef class AssignmentList:
40
cdef public object bit
41
cdef public object mask
42
cdef public list stats
44
cdef class AssignmentCollector(TreeVisitor):
48
cdef class ControlFlow:
49
cdef public set blocks
50
cdef public set entries
51
cdef public list loops
52
cdef public list exceptions
54
cdef public ControlBlock entry_point
55
cdef public ExitBlock exit_point
56
cdef public ControlBlock block
58
cdef public dict assmts
60
cdef public Py_ssize_t in_try_block
62
cpdef newblock(self, ControlBlock parent=*)
63
cpdef nextblock(self, ControlBlock parent=*)
64
cpdef bint is_tracked(self, entry)
65
cpdef bint is_statically_assigned(self, entry)
66
cpdef mark_position(self, node)
67
cpdef mark_assignment(self, lhs, rhs, entry, rhs_scope=*)
68
cpdef mark_argument(self, lhs, rhs, entry)
69
cpdef mark_deletion(self, node, entry)
70
cpdef mark_reference(self, node, entry)
72
cpdef initialize(self)
73
cpdef set map_one(self, istate, entry)
74
cdef reaching_definitions(self)
76
cdef class Uninitialized:
82
cdef class MessageCollection:
86
cdef class ControlFlowAnalysis(CythonTransform):
88
cdef object constant_folder
90
cdef list stack # a stack of (env, flow) tuples
93
cdef object object_expr
94
cdef bint in_inplace_assignment
96
cpdef mark_assignment(self, lhs, rhs=*, rhs_scope=*)
97
cpdef mark_position(self, node)