Java Definite Assignments

Consider examples from: Definite Assignments from Java Language Specification

We ignore the question of making sure that final values are initialized

  • focus on making sure that local variables are initialized before their first use

The specification gives a particular precision of data-flow analysis that a compiler must implement to correctly report uninitialized variables

JVM Bytecode verifier also checks for this condition, as well as types of local and stack variables

  • if reading a slot before it is assigned, complains that the slot is unknown