Runtime value specialization
As programming has become more modular and component based, it is easier
to maintain and favours reusability. However, in most cases, programs are
being used for a single or a few certain tasks. Using general purpose software in
order to perform a certain task has a loss in performance. Optimizing compilers
have been given the task to define and optimize over common case scenarios
and at the same time guarantee correct behaviour for the uncommon cases.
Numerous compiler optimizations have been proposed, some static and others
dynamic, i. e. performed at runtime. The work described in this thesis focuses
on dynamic optimizations because they have some advantages over the
static ones, such as access to runtime state, transparency and adaptability.
More specifically, the work described in this thesis is about value specialization,
a technique which eliminates computation that is based on constant values or
values that are constant over a certain period of the program execution.
In this thesis a specializer was implemented that applies to the category of
object oriented programming language specializers. The specializer is part of
a Java virtual machine, Jikes RVM, so it could take advantage of the runtime
values that are unknown during the pre-run phase of the program