Design and validation of computer protocols
Design and validation of computer protocols
Java virtual machine
Efficient Java exception handling in just-in-time compilation
Proceedings of the ACM 2000 conference on Java Grande
Extended static checking for Java
PLDI '02 Proceedings of the ACM SIGPLAN 2002 Conference on Programming language design and implementation
POPL '77 Proceedings of the 4th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Java Virtual Machine Specification
Java Virtual Machine Specification
The Java Language Specification
The Java Language Specification
A Graph-Free Approach to Data-Flow Analysis
CC '02 Proceedings of the 11th International Conference on Compiler Construction
Decompiling Java Bytecode: Problems, Traps and Pitfalls
CC '02 Proceedings of the 11th International Conference on Compiler Construction
Theoretical Computer Science - Foundations of software science and computation structures
Kawa: compiling dynamic languages to the Java VM
ATEC '98 Proceedings of the annual conference on USENIX Annual Technical Conference
Combined Static and Dynamic Analysis
Electronic Notes in Theoretical Computer Science (ENTCS)
Exact roots for a real-time garbage collector
JTRES '06 Proceedings of the 4th international workshop on Java technologies for real-time and embedded systems
WCET analysis for a Java processor
JTRES '06 Proceedings of the 4th international workshop on Java technologies for real-time and embedded systems
Worst-case execution time analysis for a Java processor
Software—Practice & Experience
Hi-index | 0.00 |
In Java bytecode, intra-method subroutines are employed to represent code in ''finally'' blocks. The use of such polymorphic subroutines within a method makes bytecode analysis very difficult. Fortunately, such subroutines can be eliminated through recompilation or inlining. Inlining is the obvious choice since it does not require changing compilers or access to the source code. It also allows transformation of legacy bytecode. However, the combination of nested, non-contiguous subroutines with overlapping exception handlers poses a difficult challenge. This paper presents an algorithm that successfully solves all these problems without producing superfluous instructions. Furthermore, inlining can be combined with bytecode simplification, using abstract bytecode. We show how this abstration is extended to the full set of instructions and how it simplifies static and dynamic analysis.