Index: third_party/cython/src/Cython/Compiler/FlowControl.pxd |
diff --git a/third_party/cython/src/Cython/Compiler/FlowControl.pxd b/third_party/cython/src/Cython/Compiler/FlowControl.pxd |
new file mode 100644 |
index 0000000000000000000000000000000000000000..fa47853db9ddc850b11a21dd9ab39bb50c00298b |
--- /dev/null |
+++ b/third_party/cython/src/Cython/Compiler/FlowControl.pxd |
@@ -0,0 +1,105 @@ |
+cimport cython |
+ |
+from Cython.Compiler.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 |
+ cdef public dict input |
+ cdef public dict output |
+ |
+ # Big integer it 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 |
+ |
+@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 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) |