Unwind loops in static initializers. More...
#include "java_enum_static_init_unwind_handler.h"#include <util/invariant.h>#include <util/ssa_expr.h>#include <util/suffix.h>#include <goto-symex/call_stack.h>#include "java_utils.h"Go to the source code of this file.
Unwind loops in static initializers.
Definition in file java_enum_static_init_unwind_handler.cpp.
Check if we may be in a function that loops over the cases of an enumeration (note we return a candidate function that matches a pattern; our caller must verify it really belongs to an enumeration).
At the moment we know of two cases that definitely do so:
Definition at line 32 of file java_enum_static_init_unwind_handler.cpp.
Unwind handler that special-cases the clinit (static initializer) functions of enumeration classes, and VALUES array cloning in their values() methods.
When java_bytecode_convert_classt has annotated them with a size of the enumeration type, this forces unwinding of any loop in the static initializer to at least that many iterations, with intent to permit population / copying of the enumeration's value array.
Definition at line 70 of file java_enum_static_init_unwind_handler.cpp.