Optimized Interval Splitting in a Linear Scan Register Allocator

Hanspeter Mössenböck, Christian Wimmer

Research output: Chapter in Book/Report/Conference proceedingConference proceedingspeer-review

Abstract

We present an optimized implementation of the linear scan register allocation algorithm for Sun Microsystems' Java HotSpot™ client compiler. Linear scan register allocation is especially suitable for just-in-time compilers because it is faster than the common graph-coloring approach and yields results of nearly the same quality. Our allocator improves the basic linear scan algorithm by adding more advanced optimizations: It makes use of lifetime holes, splits intervals if the register pressure is too high, and models register constraints of the target architecture with fixed intervals. Three additional optimizations move split positions out of loops, remove register-to-register moves and eliminate unnecessary spill stores. Interval splitting is based on use positions, which also capture the kind of use and whether an operand is needed in a register or not. This avoids the reservation of a scratch register. Benchmark results prove the efficiency of the linear scan algorithm: While the compilation speed is equal to the old local register allocator that is part of the Sun JDK 5.0, integer benchmarks execute about 15% faster. Floating-point benchmarks show the high impact of the Intel SSE2 extensions on the speed of numeric Java applications: With the new SSE2 support enabled, SPECjvm98 executes 25% faster compared with the current Sun JDK 5.0.
Original languageEnglish
Title of host publicationProceedings of the International Conference on Virtual Execution Environments (VEE´05)
PublisherACM Press
Pages132-141
Number of pages10
ISBN (Print)1595930477
DOIs
Publication statusPublished - Jun 2005

Publication series

NameProceedings of the First ACM/USENIX International Conference on Virual Execution Environments, VEE 05

Fields of science

  • 102 Computer Sciences
  • 102009 Computer simulation
  • 102011 Formal languages
  • 102013 Human-computer interaction
  • 102029 Practical computer science
  • 102022 Software development
  • 102024 Usability research

Cite this