Results 1 - 10
of
16
A Framework for Optimizing Java Using Attributes
, 2000
"... This paper presents a framework for supporting the optimization of Java programs using attributes in Java class les. We show how class le attributes may be used to convey both optimization opportunities and prole information to a variety of Java virtual machines including ahead-of-time compilers a ..."
Abstract
-
Cited by 49 (10 self)
- Add to MetaCart
This paper presents a framework for supporting the optimization of Java programs using attributes in Java class les. We show how class le attributes may be used to convey both optimization opportunities and prole information to a variety of Java virtual machines including ahead-of-time compilers and just-in-time compilers. We present our work in the context of Soot, a framework that supports the analysis and transformation of Java bytecode (class les)[21]. We demonstrate the framework with attributes for elimination of array bounds and null pointer checks, and we provide experimental results for the Kae just-in-time compiler, and IBM's High Performance Compiler for Java ahead-of-time compiler. 1 Introduction Java is a clean, portable, object-oriented language that is gaining wide spread acceptance. The target language for Java compilers is Java bytecode which is a platform-independent, stack-based intermediate representation. The bytecode is stored in Java class les, and...
Java Annotation-Aware Just-In-Time (AJIT) Compilation System
, 1999
"... The Java Bytecode language lacks expressiveness for traditional compiler optimizations, making this portable, secure software distribution format inefficient as a program representation for high performance. This inefficiency results from the underlying stack model, as well as the fact that manybyt ..."
Abstract
-
Cited by 22 (0 self)
- Add to MetaCart
The Java Bytecode language lacks expressiveness for traditional compiler optimizations, making this portable, secure software distribution format inefficient as a program representation for high performance. This inefficiency results from the underlying stack model, as well as the fact that manybytecode operations intrinsically include sub-operations (e.g., iaload includes the address computation, arrayboundschecks and the actual load of the array element). The stack model, with no operand registers and limiting access to the top of the stack, prevents the reuse of values and bytecode reordering. In addition, the bytecodes havenomechanism to indicate which sub-operations in the bytecode stream are redundant or subsumed by previous ones. As a consequence, the Java Bytecode language inhibits the expression of important compiler optimizations, including common sub-expression elimination, register allocation and instruction scheduling. The
Array bounds check elimination for the Java HotSpot client compiler
- IN PPPJ ’07: PROCEEDINGS OF THE 5TH INTERNATIONAL SYMPOSIUM ON PRINCIPLES AND PRACTICE OF PROGRAMMING IN JAVA
, 2007
"... Whenever an array element is accessed, Java virtual machines execute a compare instruction to ensure that the index value is within the valid bounds. This reduces the execution speed of Java programs. Array bounds check elimination identifies situations in which such checks are redundant and can be ..."
Abstract
-
Cited by 10 (0 self)
- Add to MetaCart
Whenever an array element is accessed, Java virtual machines execute a compare instruction to ensure that the index value is within the valid bounds. This reduces the execution speed of Java programs. Array bounds check elimination identifies situations in which such checks are redundant and can be removed. We present an array bounds check elimination algorithm for the Java HotSpot TM VM based on static analysis in the just-in-time compiler. The algorithm works on an intermediate representation in static single assignment form and maintains conditions for index expressions. It fully removes bounds checks if it can be proven that they never fail. Whenever possible, it moves bounds checks out of loops. The static number of checks remains the same, but a check inside a loop is likely to be executed more often. If such a check fails, the executing program falls back to interpreted mode, avoiding the problem that an exception is thrown at the wrong place. The evaluation shows a speedup near to the theoretical maximum for the scientific SciMark benchmark suite (40% on average). The algorithm also improves the execution speed for the SPECjvm98 benchmark suite (2 % on average, 12 % maximum).
Using the SafeTSA Representation to Boost the Performance of an Existing Java Virtual Machine
- In 10th International Workshop on Compilers for Parallel Computers
, 2003
"... High-performance just-in-time compilers for Java need to invest considerable effort before actual code generation can commence. SafeTSA, a typed intermediate representation based on SSA form, was designed to ease this burden, decreasing the time required for dynamic compilation, without sacrificing ..."
Abstract
-
Cited by 7 (5 self)
- Add to MetaCart
High-performance just-in-time compilers for Java need to invest considerable effort before actual code generation can commence. SafeTSA, a typed intermediate representation based on SSA form, was designed to ease this burden, decreasing the time required for dynamic compilation, without sacrificing safety or code quality.
Project transPROSE: Reconciling Mobile-Code Security with Execution Efficiency
, 2001
"... transPROSE is a comprehensive research project investigating techniques for transporting programs securely over potentially insecure channels. The central focus of this project is the development of a blueprint for a nextgeneration mobile-code distribution format. A problem of previous approaches to ..."
Abstract
-
Cited by 7 (4 self)
- Add to MetaCart
transPROSE is a comprehensive research project investigating techniques for transporting programs securely over potentially insecure channels. The central focus of this project is the development of a blueprint for a nextgeneration mobile-code distribution format. A problem of previous approaches to mobile-code security has been that the additional provisions for security lead to a loss of efficiency, often to the extent of making an otherwise virtuous security scheme unusable for all but trivial programs. Project transPROSE strives to deviate from the common approach of studying security in isolation and instead focuses simultaneously on multiple aspects of mobile-code quality. Besides security, such aspects include encoding density, speed of dynamic code generation, and the eventual execution performance. This paper gives a high-level overview of project transPROSE and presents initial results.
An Annotation-aware Java Virtual Machine Implementation
, 1999
"... The Javabytecode language lacks expressiveness for traditional compiler optimizations, making this portable, secure software distribution format inefficient as a program representation for high performance. This inefficiency results from the underlying stackmodel,aswell as the fact that manybyteco ..."
Abstract
-
Cited by 3 (0 self)
- Add to MetaCart
The Javabytecode language lacks expressiveness for traditional compiler optimizations, making this portable, secure software distribution format inefficient as a program representation for high performance. This inefficiency results from the underlying stackmodel,aswell as the fact that manybytecode operations intrinsically include sub-operations (e.g., iaload includes the address computation, array bounds checks and the actual load of the array element). The stack model, with no operand registers and limiting access to the top of the stack, prevents the reuse of values and bytecode reordering. In addition, the language has no mechanism to indicate which sub-operations in the Javabytecode stream are redundant or subsumed by previous ones. As a consequence, the Javabytecode language inhibits the expression of important compiler optimizations, including register allocation and instruction scheduling. The Javabytecode stream generated byaJavabytecode compiler is a significantly under-optimized program representation. The most common solution to overcome this inefficiency is the use of a Just-inTime (JIT) compiler to not only generate native code, but perform optimization as well. However, the latter is a time consuming operation in an already time-constrained translation process. In this paper we present an alternative to an optimizing JIT compiler that makes use of code annotations generated byaJavabytecode compiler. These annotations carry information concerning compiler optimizations. During the translation process, an annotation-aware Java Virtual Machine (JVM) system then uses this information to produce high performance native code without performing much of the necessary analyses or transformations. We describe the implementation of a prototype of...
Compile Time Elimination of Null- and Bounds-Checks
- IN 9TH WORKSHOP ON COMPILERS FOR PARALLEL COMPUTERS
, 2001
"... SafeTSA is a new type safe intermediate representation for mobile code based on static single assignment form. We developed SafeTSA as an alternative to the Java Virtual Machine. Programs in ..."
Abstract
-
Cited by 3 (3 self)
- Add to MetaCart
SafeTSA is a new type safe intermediate representation for mobile code based on static single assignment form. We developed SafeTSA as an alternative to the Java Virtual Machine. Programs in
A Low-Footprint Java-to-Native Compilation Scheme Using Formal Methods
- in "Proc. 7th IFIP Conference on Smart Card Research and Advanced Applications (CARDIS’06
, 2006
"... Abstract. Ahead-of-Time and Just-in-Time compilation are common ways to improve runtime performances of restrained systems like Java Card by turning critical Java methods into native code. However, native code is much bigger than Java bytecode, which severely limits or even forbids these practices f ..."
Abstract
-
Cited by 3 (0 self)
- Add to MetaCart
Abstract. Ahead-of-Time and Just-in-Time compilation are common ways to improve runtime performances of restrained systems like Java Card by turning critical Java methods into native code. However, native code is much bigger than Java bytecode, which severely limits or even forbids these practices for devices with memory constraints. In this paper, we describe and evaluate a method for reducing nativelycompiled code by suppressing runtime exception check sites, which are emitted when compiling bytecodes that may potentially throw runtime exceptions. This is made possible by completing the Java program with JML annotations, and using a theorem prover in order to formally prove that the compiled methods never throw runtime exceptions. Runtime exception check sites can then safely be removed from the generated native code, as it is proved they will never be entered. We have experimented our approach on several card-range and embedded Java applications, and were able to remove almost all the exception check sites. Results show memory footprints for native code that are up to 70% smaller than the non-optimized version, and sometimes as low than 115% the size of the Java bytecode when compiled for ARM thumb. 1
Verifying Data Flow Optimization for Just-in-Time Compilation
, 2002
"... Annotations are often added to mobile code to reduce the optimization burden of just-intime compilers. However, these annotations are not checked for correctness and must be trusted---incorrect or malicious annotations could lead to the generation of incorrect or insecure code. We present a time- ..."
Abstract
-
Cited by 2 (0 self)
- Add to MetaCart
Annotations are often added to mobile code to reduce the optimization burden of just-intime compilers. However, these annotations are not checked for correctness and must be trusted---incorrect or malicious annotations could lead to the generation of incorrect or insecure code. We present a time- and space efficient method for verifying the results of the large class of data flow optimizations. This allows the safe movement of computationintensive optimizations away from the code consumer towards the code producer.
A Type-Safe Mobile-Code Representation Aimed at Supporting Dynamic Optimization At The Target Site
- 2001 ACM Sigplan Conference on Programming Language Design and Implementation (PLDI 2001). Snowbird
"... We introduce SafeTSA, a type-safe mobile code representation based on static single assignment form. We are developing SafeTSA as an alternative to the Java Virtual Machine, over which it has several advantages: (1) SafeTSA is better suited as input to optimizing dynamic code generators and allows C ..."
Abstract
-
Cited by 1 (0 self)
- Add to MetaCart
We introduce SafeTSA, a type-safe mobile code representation based on static single assignment form. We are developing SafeTSA as an alternative to the Java Virtual Machine, over which it has several advantages: (1) SafeTSA is better suited as input to optimizing dynamic code generators and allows CSE to be performed at the code producer's site. (2) SafeTSA provides incorruptible referential integrity and uses "type separation" to achieve intrinsic type safety. These properties reduce the code verification effort at the code consumer's site considerably.

