scispace - formally typeset
Open AccessProceedings ArticleDOI

A non-null annotation inferencer for Java bytecode

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

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

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

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.
Related Papers (5)