Results 1 -
4 of
4
Marmot: An Optimizing Compiler for Java
, 1998
"... The Marmot system is a research platform for studying the implementation of high level programming languages. It currently comprises an optimizing native-code compiler, runtime system, and libraries for a large subset of Java. Marmot integrates well-known representation, optimization, code generat ..."
Abstract
-
Cited by 63 (6 self)
- Add to MetaCart
The Marmot system is a research platform for studying the implementation of high level programming languages. It currently comprises an optimizing native-code compiler, runtime system, and libraries for a large subset of Java. Marmot integrates well-known representation, optimization, code generation, and runtime techniques with a few Java-specific features to achieve competitive performance. This paper contains a description of the Marmot system design, along with highlights of our experience applying and adapting traditional implementation techniques to Java. A detailed performance evaluation assesses both Marmot's overall performance relative to other Java and C++ implementations and the relative costs of various Java language features in Marmot-compiled code. Our experience with Marmot has demonstrated that well-known compilation techniques can produce very good performance for static Java applications---comparable or superior to other Java systems, and approaching that o...
Quicksilver: A Quasi-Static Compiler for Java
, 2000
"... This paper presents the design and implementation of the Quicksilver 1 quasi-static compiler for Java. Quasi-static compilation is a new approach that combines the benefits of static and dynamic compilation, while maintaining compliance with the Java standard, including support of its dynamic fea ..."
Abstract
-
Cited by 35 (6 self)
- Add to MetaCart
This paper presents the design and implementation of the Quicksilver 1 quasi-static compiler for Java. Quasi-static compilation is a new approach that combines the benefits of static and dynamic compilation, while maintaining compliance with the Java standard, including support of its dynamic features. A quasi-static compiler relies on the generation and reuse of persistent code images to reduce the overhead of compilation during program execution, and to provide identical, testable and reliable binaries over different program executions. At runtime, the quasi-static compiler adapts pre-compiled binaries to the current JVM instance, and uses dynamic compilation of the code when necessary to support dynamic Java features. Our system allows interprocedural program optimizations to be performed while maintaining binary compatibility. Experimental data obtained using a preliminary implementation of a quasi-static compiler in the Jalape~no JVM clearly demonstrates the benefits of our app...
The Case for Profile-Directed Selection of Garbage Collectors
, 2000
"... Many garbage-cE6zcc systems use a single garbagecrb lecbag algorithmacrit allapplicRz"FRN It has long been known that thisci pro duc poor performanc onapplic# tions forwhic h thatcatz#E6N is not well suited. In some systems,suc h as those thatexec#6 stand-alonectand-a execd-alone an appropriatecppro ..."
Abstract
-
Cited by 26 (3 self)
- Add to MetaCart
Many garbage-cE6zcc systems use a single garbagecrb lecbag algorithmacrit allapplicRz"FRN It has long been known that thisci pro duc poor performanc onapplic# tions forwhic h thatcatz#E6N is not well suited. In some systems,suc h as those thatexec#6 stand-alonectand-a execd-alone an appropriatecppropri foreac happlic"FER ca be selecz" from a pool of availablecblezqS96 and tuned by using profile information. In a study of 20 benc hmarks and several cz99EOz"FS cz99EO with the Marmot optimizing Java-to-native c#qRO#z" for everycyzq#SFO there was at least one benc hmark that would have been at least 15% faster with a more appropriatecpropriat The czqE69Oz" are acO ying cgz9qFqz" a generationalce yingcgzqq6Oqz whic h is cz bined witheac h of 4 di#erent write barriers, and the null c6NN9z"EF whic h allo cloz but neverczq#qRSz A detailed analysis of storage managementc#Nq shows how they vary by applicEq#9 and cz#q9SFz" 1. INTRODUCTION Automatic storage management eliminates a significz t so...
Type Elaboration and Subtype Completion for Java Bytecode
- IN PROCEEDINGS 27TH ACM SIGPLAN-SIGACT SYMPOSIUM ON PRINCIPLES OF PROGRAMMING LANGUAGES
, 1999
"... Java source code is strongly typed, but the translation from Java source to bytecode omits much of the type information originally contained within methods. Type elaboration is a technique for reconstructing strongly typed programs from incompletely typed bytecode by inferring types for local variab ..."
Abstract
-
Cited by 13 (0 self)
- Add to MetaCart
Java source code is strongly typed, but the translation from Java source to bytecode omits much of the type information originally contained within methods. Type elaboration is a technique for reconstructing strongly typed programs from incompletely typed bytecode by inferring types for local variables. There are situations where, technically, there are not enough types in the original type hierarchy to type a bytecode program. Subtype completion is a technique for adding necessary types to an arbitrary type hierarchy to make type elaboration possible for all verifiable Java bytecode. Type elaboration with subtype completion has been implemented as part of the Marmot Java compiler.

