A non-null annotation inferencer for Java bytecode
Laurent Hubert
- pp 36-42
TLDR
A non-null annotations inferencer for the Java bytecode language and a substantial improvement in the precision is shown and, despite being a whole-program analysis, production applications can be analyzed within minutes.Abstract:
We present a non-null annotations inferencer for the Java bytecode language. We previously proposed an analysis to infer non-null annotations and proved it soundness and completeness with respect to a state of the art type system. This paper proposes extensions to our former analysis in order to deal with the Java bytecode language. We have implemented both analyses and compared their behaviour on several benchmarks. The results show a substantial improvement in the precision and, despite being a whole-program analysis, production applications can be analyzed within minutes.read more
Citations
More filters
Proceedings ArticleDOI
Freedom before commitment: a lightweight type system for object initialisation
TL;DR: This work presents a type system that tracks which objects are fully initialised and which are still under initialisation, and believes it to be the first such system suitable for mainstream use.
Book ChapterDOI
Experiences with PDG-Based IFC
TL;DR: This paper presents the implementation and evaluation of the first implementation of a dependence-graph based analysis that accepts full Java bytecode, and shows that the security policy can be annotated in a succinct manner and the scalability of the analysis is not limited by the sheer size of either the security lattice or the dependence graph that represents the program.
Book ChapterDOI
A provably correct stackless intermediate representation for Java bytecode
TL;DR: This paper provides the semantic foundations for proving that an initial program and its IR behave similarly, in particular with respect to object creation and throwing of exceptions, and describes its semantic correctness and evaluates its performance.
Journal ArticleDOI
Designing a verifying compiler
David J. Pearce,Lindsay Groves +1 more
TL;DR: A technical overview of the verifying compiler is presented and the numerous design decisions made are documented, which hope to provide a useful resource for those building verifying compilers.
Book ChapterDOI
Sawja: static analysis workshop for java
Laurent Hubert,Nicolas Barré,Frédéric Besson,Delphine Demange,Thomas Jensen,Vincent Monfort,David Pichardie,Tiphaine Turpin +7 more
TL;DR: Sawja as mentioned in this paper is a static analysis workshop for Java that provides OCaml modules for efficiently manipulating Java bytecode programs, including efficient functional data-structures for representing a program with implicit sharing and lazy parsing, an intermediate stackless representation, and fast computation and manipulation of complete programs.
References
More filters
Proceedings ArticleDOI
Soot: a Java bytecode optimization framework
TL;DR: Soot, a framework for optimizing Java* bytecode, is implemented in Java and supports three intermediate representations for representing Java bytecode: Baf, a streamlined representation of bytecode which is simple to manipulate; Jimple, a typed 3-address intermediate representation suitable for optimization; and Grimp, an aggregated version of Jimple suitable for decompilation.
Journal ArticleDOI
Analysis of pointers and structures
TL;DR: The analysis presented obtains useful information about linked data structures and a simple extension obtains aliasing information for entire data structures that previously was obtained only through declarations.
Book ChapterDOI
Houdini, an Annotation Assistant for ESC/Java
TL;DR: Houdini is presented, an annotation assistant for the modular checker ESC/Java, which generates a large number of candidate annotations and uses ESC/ Java to verify or refute each of these annotations.
Journal ArticleDOI
Control flow analysis in scheme
TL;DR: Control flow analysis is presented, which is applicable not only to Scheme, but also to related languages, such as Common Lisp and ML, and extensions and limitations are discussed.
Book
Java Virtual Machine
Jon Meyer,Troy Downing +1 more
TL;DR: This text is a comprehensive programming guide for the Java Virtual Machine, providing an overview and reference of the JVM, and it enbles users to create their own implementations of theJVM or write their own compilers that create Java object code.