uu.seUppsala University Publications
Change search
ReferencesLink to record
Permanent link

Direct link
Implementing a New Register Allocator for the Server Compiler in the Java HotSpot Virtual Machine
Uppsala University, Disciplinary Domain of Science and Technology, Mathematics and Computer Science, Department of Information Technology.
2015 (English)Independent thesis Advanced level (degree of Master (Two Years)), 20 credits / 30 HE creditsStudent thesis
Abstract [en]

The Java HotSpot Virtual Machine currently uses two Just In Time compilers to increase the performance of Java code in execution. The client and server compilers, as they are named, serve slightly different purposes. The client compiler produces code fast, while the server compiler produces code of greater quality. Both are important, because in a runtime environment there is a tradeoff between compiling and executing code. However, maintaining two separate compilers leads to increased maintenance and code duplication. An important part of the compiler is the register allocator which has high impact on the quality of the produced code. The register allocator decides which local variables and temporary values that should reside in physical registers during execution. This thesis presents the implementation of a second register allocator in the server compiler. The purpose is to make the server compiler more flexible, allowing it to produce code fast or produce code of greater quality. This would be a major step towards making the client compiler redundant. The new register allocator is based on an algorithm called the linear scan algorithm, which is also used in the client compiler. The implementation shows that the time spent on register allocation in the server compiler can be greatly reduced with an average reduction of 60 to 70% when running the SPECjvm2008 benchmarks. However, while the new implementation, in most benchmarks, is slower than the register allocator in the client compiler, concrete suggestions on how to improve the speed of the new register allocator are presented. Looking at performance, the implementation is not yet in line the with the client compiler, which in most benchmarks produces code that performs 10 to 25% better. The implementation does, however, have good potential in reaching that performance by implementing additional performance improvements described in this thesis. The benchmark data shows that, while the new implementation looks promising, additional work is needed to reach the same compilation speed and performance as the register allocator in the client compiler. Also, other phases in the server compiler, such as certain optimization phases, also need to be optional and adjustable to further reduce the compilation time.

Place, publisher, year, edition, pages
2015. , 52 p.
UPTEC IT, ISSN 1401-5749 ; 15011
National Category
Engineering and Technology
URN: urn:nbn:se:uu:diva-257145OAI: oai:DiVA.org:uu-257145DiVA: diva2:832597
Educational program
Master of Science Programme in Information Technology Engineering
Available from: 2015-06-30 Created: 2015-06-30 Last updated: 2015-06-30Bibliographically approved

Open Access in DiVA

fulltext(635 kB)155 downloads
File information
File name FULLTEXT01.pdfFile size 635 kBChecksum SHA-512
Type fulltextMimetype application/pdf

By organisation
Department of Information Technology
Engineering and Technology

Search outside of DiVA

GoogleGoogle Scholar
Total: 155 downloads
The number of downloads is the sum of all downloads of full texts. It may include eg previous versions that are now no longer available

Total: 362 hits
ReferencesLink to record
Permanent link

Direct link