skip to main content
10.1145/1133981.1134007acmconferencesArticle/Chapter ViewAbstractPublication PagespldiConference Proceedingsconference-collections
Article

Profile-based global live-range splitting

Published:11 June 2006Publication History

ABSTRACT

Live-range splitting is a technique to split the live range of a given variable into multiple subranges, each of which can be assigned to a different register or spilled out to memory in order to improve results of coloring register allocation. Previous techniques, such as aggressive live-range splitting, tend to produce extra spill code in the frequently executed (called hot) regions of the code, since they don't distinguish hot regions from others. We propose a new live-range splitting algorithm, which can reduce the amount of spill code in hot regions by coalescing the live ranges based on profile information after splitting the live ranges at every join and fork point in the control-flow graph. Our experimental results have shown that our new algorithm improved the performance of SPECjvm98 by up to 33% over aggressive live-range splitting and 7% over the base coloring algorithm without any live-range splitting.

References

  1. B. White, M. Almeida, and D. Jorna. IBM e-server zSeries 990 Technical Guide. Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. D. Bernstein, M.C. Golumbic, Y. Mansour, R.Y. Pinter, D.Q. Goldin, H. Krawczyk, and I. Nahshon. Spill code minimization techniques for optimizing compilers. In Proceedings of the ACM SIGPLAN 1989 Conference on Programming Language Design and Implementation, pages 258--263, 1989. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. F. Chow and J. Hennessy. Register Allocation by Prioritybased Coloring. In Proceedings of the ACM SIGPLAN 1984 Symposium on Compiler Construction, SIGPLAN Notices Vol. 19, No. 6, pages 222--232, June 1984. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. G.J. Chaitin, M.A. Auslander, A.K. Chandra, J. Cocke, M.E. Hopkins, and P.W. Markstein. Register allocation via coloring. Computer Languages, Vol. 6, No. 1, pages 47--57, January 1981.Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. G.J. Chaitin. Register allocation and spilling via graph coloring. In Proceedings of the ACM SIGPLAN 1982 Symposium on Compiler Construction, pages 201--207, SIGPLAN Notices Vol. 17, No. 6, pages 98--105, June 1982. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. H. Kim. Region-based Register Allocation for EPIC Architectures. PhD thesis, New York University, January 2001. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. J. Park and S. Moon. Optimistic Register Coalescing. ACM Transactions on Programming Languages and Systems. Vol. 26, No. 4, pages 735--765, July 2004. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. J. Whaley. A Portable Sampling-Based Profiler for Java Virtual Machines. Java Grande 2000. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. K. Ishizaki, M. Kawahito, T. Yasue, H. Komatsu, and T. Nakatani. A Study of Devirtualization Techniques for a Java Just-In-Time Compiler, In Proceedings of the ACM Conference on Object-Oriented Programming Systems, Language, and Applications, pages 294--310, October 2000. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. K.D. Cooper and L.T. Sympson. Live range splitting in a graph coloring register allocator. In Proceedings of the 7th International Conference on Compiler Construction, LNCS 1383, pages 174--187, March 1998. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. L. George and A.W. Appel. Iterated register coalescing. ACM Transactions on Programming Languages and Systems. Vol. 18, No. 3, pages 300--324, May 1996. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. M. Arnold and B. G. Ryder. A Framework for Reducing the Cost of Instrumented Code. In Proceedings of the ACM SIGPLAN 2001 Conference on Programming Language Design and Implementation, pages 168--179, June 2001. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. N. Grcevski, A. Kielstra, K. Stoodley, M. Stoodley, and V. Sundaresan. JavaTM Just-In-Time Compiler and Virtual Machine Improvements for Server and Middleware Applications. Proceedings of the Third Virtual Machine Research and Technology Symposium. May 2004. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. P. Bergner, P. Dahl, D. Engebretsen, and M O'Keefe. Spill Code Minimization via Interference Region Spilling. In Proceedings of the ACM SIGPLAN 1997 Conference on Programming Language Design and Implementation, pages 287--295, June 1997. Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. P. Briggs, K.D. Cooper, K. Kennedy, and L. Torczon. Coloring heuristics for register allocation. In Proceedings of the ACM SIGPLAN 1989 Conference on Programming Language Design and Implementation, pages 275--284, June 1989. Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. P. Briggs. Register Allocation via Graph Coloring. PhD thesis, Rice University, April 1992. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. P. Kolte and M.J. Harrold. Load/Store Range Analysis for Global Register Allocation. In Proceedings of the ACM SIGPLAN 1994 Conference on Programming Language Design and Implementation, pages 268--277, June 1993. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. R. Cytron, J. Ferrante, B.K. Rosen, M.N. Wegman, and F.K. Zadeck. Efficiently Computing Static Single Assignment Form and the Control Dependence Graph. ACM Transactions on Programming Languages and Systems, Vol. 13, No. 4, pages 451--490, October 1991. Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. Standard Performance Evaluation Corporation. SPECjvm98 Benchmarks, http://www.spec.org/osg/jvm98/.Google ScholarGoogle Scholar
  20. z/Architecture Principles of Operation. Document number: SA22-7832-03.Google ScholarGoogle Scholar

Index Terms

  1. Profile-based global live-range splitting

    Recommendations

    Comments

    Login options

    Check if you have access through your login credentials or your institution to get full access on this article.

    Sign in
    • Published in

      cover image ACM Conferences
      PLDI '06: Proceedings of the 27th ACM SIGPLAN Conference on Programming Language Design and Implementation
      June 2006
      438 pages
      ISBN:1595933204
      DOI:10.1145/1133981
      • cover image ACM SIGPLAN Notices
        ACM SIGPLAN Notices  Volume 41, Issue 6
        Proceedings of the 2006 PLDI Conference
        June 2006
        426 pages
        ISSN:0362-1340
        EISSN:1558-1160
        DOI:10.1145/1133255
        Issue’s Table of Contents

      Copyright © 2006 ACM

      Publisher

      Association for Computing Machinery

      New York, NY, United States

      Publication History

      • Published: 11 June 2006

      Permissions

      Request permissions about this article.

      Request Permissions

      Check for updates

      Qualifiers

      • Article

      Acceptance Rates

      Overall Acceptance Rate406of2,067submissions,20%

    PDF Format

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader
    About Cookies On This Site

    We use cookies to ensure that we give you the best experience on our website.

    Learn more

    Got it!