A provably correct stackless intermediate representation for Java bytecode

  • Authors:
  • Delphine Demange;Thomas Jensen;David Pichardie

  • Affiliations:
  • ENS Cachan Antenne de Bretagne, IRISA, France;INRIA, Centre Rennes-Bretagne Atlantique, Rennes, France;INRIA, Centre Rennes-Bretagne Atlantique, Rennes, France

  • Venue:
  • APLAS'10 Proceedings of the 8th Asian conference on Programming languages and systems
  • Year:
  • 2010

Quantified Score

Hi-index 0.00

Visualization

Abstract

The Java virtual machine executes stack-based bytecode. The intensive use of an operand stack has been identified as a major obstacle for static analysis and it is now common for static analysis tools to manipulate a stackless intermediate representation (IR) of bytecode programs. This paper provides such a bytecode transformation, describes its semantic correctness and evaluates its performance. We provide 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. The correctness of this transformation is proved with respect to a relation on execution traces taking into account that the object allocation order is not preserved by the transformation.