All of these files use functions and objects, which are defined in the mathematical library and in the fil e scheduler/commonschedal/classdef.h. The evaluation of parameters given to the binary allocator/allocator and the initialization is done in allocator/mainalloc.cc. The main file for the algorithm is allocator/allocat.cc. This file contains after the calculation of the maximum possible placement dimension for a program (routines therefor in allocator/multialloc.cc) the following code:
// build the prototype placements for each statement
create_prototype_placements( source );
// rank the dependences
int *ordered_dependences = rank_dependences( source );
// build the placement equations
Eq_system *placement_equations = create_placement_equations( source,
ordered_dependences );
// apply the placement algorithm to these equations
Solution_package *sol_pack = apply_placement_algorithm( source,
placement_equations, alloc_dim );
// construct the placements from these coefficients
Matrix sol_vector = construct_placements_from_coefficients( source,
sol_pack, alloc_dim );
// count the number of cut edges
count_cut_dependences( source, placement_equations, sol_pack,
sol_vector, ordered_dependences );
// print the placements
source->print_placements();
// save the placements to file
source->save_placements();
The steps in detail: