Detecting equality of variables in programs
POPL '88 Proceedings of the 15th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Introduction to algorithms
A fresh look at optimizing array bound checking
PLDI '90 Proceedings of the ACM SIGPLAN 1990 conference on Programming language design and implementation
Efficiently computing static single assignment form and the control dependence graph
ACM Transactions on Programming Languages and Systems (TOPLAS)
PLDI '92 Proceedings of the ACM SIGPLAN 1992 conference on Programming language design and implementation
Optimization of array subscript range checks
ACM Letters on Programming Languages and Systems (LOPLAS)
Directed hypergraphs and applications
Discrete Applied Mathematics - Special issue: combinatorial structures and algorithms
Dependence-based program analysis
PLDI '93 Proceedings of the ACM SIGPLAN 1993 conference on Programming language design and implementation
Optimizing array bound checks using flow analysis
ACM Letters on Programming Languages and Systems (LOPLAS)
Avoiding conditional branches by code replication
PLDI '95 Proceedings of the ACM SIGPLAN 1995 conference on Programming language design and implementation
Accurate static branch prediction by value range propagation
PLDI '95 Proceedings of the ACM SIGPLAN 1995 conference on Programming language design and implementation
Elimination of redundant array subscript range checks
PLDI '95 Proceedings of the ACM SIGPLAN 1995 conference on Programming language design and implementation
Demand interprocedural dataflow analysis
SIGSOFT '95 Proceedings of the 3rd ACM SIGSOFT symposium on Foundations of software engineering
An incremental algorithm for a generalization of the shortest-path problem
Journal of Algorithms
Precise interprocedural dataflow analysis with applications to constant propagation
TAPSOFT '95 Selected papers from the 6th international joint conference on Theory and practice of software development
Interprocedural conditional branch elimination
Proceedings of the ACM SIGPLAN 1997 conference on Programming language design and implementation
A new algorithm for partial redundancy elimination based on SSA form
Proceedings of the ACM SIGPLAN 1997 conference on Programming language design and implementation
Array SSA form and its use in parallelization
POPL '98 Proceedings of the 25th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A practical framework for demand-driven interprocedural data flow analysis
ACM Transactions on Programming Languages and Systems (TOPLAS)
Complete removal of redundant expressions
PLDI '98 Proceedings of the ACM SIGPLAN 1998 conference on Programming language design and implementation
Using static single assignment form to improve flow-insensitive pointer analysis
PLDI '98 Proceedings of the ACM SIGPLAN 1998 conference on Programming language design and implementation
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
Automatic parallelization of divide and conquer algorithms
Proceedings of the seventh ACM SIGPLAN symposium on Principles and practice of parallel programming
Load-reuse analysis: design and evaluation
Proceedings of the ACM SIGPLAN 1999 conference on Programming language design and implementation
The Jalapeño dynamic optimizing compiler for Java
JAVA '99 Proceedings of the ACM 1999 conference on Java Grande
Deciding Linear Inequalities by Computing Loop Residues
Journal of the ACM (JACM)
Safety checking of machine code
PLDI '00 Proceedings of the ACM SIGPLAN 2000 conference on Programming language design and implementation
Global optimization by suppression of partial redundancies
Communications of the ACM
A fast and usually linear algorithm for global flow analysis (abstract only)
Communications of the ACM
Implementation of an array bound checker
POPL '77 Proceedings of the 4th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Bounded Incremental Computation
Bounded Incremental Computation
Optimization of range checking
SIGPLAN '82 Proceedings of the 1982 SIGPLAN symposium on Compiler construction
Compiling with proofs
Optimizing array reference checking in Java programs
IBM Systems Journal
Graphs and Hypergraphs
Safety checking of machine code
PLDI '00 Proceedings of the ACM SIGPLAN 2000 conference on Programming language design and implementation
Symbolic bounds analysis of pointers, array indices, and accessed memory regions
PLDI '00 Proceedings of the ACM SIGPLAN 2000 conference on Programming language design and implementation
Adaptive optimization in the Jalapeño JVM
OOPSLA '00 Proceedings of the 15th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Proceedings of the 2001 joint ACM-ISCOPE conference on Java Grande
Exploring the Interaction between Java's Implicitly Thrown Exceptions and Instruction Scheduling
International Journal of Parallel Programming
Timestamped whole program path representation and its applications
Proceedings of the ACM SIGPLAN 2001 conference on Programming language design and implementation
Proceedings of the ACM SIGPLAN 2001 conference on Programming language design and implementation
Instance-wise points-to analysis for loop-based dependence testing
ICS '02 Proceedings of the 16th international conference on Supercomputing
Ensuring code safety without runtime checks for real-time control systems
CASES '02 Proceedings of the 2002 international conference on Compilers, architecture, and synthesis for embedded systems
Elimination of Java array bounds checks in the presence of indirection
JGI '02 Proceedings of the 2002 joint ACM-ISCOPE conference on Java Grande
Immutability specification and its applications
JGI '02 Proceedings of the 2002 joint ACM-ISCOPE conference on Java Grande
Debugging via Run-Time Type Checking
FASE '01 Proceedings of the 4th International Conference on Fundamental Approaches to Software Engineering
Typestate Checking of Machine Code
ESOP '01 Proceedings of the 10th European Symposium on Programming Languages and Systems
Optimizing Java-Specific Overheads: Java at the Speed of C?
HPCN Europe 2001 Proceedings of the 9th International Conference on High-Performance Computing and Networking
Deriving Pre-conditions for Array Bound Check Elimination
PADO '01 Proceedings of the Second Symposium on Programs as Data Objects
Efficient Dependence Analysis for Java Arrays
Euro-Par '01 Proceedings of the 7th International Euro-Par Conference Manchester on Parallel Processing
A Framework for Optimizing Java Using Attributes
CC '01 Proceedings of the 10th International Conference on Compiler Construction
Effective Enhancement of Loop Versioning in Java
CC '02 Proceedings of the 11th International Conference on Compiler Construction
A Comprehensive Approach to Array Bounds Check Elimination for Java
CC '02 Proceedings of the 11th International Conference on Compiler Construction
Memory safety without runtime checks or garbage collection
Proceedings of the 2003 ACM SIGPLAN conference on Language, compiler, and tool for embedded systems
CSSV: towards a realistic tool for statically detecting all buffer overflows in C
PLDI '03 Proceedings of the ACM SIGPLAN 2003 conference on Programming language design and implementation
A framework for optimizing Java using attributes
CASCON '00 Proceedings of the 2000 conference of the Centre for Advanced Studies on Collaborative research
Protecting C programs from attacks via invalid pointer dereferences
Proceedings of the 9th European software engineering conference held jointly with 11th ACM SIGSOFT international symposium on Foundations of software engineering
ARCHER: using symbolic, path-sensitive analysis to detect memory access errors
Proceedings of the 9th European software engineering conference held jointly with 11th ACM SIGSOFT international symposium on Foundations of software engineering
Buffer overrun detection using linear programming and static analysis
Proceedings of the 10th ACM conference on Computer and communications security
Extending Path Profiling across Loop Backedges and Procedure Boundaries
Proceedings of the international symposium on Code generation and optimization: feedback-directed and runtime optimization
When and what to compile/optimize in a virtual machine?
ACM SIGPLAN Notices
Complete removal of redundant expressions
ACM SIGPLAN Notices - Best of PLDI 1979-1999
Implicit java array bounds checking on 64-bit architecture
Proceedings of the 18th annual international conference on Supercomputing
Partial redundancy elimination for access expressions by speculative code motion
Software—Practice & Experience
Sentinel PRE: Hoisting beyond Exception Dependency with Dynamic Deoptimization
Proceedings of the international symposium on Code generation and optimization
Memory safety without garbage collection for embedded applications
ACM Transactions on Embedded Computing Systems (TECS)
Symbolic bounds analysis of pointers, array indices, and accessed memory regions
ACM Transactions on Programming Languages and Systems (TOPLAS)
Efficient and effective array bound checking
ACM Transactions on Programming Languages and Systems (TOPLAS)
A greedy strategy for detecting negative cost cycles in networks
Future Generation Computer Systems - Special issue: High-speed networks and services for data-intensive grids: The DataTAG project
A framework for testing security mechanisms for program-based attacks
SESS '05 Proceedings of the 2005 workshop on Software engineering for secure systems—building trustworthy applications
Verifiable annotations for embedded java environments
Proceedings of the 2005 international conference on Compilers, architectures and synthesis for embedded systems
Using Static Analysis to Reduce Dynamic Analysis Overhead
Formal Methods in System Design
A verifiable SSA program representation for aggressive compiler optimization
Conference record of the 33rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
SAFECode: enforcing alias analysis for weakly typed languages
Proceedings of the 2006 ACM SIGPLAN conference on Programming language design and implementation
Backwards-compatible array bounds checking for C with very low overhead
Proceedings of the 28th international conference on Software engineering
Implicit array bounds checking on 64-bit architectures
ACM Transactions on Architecture and Code Optimization (TACO)
Enhancing server availability and security through failure-oblivious computing
OSDI'04 Proceedings of the 6th conference on Symposium on Opearting Systems Design & Implementation - Volume 6
High coverage detection of input-related security facults
SSYM'03 Proceedings of the 12th conference on USENIX Security Symposium - Volume 12
Speculative optimization using hardware-monitored guarded regions for java virtual machines
Proceedings of the 3rd international conference on Virtual execution environments
Array bounds check elimination for the Java HotSpot™ client compiler
Proceedings of the 5th international symposium on Principles and practice of programming in Java
Proceedings of the twenty-second IEEE/ACM international conference on Automated software engineering
A practical and precise inference and specializer for array bound checks elimination
PEPM '08 Proceedings of the 2008 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
Automatic array inlining in java virtual machines
Proceedings of the 6th annual IEEE/ACM international symposium on Code generation and optimization
Removing redundancy via exception check motion
Proceedings of the 6th annual IEEE/ACM international symposium on Code generation and optimization
Fault-safe code motion for type-safe languages
Proceedings of the 6th annual IEEE/ACM international symposium on Code generation and optimization
Design of the Java HotSpot™ client compiler for Java 6
ACM Transactions on Architecture and Code Optimization (TACO)
Type-preserving compilation for large-scale optimizing object-oriented compilers
Proceedings of the 2008 ACM SIGPLAN conference on Programming language design and implementation
Register allocation by puzzle solving
Proceedings of the 2008 ACM SIGPLAN conference on Programming language design and implementation
Speculative improvements to verifiable bounds check elimination
Proceedings of the 6th international symposium on Principles and practice of programming in Java
Static Detection of Place Locality and Elimination of Runtime Checks
APLAS '08 Proceedings of the 6th Asian Symposium on Programming Languages and Systems
Array bounds check elimination in the context of deoptimization
Science of Computer Programming
TAJ: effective taint analysis of web applications
Proceedings of the 2009 ACM SIGPLAN conference on Programming language design and implementation
SoftBound: highly compatible and complete spatial memory safety for c
Proceedings of the 2009 ACM SIGPLAN conference on Programming language design and implementation
A Verifiable, Control Flow Aware Constraint Analyzer for Bounds Check Elimination
SAS '09 Proceedings of the 16th International Symposium on Static Analysis
Soundly Handling Static Fields: Issues, Semantics and Analysis
Electronic Notes in Theoretical Computer Science (ENTCS)
A greedy strategy for detecting negative cost cycles in networks
Future Generation Computer Systems - Special issue: High-speed networks and services for data-intensive grids: The DataTAG project
VMKit: a substrate for managed runtime environments
Proceedings of the 6th ACM SIGPLAN/SIGOPS international conference on Virtual execution environments
PAriCheck: an efficient pointer arithmetic checker for C programs
ASIACCS '10 Proceedings of the 5th ACM Symposium on Information, Computer and Communications Security
Fail-safe ANSI-C compiler: an approach to making C programs secure
ISSS'02 Proceedings of the 2002 Mext-NSF-JSPS international conference on Software security: theories and systems
Fast bounds checking using debug register
HiPEAC'08 Proceedings of the 3rd international conference on High performance embedded architectures and compilers
Z-rays: divide arrays and conquer speed and flexibility
PLDI '10 Proceedings of the 2010 ACM SIGPLAN conference on Programming language design and implementation
CETS: compiler enforced temporal safety for C
Proceedings of the 2010 international symposium on Memory management
Pentagons: A weakly relational abstract domain for the efficient validation of array accesses
Science of Computer Programming
SUDS: an infrastructure for creating dynamic software defect detection tools
Automated Software Engineering
Local redundant polymorphism query elimination
Proceedings of the 8th International Conference on the Principles and Practice of Programming in Java
Monitor optimization via stutter-equivalent loop transformation
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
Architectural support for low overhead detection of memory violations
Proceedings of the Conference on Design, Automation and Test in Europe
A framework for optimizing Java using attributes
CASCON First Decade High Impact Papers
Dynamic elimination of overflow tests in a trace compiler
CC'11/ETAPS'11 Proceedings of the 20th international conference on Compiler construction: part of the joint European conferences on theory and practice of software
Tainted flow analysis on e-SSA-form programs
CC'11/ETAPS'11 Proceedings of the 20th international conference on Compiler construction: part of the joint European conferences on theory and practice of software
Subregion analysis and bounds check elimination for high level arrays
CC'11/ETAPS'11 Proceedings of the 20th international conference on Compiler construction: part of the joint European conferences on theory and practice of software
Adaptive optimization in the Jalapeno JVM
ACM SIGPLAN Notices
SOS: saving time in dynamic race detection with stationary analysis
Proceedings of the 2011 ACM international conference on Object oriented programming systems languages and applications
On-the-fly structure splitting for heap objects
ACM Transactions on Architecture and Code Optimization (TACO) - HIPEAC Papers
SAS'06 Proceedings of the 13th international conference on Static Analysis
Eliminating partially-redundant array-bounds check in the Android Dalvik JIT compiler
Proceedings of the 9th International Conference on Principles and Practice of Programming in Java
Checking memory safety with blast
FASE'05 Proceedings of the 8th international conference, held as part of the joint European Conference on Theory and Practice of Software conference on Fundamental Approaches to Software Engineering
A type system for static and dynamic checking of C++ pointers
Computer Languages, Systems and Structures
Proceedings of the 10th international conference on Mobile systems, applications, and services
Residual investigation: predictive and precise bug detection
Proceedings of the 2012 International Symposium on Software Testing and Analysis
Using dynamic analysis to discover polynomial and array invariants
Proceedings of the 34th International Conference on Software Engineering
Speed and precision in range analysis
SBLP'12 Proceedings of the 16th Brazilian conference on Programming Languages
Parameter based constant propagation
SBLP'12 Proceedings of the 16th Brazilian conference on Programming Languages
MemSafe: ensuring the spatial and temporal memory safety of C at runtime
Software—Practice & Experience
Accelerating Habanero-Java programs with OpenCL generation
Proceedings of the 2013 International Conference on Principles and Practices of Programming on the Java Platform: Virtual Machines, Languages, and Tools
Ball-Larus path profiling across multiple loop iterations
Proceedings of the 2013 ACM SIGPLAN international conference on Object oriented programming systems languages & applications
WatchdogLite: Hardware-Accelerated Compiler-Based Pointer Checking
Proceedings of Annual IEEE/ACM International Symposium on Code Generation and Optimization
Efficient static checker for tainted variable attacks
Science of Computer Programming
Hi-index | 0.00 |
To guarantee typesafe execution, Java and other strongly typed languages require bounds checking of array accesses. Because array-bounds checks may raise exceptions, they block code motion of instructions with side effects, thus preventing many useful code optimizations, such as partial redundancy elimination or instruction scheduling of memory operations. Furthermore, because it is not expressible at bytecode level, the elimination of bounds checks can only be performed at run time, after the bytecode program is loaded. Using existing powerful bounds-check optimizers at run time is not feasible, however, because they are too heavyweight for the dynamic compilation setting.ABCD is a light-weight algorithm for elimination of Array Bounds Checks on Demand. Its design emphasizes simplicity and efficiency. In essence, ABCD works by adding a few edges to the SSA value graph and performing a simple traversal of the graph. Despite its simplicity, ABCD is surprisingly powerful. On our benchmarks, ABCD removes on average 45% of dynamic bound check instructions, sometimes achieving near-ideal optimization. The efficiency of ABCD stems from two factors. First, ABCD works ona sparse representation. As a result, it requires on average fewer than 10 simple analysis steps per bounds check. Second, ABCD is demand-driven. It can be applied to a set of frequently executed (hot) bounds checks, which makes it suitable for the dynamic-compilation setting, in which compile-time cost is constrained but hot statements are known.