Using abstract interpretation to add type checking for interfaces in Java bytecode verification

  • Authors:
  • Nicoletta De Francesco;Giuseppe Lettieri;Luca Martini

  • Affiliations:
  • Dipartimento di Ingegneria dellInformazione, Università di Pisa, Largo L. Lazzarino 2, 56122 Pisa, Italy;Dipartimento di Ingegneria dellInformazione, Università di Pisa, Largo L. Lazzarino 2, 56122 Pisa, Italy;Dipartimento di Ingegneria dellInformazione, Università di Pisa, Largo L. Lazzarino 2, 56122 Pisa, Italy

  • Venue:
  • Theoretical Computer Science
  • Year:
  • 2010

Quantified Score

Hi-index 5.23

Visualization

Abstract

Java interface types support multiple inheritance. Because of this, the standard bytecode verifier ignores them, since it is not able to model the class hierarchy as a lattice. Thus, type checks on interfaces are performed at run time. We propose a verification methodology that removes the need for run-time checks. The methodology consists of: (1) an augmented verifier that is very similar to the standard one, but is also able to check for interface types in most cases; (2) for all other cases, a set of additional simpler verifiers, each one specialized for a single interface type. We obtain these verifiers in a systematic way by using abstract interpretation techniques. Finally, we describe an implementation of the methodology and evaluate it on a large set of benchmarks.