|
|
|
|
|
By deferring compilation as much as possible we can minimize the impact of these problems. Type analysis, used in FALCON, can determine the type of variables and lead to generation of efficient code; however, at runtime, a lot more information is available about the actual types of the variables, and thus type analysis can be both faster and yield more exact types.
Exact knowledge of array bounds offers the possibility of unrolling loops and vector operations with zero overhead. It also enables the optimization of indexed variable accesses by removing unnecessary loop bounds.
Analysis at runtime also affords a better knowledge of loop parallelism, allowing the generation of SMP code, yielding even more speed.
On a multiprocessor machine parsing, analysis, compilation and execution can be pipelined to implement look-ahead compilation and continuous compilation.