Results 1 - 10
of
13
Online Feedback-Directed Optimization of Java
, 2002
"... This paper describes the implementation of an online feedback-directed optimization system. The system is fully automatic; it requires no prior... ..."
Abstract
-
Cited by 45 (3 self)
- Add to MetaCart
This paper describes the implementation of an online feedback-directed optimization system. The system is fully automatic; it requires no prior...
Connectivity-Based Garbage Collection
, 2003
"... We introduce a new family of connectivity-based garbage collectors (Cbgc) that are based on potential objectconnectivity properties. The key feature of these collectors is that the placement of objects into partitions is determined by performing one of several forms of connectivity analyses on the p ..."
Abstract
-
Cited by 34 (7 self)
- Add to MetaCart
We introduce a new family of connectivity-based garbage collectors (Cbgc) that are based on potential objectconnectivity properties. The key feature of these collectors is that the placement of objects into partitions is determined by performing one of several forms of connectivity analyses on the program. This enables partial garbage collections, as in generational collectors, but without the need for any write barrier.
Understanding the behavior of compiler optimizations
, 2004
"... Compiler writers usually follow some known rules of thumb on the effectiveness of optimizations when implementing compilers. While many of these rules may be correct, it is a far better methodology to base implementation decisions on a scientific evaluation of optimizations. To this end, we present ..."
Abstract
-
Cited by 10 (5 self)
- Add to MetaCart
Compiler writers usually follow some known rules of thumb on the effectiveness of optimizations when implementing compilers. While many of these rules may be correct, it is a far better methodology to base implementation decisions on a scientific evaluation of optimizations. To this end, we present an exploration of the costs and benefits of optimizations implemented in Jikes RVM, a research virtual machine that includes an aggressive optimizing compiler. We measure and report the performance impact due to optimizations, both when the optimizations are used by themselves and when they are used with other optimizations. To understand why optimizations do or do not improve performance, we wrote kernel programs to test and explore the behavior of each optimization. To increase the generality of our results, we report measurements on two architectures (IA32 and PowerPC). Based on our findings, we present a set of recommendations for compiler writers. KEY WORDS: Java; compiler optimizations; performance evaluation of optimizations 1.
Runtime specialization with optimistic heap analysis
- In Proceedings of the ACM Conference on Object-Oriented Programming Systems, Languages and Applications
, 2005
"... We describe a highly practical program specializer for Java programs. The specializer is powerful, because it specializes optimistically, using (potentially transient) constants in the heap; it is precise, because it specializes using data structures that are only partially invariant; it is deployab ..."
Abstract
-
Cited by 9 (0 self)
- Add to MetaCart
We describe a highly practical program specializer for Java programs. The specializer is powerful, because it specializes optimistically, using (potentially transient) constants in the heap; it is precise, because it specializes using data structures that are only partially invariant; it is deployable, because it is hidden in a JIT compiler and does not require any user annotations or offline preprocessing; it is simple, because it uses existing JIT compiler ingredients; and it is fast, because it specializes programs in under 1s. These properties are the result of (1) a new algorithm for selecting specializable code fragments, based on a notion of influence; (2) a precise store profile for identifying constant heap locations; and (3) an efficient invalidation mechanism for monitoring optimistic assumptions about heap constants. Our implementation of the specializer in the Jikes RVM has low overhead, selects specialization points that would be chosen manually, and produces speedups ranging from a factor of 1.2 to 6.4, comparable with annotationguided specializers.
Online Profiling and Feedback-directed Optimization of Java
, 2002
"... The dynamic nature of the Java programming language presents a number of challenges for Java Virtual Machine (JVM) implementations. Constructs such as dynamic class load-ing and reflection make traditional whole program analysis and optimization difficult, or even impossible; however, Java’s dynam ..."
Abstract
-
Cited by 3 (0 self)
- Add to MetaCart
The dynamic nature of the Java programming language presents a number of challenges for Java Virtual Machine (JVM) implementations. Constructs such as dynamic class load-ing and reflection make traditional whole program analysis and optimization difficult, or even impossible; however, Java’s dynamic execution environment also presents a potential performance advantage over the traditional static compilation model: the ability to per-form feedback-directed optimizations, where profiling information is collected at runtime and used to tailor the optimization decisions that are made. Although previous work has shown that feedback-directed optimizations can substan-tially improve program performance, most of these systems used offline profiles collected using a separate training run. Performing profiling and optimization online during the same run is an attractive approach because it avoids the need for a separate training run. Unfortunately, the overhead of collecting online profiles is often a problem, and is one of the main reasons why today’s JVM’s perform only limited forms of feedback-directed optimizations. The first contribution of this thesis is a new technique called an instrumentation sam-
Inferred Call Path Profiling
, 2009
"... Prior work has found call path profiles to be useful for optimizers and programmer-productivity tools. Unfortunately, previous approaches for collecting path profiles are expensive: they need to either execute additional instructions (to track calls and returns) or they need to walk the stack. The s ..."
Abstract
-
Cited by 2 (0 self)
- Add to MetaCart
Prior work has found call path profiles to be useful for optimizers and programmer-productivity tools. Unfortunately, previous approaches for collecting path profiles are expensive: they need to either execute additional instructions (to track calls and returns) or they need to walk the stack. The state-of-the-art techniques for call path profiling slow down the program by 7 % (for C programs) and 20 % (for Java programs). This paper describes an innovative technique that collects minimal information from the running program and later (offline) infers the full call paths from this information. The key insight behind our approach is that readily available information during program execution—the height of the call stack and the identity of the current executing function—are good indicators of calling context. We call this pair a context identifier. Because more than one call path may have the same context identifier, we show how to disambiguate context identifiers by changing the sizes of function activation records. This disambiguation has no overhead in terms of executed instructions. We evaluate our approach on the SPEC CPU 2006 C++ and C benchmarks. We show that collecting context identifiers slows down programs by 0.17 % (geometric mean). We can map these context identifiers to the correct unique call path 80 % of the time for C++ programs and 95 % of the time for C programs.
Diagnosing and Tolerating Bugs in Deployed Systems Committee:
, 2008
"... I am deeply grateful to Kathryn McKinley for supporting and mentor-ing me in many ways. Kathryn has provided invaluable technical expertise and feedback even as we worked in new areas. She has been unwaveringly enthusiastic and positive about students and ideas and projects, and she has been a stron ..."
Abstract
- Add to MetaCart
I am deeply grateful to Kathryn McKinley for supporting and mentor-ing me in many ways. Kathryn has provided invaluable technical expertise and feedback even as we worked in new areas. She has been unwaveringly enthusiastic and positive about students and ideas and projects, and she has been a strong advocate, putting my and other students ’ interests first. I en-tered graduate school uncertain about getting a Ph.D., and I leave inspired to pursue an academic career because of Kathryn. Steve Blackburn has been an enthusiastic supporter and has devoted a lot of his time to solving problems and giving advice, both solicited and unso-licited. Steve, Keshav Pingali, Peter Stone, and Emmett Witchel have given helpful feedback and spent a lot of time reading long documents and attending long talks. Vitaly Shmatikov and Steve Keckler have provided valuable advice and mentoring. David Padua and Craig Zilles were supportive advisors when I was a master’s student at the University of Ilinois. The graduate student community at UT has been incredibly support-ive. I am thankful to have Ben Wiedermann, Xianglong Huang, and Milind Kulkarni as friends and colleagues. I am indebted to them and to the fol-lowing friends and colleagues for their technical and personal support: Kar-

