Combining Offline and Online Optimizations: Register Allocation and Method Inlining

  • Hiroshi Yamauchi
  • Jan Vitek
Part of the Lecture Notes in Computer Science book series (LNCS, volume 4279)


Fast dynamic compilers trade code quality for short compilation time in order to balance application performance and startup time. This paper investigates the interplay of two of the most effective optimizations, register allocation and method inlining for such compilers. We present a bytecode representation which supports offline global register allocation, is suitable for fast code generation and verification, and yet is backward compatible with standard Java bytecode.


Compilation Time Java Virtual Machine Register Allocation Online Optimization Interference Graph 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Amme, W., Dalton, N., von Ronne, J., Franz, M.: SafeTSA: A type safe and referentially secure mobile-code representation based on static single assignment form. In: Conference on Programming Language Design and Implementation (PLDI) (2001)Google Scholar
  2. 2.
    Azevedo, A., Nicolau, A., Hummel, J.: Java annotation-aware just-in-time (AJIT) compilation system. In: Java Grande Conference (1999)Google Scholar
  3. 3.
    Bernstein, D., Golumbic, M., Mansour, y., Pinter, R., Goldin, D., Krawczyk, H., Nahshon, I.: Spill code minimization techniques for optimizing compliers. In: Conference on Programming language design and implementation (PLDI) (1989)Google Scholar
  4. 4.
    Briggs, P., Cooper, K.D., Torczon, L.: Improvements to graph coloring register allocatoion. Transaction on Programming Languages and Systems (1994)Google Scholar
  5. 5.
    Callahan, D., Koblenz, B.: Register allocation via hierarchical graph coloring. In: Conference on Programming language design and implementation (PLDI) (1991)Google Scholar
  6. 6.
    Chaitin, G.J., Auslander, M.A., Chandra, A.K., Cocke, J., Hopkins, M.E., Markstein, P.W.: Register allocation via coloring. Journal of Computer Languages 6, 47–57 (1981)CrossRefGoogle Scholar
  7. 7.
    Standard Performance Evaluation Corporation. SPECjvm98 (1998)Google Scholar
  8. 8.
    Gupta, R., Soffa, M.L., Steele, T.: Register allocation via clique separators. In: Conference on Programming language design and implementation (PLDI) (1989)Google Scholar
  9. 9.
    Hummel, J., Azevedo, A., Kolson, D., Nicolau, A.: Annotating the Java bytecodes in support of optimization. Concurrency: Practice and Experience 9(11), 1003–1016 (1997)CrossRefGoogle Scholar
  10. 10.
    Jones, J., Kamin, S.: Annotating Java class files with virtual registers for performance. Concurrency: Practice and Experience 12(6), 389–406 (2000)CrossRefGoogle Scholar
  11. 11.
    Krintz, C., Calder, B.: Using annotations to reduce dynamic optimization time. In: Conference on Programming language design and implementation (PLDI) (2001)Google Scholar
  12. 12.
    Lee, H., von Dincklage, D., Diwan, A., Moss, J.E.B.: Understanding the behavior of compiler optimizations. Technical Report Technical Report CU-CS-978-04, University of Colorado at Boulder (2004)Google Scholar
  13. 13.
    Morrisett, G., Walker, D., Crary, K., Glew, N.: From system f to typed assembly language. In: Symposium on Principles of Programming Languages (POPL) (1998)Google Scholar
  14. 14.
    Pominville, P., Qian, F., Vallée-Rai, R., Hendren, L., Verbrugge, C.: A framework for optimizing java using attributes. In: Wilhelm, R. (ed.) CC 2001. LNCS, vol. 2027, p. 334. Springer, Heidelberg (2001)CrossRefGoogle Scholar
  15. 15.
    Rose, E., Rose, K.H.: Lightweight bytecode verification. In: Workshop Formal Underpinnings of the Java Paradigm (1998)Google Scholar
  16. 16.
    Shaylor, N.: A just-in-time compiler for memory-constrained low-power devices. In: Java Virtual Machine Research and Technology Symposium (JVM) (2002)Google Scholar
  17. 17.
    Shaylor, N., Simon, D.N., Bush, W.R.: A Java virtual machine architecture for very small devices. In: Conference on Language, compiler, and tool for embedded systems (LCTES) (2003)Google Scholar
  18. 18.
    Shi, Y., Gregg, D., Beatty, A., Ertl, M.A.: Virtual machine showdown: stack versus registers. In: Conference on Virtual execution environments (VEE) (2005)Google Scholar
  19. 19.
    Sites, R.L.: Machine-independent register allocation. In: Symposium on Programming Language Design and Implementation (1979)Google Scholar
  20. 20.
    Purdue University. The ovm virtual machine frameworkGoogle Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2006

Authors and Affiliations

  • Hiroshi Yamauchi
    • 1
  • Jan Vitek
    • 1
  1. 1.Department of Computer SciencesPurdue University 

Personalised recommendations