aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/tools/cython/Cython/Compiler/FlowControl.pxd
blob: 22eaa105816bc524c1052c25f89d5abbf55430c9 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
from __future__ import absolute_import 
 
cimport cython 
 
from .Visitor cimport CythonTransform, TreeVisitor 
 
cdef class ControlBlock: 
     cdef public set children 
     cdef public set parents 
     cdef public set positions 
     cdef public list stats 
     cdef public dict gen 
     cdef public set bounded 
 
     # Big integer bitsets
     cdef public object i_input 
     cdef public object i_output 
     cdef public object i_gen 
     cdef public object i_kill 
     cdef public object i_state 
 
     cpdef bint empty(self) 
     cpdef detach(self) 
     cpdef add_child(self, block) 
 
cdef class ExitBlock(ControlBlock): 
     cpdef bint empty(self) 
 
cdef class NameAssignment: 
    cdef public bint is_arg 
    cdef public bint is_deletion 
    cdef public object lhs 
    cdef public object rhs 
    cdef public object entry 
    cdef public object pos 
    cdef public set refs 
    cdef public object bit 
    cdef public object inferred_type 
 
cdef class AssignmentList: 
    cdef public object bit 
    cdef public object mask 
    cdef public list stats 
 
cdef class AssignmentCollector(TreeVisitor): 
    cdef list assignments 
 
@cython.final 
cdef class ControlFlow: 
     cdef public set blocks 
     cdef public set entries 
     cdef public list loops 
     cdef public list exceptions 
 
     cdef public ControlBlock entry_point 
     cdef public ExitBlock exit_point 
     cdef public ControlBlock block 
 
     cdef public dict assmts 
 
     cpdef newblock(self, ControlBlock parent=*) 
     cpdef nextblock(self, ControlBlock parent=*) 
     cpdef bint is_tracked(self, entry) 
     cpdef bint is_statically_assigned(self, entry) 
     cpdef mark_position(self, node) 
     cpdef mark_assignment(self, lhs, rhs, entry) 
     cpdef mark_argument(self, lhs, rhs, entry) 
     cpdef mark_deletion(self, node, entry) 
     cpdef mark_reference(self, node, entry) 
 
     @cython.locals(block=ControlBlock, parent=ControlBlock, unreachable=set) 
     cpdef normalize(self) 
 
     @cython.locals(bit=object, assmts=AssignmentList, 
                    block=ControlBlock) 
     cpdef initialize(self) 
 
     @cython.locals(assmts=AssignmentList, assmt=NameAssignment) 
     cpdef set map_one(self, istate, entry) 
 
     @cython.locals(block=ControlBlock, parent=ControlBlock) 
     cdef reaching_definitions(self) 
 
cdef class Uninitialized: 
     pass 
 
cdef class Unknown: 
    pass 
 

cdef class MessageCollection:
    cdef set messages


@cython.locals(dirty=bint, block=ControlBlock, parent=ControlBlock, 
               assmt=NameAssignment) 
cdef check_definitions(ControlFlow flow, dict compiler_directives) 
 
@cython.final 
cdef class ControlFlowAnalysis(CythonTransform): 
    cdef object gv_ctx 
    cdef object constant_folder
    cdef set reductions 
    cdef list env_stack 
    cdef list stack 
    cdef object env 
    cdef ControlFlow flow 
    cdef bint in_inplace_assignment 
 
    cpdef mark_assignment(self, lhs, rhs=*) 
    cpdef mark_position(self, node)