from ScEpTIC.AST.transformations.virtual_memory.analysis.memory_usage import MemoryUsage from ScEpTIC.AST.transformations.virtual_memory.analysis.registers_usage import RegistersUsage from ScEpTIC.AST.transformations.virtual_memory.computation_intervals_manager import ComputationIntervalsManager from ScEpTIC.AST.transformations.virtual_memory.elements.loop_block import LoopBlock from ScEpTIC.AST.transformations.virtual_memory.parsers.ast_parser import ASTParser from ScEpTIC.AST.transformations.virtual_memory.parsers.memory_tags_parser import MemoryTagsParser def apply_transformation(functions, vmstate, f_declarations): config = vmstate.config.ast_transformations.virtual_memory checkpoint_function_name = vmstate.config.state_retention.state_save_function_name main_function_name = vmstate.config.program.main_function_name parser = ASTParser(functions) parser.parse() mem_parser = MemoryTagsParser(parser) mem_parser.resolve_memory_tags() comp_int_manager = ComputationIntervalsManager(parser, mem_parser, checkpoint_function_name, config.n_min_function, main_function_name) comp_int_manager.split_computation_intervals() comp_int_manager.apply_virtual_memory_transformations(config.optimize_memory) if config.optimize_saved_registers: RegistersUsage.set_checkpoints_regs(comp_int_manager) comp_int_manager.synchronize_to_ast() parser.syncrhonize_ast_to_functions() #comp_int_manager.print_computation_intervals()