Skip to content

Commit 38e9801

Browse files
author
thk123
committed
Add an overview of what lowerings are done
1 parent 1351169 commit 38e9801

File tree

1 file changed

+21
-0
lines changed

1 file changed

+21
-0
lines changed

jbmc/src/java_bytecode/README.md

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,27 @@ This module provides a front end for Java.
66
\section java-bytecode-conversion-section Overview of conversion from bytecode to codet
77

88
To be documented.
9+
\subsection java-bytecode-lowering-to-goto Lowering to GOTO
10+
11+
The Java language contains high-level programming concepts like virtual
12+
functions and throw/catch semantics. These need to be rewritten in terms of
13+
other, more fundamental operations in order to analyse the Java program. This
14+
operation is referred to as "lowering".
15+
16+
The following lowering operations are done on Java bytecode after converting
17+
into a basic `codet` representation.
18+
19+
- \ref java-bytecode-runtime-exceptions "Add runtime exceptions"
20+
- \ref java-bytecode-remove-java-new "Remove `new` calls"
21+
- \ref java-bytecode-remove-exceptions "Remove thrown exceptions"
22+
- \ref java-bytecode-remove-instance-of
23+
- As well as other non-Java specific transformations (see \ref goto-programs for
24+
details on these)
25+
26+
These are performed in `process_goto_function` for example
27+
\ref jbmc_parse_optionst::process_goto_function
28+
29+
Once these lowerings have been completed, you have a GOTO model that can be handled by \ref goto-symex.
930

1031
\section java-bytecode-array-representation How are Java arrays represented in GOTO
1132

0 commit comments

Comments
 (0)