Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
article

Interprocedural compatibility analysis for static object preallocation

Published: 15 January 2003 Publication History

Abstract

We present an interprocedural and compositional algorithm for finding pairs of compatible allocation sites, which have the property that no object allocated at one site is live at the same time as any object allocated at the other site. If an allocation site is compatible with itself, it is said to be unitary: at most one object allocated at that site is live at any given point in the, execution of the program. We use the results of the analysis to statically preallocate memory space for the objects allocated at unitary sites, thus simplifying the computation of an upper bound on the amount of memory required to execute the program. We also use the analysis to enable objects allocated at several compatible allocation sites to share the same preallocated memory. Our experimental results show that, for our set of Java benchmark programs, 60% of the allocation sites are unitary and can be statically preallocated. Moreover, allowing compatible unitary allocation sites to share the same preallocated memory leads to a 95% reduction in the amount of memory preallocated for these sites.

References

[1]
Ole Agesen. The cartesian product algorithm. In Proceedings of the 9th European Conference on Object-Oriented Programming Lecture Notes in Computer Science, 1995.
[2]
A. V. Aho, R. Sethi, and J. Ullman. Compilers: Principles, Techniques, and Tools Addison-Wesley, Reading, Mass., Reading, MA, second edition, 1986.
[3]
C. Scott Ananian. MIT FLEX compiler infrastructure for Java. http://www.flex-compiler.lcs.mit.edu.
[4]
C. Scott Ananian. Static single information form. Master's thesis, Laboratory for Computer Science, Massachusetts Institute of Technology, September 1999.
[5]
Lars Ole Andersen. Program Analysis and Specialization for the C Programming Language PhD thesis, DIKU, University of Copenhagen, May 1994.
[6]
Andrew Appel. Modern Compiler Implementation in Java Cambridge University Press, 1998.
[7]
B. Blanchet. Escape analysis for object oriented languages. Application to Java. In Proceedings of the 14th Annual Conference on Object-Oriented Programming Systems, Languages and Applications Denver, CO, November 1999.
[8]
J. Bogda and U. Hoelzle. Removing unnecessary synchronization in Java. In Proceedings of the 14th Annual Conference on Object-Oriented Programming Systems, Languages and Applications Denver, CO, November 1999.
[9]
Gregory Bollella, James Gosling, Benjamin Brosgol, Peter Dibble, Steve Furr, and Mark Turnbull. The Real-Time Specification for Java Addison-Wesley, Reading, Mass., 2000.
[10]
Daniel Brélaz. New methods to color the vertices of a graph. Communications of the ACM (22): 251--256, 1979.
[11]
Brendon Cahoon and Kathryn S. McKinley. Data flow analysis for software prefetching linked data structures in Java. In Proceedings of the 10th International Conference on Parallel Architectures and Compilation Techniques 2001.
[12]
Martin C. Carlisle and Anne Rogers. Software caching and computation migration in Olden. In Proceedings of the 5th ACM SIGPLAN Symposium on Principles and Practices of Parallel Programming 1995.
[13]
David R. Chase, Mark Wegman, and F. Kenneth Zadeck. Analysis of pointers and structures. In Proceedings of the SIGPLAN '90 Conference on Programming Language Design and Implementation 1990.
[14]
J. Choi, M. Gupta, M. Serrano, V. Sreedhar, and S. Midkiff. Escape analysis for Java. In Proceedings of the 14th Annual Conference on Object-Oriented Programming Systems, Languages and Applications Denver, CO, November 1999.
[15]
R. Cytron, J. Ferrante, B. Rosen, M. Wegman, and K. Zadeck. Efficiently computing static single assignment form and the control dependence graph. ACM Transactions on Programming Languages and Systems 13(4): 451--490, October 1991.
[16]
Ovidiu Gheorghioiu. Statically determining memory consumption of real-time Java threads. MEng thesis, Massachusetts Institute of Technology, 2002.
[17]
Dan Grossman, Greg Morrisett, Trevor Jim, Michael Hicks, Yanling Wang, and James Cheney. Region-based memory management in Cyclone. In Proceedings of the SIGPLAN '02 Conference on Programming Language Design and Implementation 2002.
[18]
Bjarne Steensgaard. Points-to analysis in almost linear time. In Proceedings of the 23rd Annual ACM Symposium on the Principles of Programming Languages St. Petersburg Beach, FL, January 1996.
[19]
M. Tofte and L. Birkedal. A region inference algorithm. ACM Transactions on Programming Languages and Systems 20(4), July 1998.
[20]
J. Whaley and M. Rinard. Compositional pointer and escape analysis for Java programs. In Proceedings of the 14th Annual Conference on Object-Oriented Programming Systems, Languages and Applications Denver, CO, November 1999.

Cited By

View all

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM SIGPLAN Notices
ACM SIGPLAN Notices  Volume 38, Issue 1
January 2003
298 pages
ISSN:0362-1340
EISSN:1558-1160
DOI:10.1145/640128
Issue’s Table of Contents
  • cover image ACM Conferences
    POPL '03: Proceedings of the 30th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
    January 2003
    308 pages
    ISBN:1581136285
    DOI:10.1145/604131
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 15 January 2003
Published in SIGPLAN Volume 38, Issue 1

Check for updates

Author Tags

  1. interprocedural analysis
  2. memory preallocation
  3. static analysis

Qualifiers

  • Article

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)3
  • Downloads (Last 6 weeks)0
Reflects downloads up to 15 Oct 2024

Other Metrics

Citations

Cited By

View all

View Options

Get Access

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media