DocumentCode
834650
Title
Dynamic recompilation and profile-guided optimisations for a .NET JIT compiler
Author
Vaswani, K. ; Srikant, Y.N.
Author_Institution
Dept. of Comput. Sci. Autom., Indian Inst. of Sci., Bangalore, India
Volume
150
Issue
5
fYear
2003
Firstpage
296
Lastpage
302
Abstract
The paper describes the design and implementation of an adaptive recompilation framework for Rotor, a shared source implementation of the common language infrastructure (CLI) that can increase program performance through intelligent recompilation decisions and optimisations based on the program´s past behaviour. Our extensions to Rotor include a low overhead run-time-stack based sampling profiler that identifies program hotspots. At the first level of optimisation, the compiler uses a fast yet effective linear scan algorithm for register allocation. Hot methods can be instrumented to collect basic-block, edge and call-graph profile information. Profile-guided optimisations driven by online profile information are used to further optimise heavily executed methods at the second level of recompilation. An evaluation of the framework using a set of test programs shows that performance can improve by a maximum of 42.3% and by 9% on average. Our results also show that the overheads of collecting accurate profile information through instrumentation to an extent outweigh the benefits of profile-guided optimisations in our implementation, suggesting the need for implementing techniques that can reduce such overheads. A flexible and extensible framework design implies that additional profiling and optimisation techniques can easily be incorporated to further improve performance.
Keywords
optimising compilers; program control structures; software performance evaluation; CLI; NET JIT compiler; Rotor; accurate profile information; adaptive recompilation framework; basic-block information; call-graph profile information; common language infrastructure; compiler; dynamic recompilation; edge information; linear scan algorithm; low overhead sampling profiler; optimisation; profile-guided optimisations; program hotspots; program performance; register allocation; run-time-stack based sampling profiler; shared source implementation;
fLanguage
English
Journal_Title
Software, IEE Proceedings -
Publisher
iet
ISSN
1462-5970
Type
jour
DOI
10.1049/ip-sen:20030986
Filename
1249340
Link To Document