scispace - formally typeset
Proceedings ArticleDOI

Escape analysis for Java

Reads0
Chats0
TLDR
A new program abstraction for escape analysis, the connection graph, that is used to establish reachability relationships between objects and object references is introduced and it is shown that the connectiongraph can be summarized for each method such that the same summary information may be used effectively in different calling contexts.
Abstract
This paper presents a simple and efficient data flow algorithm for escape analysis of objects in Java programs to determine (i) if an object can be allocated on the stack; (ii) if an object is accessed only by a single thread during its lifetime, so that synchronization operations on that object can be removed. We introduce a new program abstraction for escape analysis, the connection graph, that is used to establish reachability relationships between objects and object references. We show that the connection graph can be summarized for each method such that the same summary information may be used effectively in different calling contexts. We present an interprocedural algorithm that uses the above property to efficiently compute the connection graph and identify the non-escaping objects for methods and threads. The experimental results, from a prototype implementation of our framework in the IBM High Performance Compiler for Java, are very promising. The percentage of objects that may be allocated on the stack exceeds 70% of all dynamically created objects in three out of the ten benchmarks (with a median of 19%), 11% to 92% of all lock operations are eliminated in those ten programs (with a median of 51%), and the overall execution time reduction ranges from 2% to 23% (with a median of 7%) on a 333 MHz PowerPC workstation with 128 MB memory.

read more

Content maybe subject to copyright    Report

Citations
More filters
Proceedings ArticleDOI

Precise identification of side-effect-free methods in Java

TL;DR: This work presents a general approach for identifying side-effect-free methods in Java software that is parameterized by class analysis and designed to work on incomplete programs, and presents empirical results from two instantiations of the approach.
Proceedings ArticleDOI

A practical type system and language for reference immutability

TL;DR: The design and implementation of Javari is described, including the type-checking rules for the language, which can be viewed as a proposal for the semantics of the Java const keyword, though Javari's syntax uses readonly instead.
Proceedings ArticleDOI

Exploiting purity for atomicity

TL;DR: A static typed-based analysis for atomicity is developed based on the notion of pure code blocks to verify the atomicity of such irreducible procedures if a pure block terminates normally and its evaluation does not change the program state and these evaluation steps can be removed from the program trace before reduction.
Proceedings ArticleDOI

Heap compression for memory-constrained Java environments

TL;DR: A new garbage collector, referred to as the Mark-Compact-Compress (MCC) collector, that allows an application to run with a heap smaller than its footprint, and a set of memory management strategies to reduce heap footprint of embedded Java applications that execute under severe memory constraints.
Proceedings ArticleDOI

Runtime optimizations for a Java DSM implementation

TL;DR: This paper describes optimizations for Jackal's runtime system, which implements a multiple-writer, home-based consistency protocol, and finds that runtime optimizations are necessary for good Jackal performance, but only in conjunction with the Jackal compiler optimizations described in [24].
References
More filters
Book

The Java Language Specification

TL;DR: The Java Language Specification, Second Edition is the definitive technical reference for the Java programming language and provides complete, accurate, and detailed coverage of the syntax and semantics of the Java language.
Proceedings ArticleDOI

A unified approach to global program optimization

TL;DR: A technique is presented for global analysis of program structure in order to perform compile time optimization of object code generated for expressions that includes constant propagation, common subexpression elimination, elimination of redundant register load operations, and live expression analysis.
Proceedings ArticleDOI

Compositional pointer and escape analysis for Java programs

TL;DR: A combined pointer and escape analysis algorithm for Java programs that uses the escape information to eliminate synchronization for objects that are accessed by only one thread and to allocate objects on the stack instead of in the heap.
Proceedings ArticleDOI

Escape analysis for object-oriented languages: application to Java

TL;DR: The main originality of the escape analysis is that it determines precisely the effect of assignments, which is necessary to apply it to object oriented languages with promising results, whereas previous work applied it to functional languages and were very imprecise on assignments.
Proceedings ArticleDOI

Thin locks: featherweight synchronization for Java

TL;DR: A new algorithm is proposed that allows lock and unlock operations to be performed with only a few machine instructions in the most common cases, and only require a partial word per object, and was implemented without increasing object size.