Optimizing array bound checks using flow analysis
ACM Letters on Programming Languages and Systems (LOPLAS)
Elimination of redundant array subscript range checks
PLDI '95 Proceedings of the ACM SIGPLAN 1995 conference on Programming language design and implementation
Proceedings of the 24th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
From system F to typed assembly language
POPL '98 Proceedings of the 25th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A type system for Java bytecode subroutines
POPL '98 Proceedings of the 25th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Eliminating array bound checking through dependent types
PLDI '98 Proceedings of the ACM SIGPLAN 1998 conference on Programming language design and implementation
The design and implementation of a certifying compiler
PLDI '98 Proceedings of the ACM SIGPLAN 1998 conference on Programming language design and implementation
A type system for object initialization in the Java bytecode language
Proceedings of the 13th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
A simple, comprehensive type system for Java bytecode subroutines
Proceedings of the 26th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Dependent types in practical programming
Proceedings of the 26th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Design, implementation, and evaluation of optimizations in a just-in-time compiler
JAVA '99 Proceedings of the ACM 1999 conference on Java Grande
Java Virtual Machine Specification
Java Virtual Machine Specification
Stack-Based Typed Assembly Language
TIC '98 Proceedings of the Second International Workshop on Types in Compilation
A Dependently Typed Assembly Language
A Dependently Typed Assembly Language
Implicit java array bounds checking on 64-bit architecture
Proceedings of the 18th annual international conference on Supercomputing
Implicit array bounds checking on 64-bit architectures
ACM Transactions on Architecture and Code Optimization (TACO)
Array bounds check elimination for the Java HotSpot™ client compiler
Proceedings of the 5th international symposium on Principles and practice of programming in Java
Array bounds check elimination in the context of deoptimization
Science of Computer Programming
Fast bounds checking using debug register
HiPEAC'08 Proceedings of the 3rd international conference on High performance embedded architectures and compilers
Certified result checking for polyhedral analysis of bytecode programs
TGC'10 Proceedings of the 5th international conference on Trustworthly global computing
A provably correct stackless intermediate representation for Java bytecode
APLAS'10 Proceedings of the 8th Asian conference on Programming languages and systems
Formal methods for smartcard security
Foundations of Security Analysis and Design III
Hi-index | 0.00 |
In a standard Java implementation, a Java program is compiled into Java bytecode, which is then interpreted by Java virtual machine (JVM). We refer to the bytecode language as Java virtual machine language in this paper. for safety concerns, JVM performs run-time array bounds checking to detect out-of-bounds array access. Unfortunately, this practice can be prohibitively expensive in cases involving numerical computation.We propose a type-theoretic approach to eliminating run-time array bound checks in JVML and demonstrate that the property of safe array access can be readily captured with a restricted form of dependent type system and therefore enforced through type-checking. We focus on a language JVMLa, which is basically a subset of JVML with array access instructions, and prove that the execution of a well-typed JVMLa program can never cause memory violations.