SYMBOL INDEX (148 symbols across 16 files) FILE: examples/edit_distance.py function edit_distance__helper (line 17) | def edit_distance__helper(f, s): function edit_distance__helper (line 38) | def edit_distance__helper(f, s): function edit_distance__helper (line 59) | def edit_distance__helper(f, s): function edit_distance__helper (line 80) | def edit_distance__helper(f, s): function edit_distance__helper (line 101) | def edit_distance__helper(f, s): function edit_distance__helper (line 126) | def edit_distance__helper(f, s): function edit_distance__helper (line 150) | def edit_distance__helper(f, s): function edit_distance__helper (line 190) | def edit_distance__helper(f, s): function edit_distance__helper (line 230) | def edit_distance__helper(f, s): function __fiberfn_edit_distance__helper (line 270) | def __fiberfn_edit_distance__helper(frame): FILE: examples/fib.py function fib (line 17) | def fib(n): function fib (line 35) | def fib(n): function fib (line 53) | def fib(n): function fib (line 71) | def fib(n): function fib (line 89) | def fib(n): function fib (line 110) | def fib(n): function fib (line 131) | def fib(n): function fib (line 164) | def fib(n): function fib (line 197) | def fib(n): function __fiberfn_fib (line 230) | def __fiberfn_fib(frame): FILE: examples/matrix_chain_mult.py function matrix_chain_mult__helper (line 17) | def matrix_chain_mult__helper(i, j): function matrix_chain_mult__helper (line 36) | def matrix_chain_mult__helper(i, j): function matrix_chain_mult__helper (line 62) | def matrix_chain_mult__helper(i, j): function matrix_chain_mult__helper (line 88) | def matrix_chain_mult__helper(i, j): function matrix_chain_mult__helper (line 114) | def matrix_chain_mult__helper(i, j): function matrix_chain_mult__helper (line 142) | def matrix_chain_mult__helper(i, j): function matrix_chain_mult__helper (line 169) | def matrix_chain_mult__helper(i, j): function matrix_chain_mult__helper (line 211) | def matrix_chain_mult__helper(i, j): function matrix_chain_mult__helper (line 253) | def matrix_chain_mult__helper(i, j): function __fiberfn_matrix_chain_mult__helper (line 295) | def __fiberfn_matrix_chain_mult__helper(frame): FILE: examples/sum.py function sum (line 17) | def sum(lst, acc): function sum (line 28) | def sum(lst, acc): function sum (line 39) | def sum(lst, acc): function sum (line 50) | def sum(lst, acc): function sum (line 61) | def sum(lst, acc): function sum (line 73) | def sum(lst, acc): function sum (line 84) | def sum(lst, acc): function sum (line 99) | def sum(lst, acc): function sum (line 114) | def sum(lst, acc): function __fiberfn_sum (line 129) | def __fiberfn_sum(frame): FILE: examples/tree_recursion.py function all_zeroes (line 17) | def all_zeroes(tree): function all_zeroes (line 31) | def all_zeroes(tree): function all_zeroes (line 45) | def all_zeroes(tree): function all_zeroes (line 59) | def all_zeroes(tree): function all_zeroes (line 76) | def all_zeroes(tree): function all_zeroes (line 95) | def all_zeroes(tree): function all_zeroes (line 112) | def all_zeroes(tree): function all_zeroes (line 141) | def all_zeroes(tree): function all_zeroes (line 170) | def all_zeroes(tree): function __fiberfn_all_zeroes (line 199) | def __fiberfn_all_zeroes(frame): FILE: src/expressions.py function promote_call_expressions (line 21) | def promote_call_expressions(expression: ast.AST, fns: Container[str], n... function make_and_if (line 42) | def make_and_if(name: str, expression: ast.AST, body): function make_or_if (line 50) | def make_or_if(name: str, expression: ast.AST, body): function promote_boolean_expression_operands (line 58) | def promote_boolean_expression_operands(expression: ast.AST, name_iter, ... function promote_variable_access (line 90) | def promote_variable_access(expression: ast.AST, name_fn): FILE: src/fiber.py function get_tree (line 27) | def get_tree(fn): function fn_call_names (line 35) | def fn_call_names(stmt: ast.AST, fns: Container[str]): function make_prev_dict (line 42) | def make_prev_dict(block: ast.AST): class CallOp (line 59) | class CallOp: class TailCallOp (line 67) | class TailCallOp: class RetOp (line 74) | class RetOp: function matches_call (line 85) | def matches_call(call: Union[ast.expr, None], fns: Container[str]): function matches_callop (line 91) | def matches_callop(stmt: ast.AST, fns: Container[str]): function matches_tailcallop (line 100) | def matches_tailcallop(stmt: ast.AST, fns: Container[str]): function matches_retop (line 104) | def matches_retop(stmt: ast.AST, fns: Container[str]): function is_pc_assign (line 108) | def is_pc_assign(stmt: ast.AST): function is_tail_call (line 120) | def is_tail_call(stmt: ast.AST): function make_callop_expr (line 125) | def make_callop_expr(variable: ast.Constant, call: ast.Call): function make_tailcallop_expr (line 143) | def make_tailcallop_expr(call: ast.Call): function make_retop_expr (line 160) | def make_retop_expr(value: ast.AST): function make_arguments (line 172) | def make_arguments(): function fix_fn_def (line 184) | def fix_fn_def(fn_tree: ast.FunctionDef, fn): function fiber_locals (line 189) | def fiber_locals(fn_tree: ast.FunctionDef): function insert_jumps (line 195) | def insert_jumps(fn_tree: ast.FunctionDef, prev_dict, fns): function lift_locals_to_frame (line 202) | def lift_locals_to_frame(fn_tree: ast.FunctionDef): function needs_jump (line 208) | def needs_jump(stmt: ast.AST, prev_dict, fns): function compile_tree (line 223) | def compile_tree(tree: ast.AST, fn, local_vars): class FiberMetadata (line 236) | class FiberMetadata: function add_trampoline_returns (line 245) | def add_trampoline_returns(block: ast.AST, fns: Container[str]): function fiber (line 272) | def fiber(fns: Container[str] = None, *, locals, recursive=True): FILE: src/fiber_test.py class TestFiber (line 20) | class TestFiber(unittest.TestCase): method test_fib (line 22) | def test_fib(self): method test_sum (line 54) | def test_sum(self): FILE: src/jumps.py function is_supported_jump_block (line 22) | def is_supported_jump_block(b: ast.AST): function block_has_jump_to (line 26) | def block_has_jump_to(block, jump_to: Callable[[ast.AST], bool]): function has_jump_to (line 30) | def has_jump_to(stmt: ast.AST, jump_to: Callable[[ast.AST], bool]): function partition_stmts (line 34) | def partition_stmts(stmts: Iterable[ast.AST], jump_to: Callable[[ast.AST... function transform_if (line 46) | def transform_if(stmt: ast.If, jump_to: Callable[[ast.AST], bool], next_... function transform_while (line 52) | def transform_while(stmt: ast.While, jump_to: Callable[[ast.AST], bool],... function make_range_test (line 60) | def make_range_test(start_pc, end_pc): function transform_partition (line 77) | def transform_partition(partition, jump_to, next_pc): function insert_jumps (line 97) | def insert_jumps(stmts: Iterable[ast.AST], jump_to: Callable[[ast.AST], ... FILE: src/jumps_test.py class TestInsertJumps (line 21) | class TestInsertJumps(unittest.TestCase): method test_complex (line 23) | def test_complex(self): method test_equivalent (line 90) | def test_equivalent(self): FILE: src/manual.py function editDistance (line 19) | def editDistance(first, second): function editDistanceImpl (line 29) | def editDistanceImpl(first, second, f, s): class Frame (line 45) | class Frame: class CallOp (line 52) | class CallOp: class TailCallOp (line 58) | class TailCallOp: class RetOp (line 63) | class RetOp: function engine (line 67) | def engine(fn, args): function editDistanceIterImpl (line 86) | def editDistanceIterImpl(frame): FILE: src/mappers.py function map_scope (line 22) | def map_scope(scope, fn): function promote_to_temporary_m (line 38) | def promote_to_temporary_m(fns: Container[str], name_iter): function remove_trivial_temporaries_m (line 49) | def remove_trivial_temporaries_m(fn_ast: ast.AST): function for_to_while_m (line 63) | def for_to_while_m(name_iter): function promote_while_cond_m (line 79) | def promote_while_cond_m(name_iter): function bool_exps_to_if_m (line 94) | def bool_exps_to_if_m(name_iter): function lift_to_frame_m (line 105) | def lift_to_frame_m(name_fn=lambda x: x): FILE: src/mappers_test.py function map_function (line 21) | def map_function(source, mapper): class TestMappers (line 28) | class TestMappers(unittest.TestCase): method test_promote_to_temporary_m (line 30) | def test_promote_to_temporary_m(self): method test_remove_trivial_temporaries_m (line 60) | def test_remove_trivial_temporaries_m(self): method test_remove_trivial_temporaries_m_tail_call (line 99) | def test_remove_trivial_temporaries_m_tail_call(self): method test_for_to_while_m (line 121) | def test_for_to_while_m(self): method test_promote_while_cond_m (line 159) | def test_promote_while_cond_m(self): method test_bool_exps_to_if_m (line 188) | def test_bool_exps_to_if_m(self): method test_lift_to_frame_m (line 221) | def test_lift_to_frame_m(self): FILE: src/trampoline.py class StackFrame (line 25) | class StackFrame: function pos_with_defaults (line 31) | def pos_with_defaults(args: ast.arguments): function bind_frame (line 41) | def bind_frame(positional_args, keyword_args, fn_tree: ast.FunctionDef): function run (line 90) | def run(fn, args=None, kwargs=None, *, __max_stack_size=float('inf')): FILE: src/trampoline_test.py class TestTrampoline (line 22) | class TestTrampoline(unittest.TestCase): method test_fib (line 24) | def test_fib(self): method test_sum (line 40) | def test_sum(self): method test_sum_recursion_exceeded (line 51) | def test_sum_recursion_exceeded(self): method test_sum_non_tailcall (line 59) | def test_sum_non_tailcall(self): method test_mutual_recursion (line 70) | def test_mutual_recursion(self): method test_edit_distance (line 85) | def test_edit_distance(self): method test_pop_balloons (line 106) | def test_pop_balloons(self): method test_tree_recursion (line 125) | def test_tree_recursion(self): FILE: src/utils.py function dunder_names (line 24) | def dunder_names(): function is_temporary (line 32) | def is_temporary(name): function is_supported_scope (line 36) | def is_supported_scope(tree): function map_expression (line 40) | def map_expression(statement: ast.AST, fn): function iter_scope (line 61) | def iter_scope(scope): function potentially_trivial_temporaries (line 69) | def potentially_trivial_temporaries(fn): function find_assignments (line 92) | def find_assignments(fn, variables): function replace_variable (line 106) | def replace_variable(statement, assignments): function make_assign (line 125) | def make_assign(target, value): function make_call (line 129) | def make_call(func: str, *args): function make_lookup (line 133) | def make_lookup(name: str): function make_not (line 137) | def make_not(exp: ast.AST): function make_for_try (line 141) | def make_for_try(loop_target, iter_n, test_n): function is_block (line 156) | def is_block(block: ast.AST): function _locals_impl (line 160) | def _locals_impl(fn: ast.AST): function local_vars (line 183) | def local_vars(fn: ast.AST):