2026-07-10 10:38:57 +02:00

32 lines
1.5 KiB
Python

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()