Skip to content

Commit 72387b1

Browse files
author
thk123
committed
Add an overview of what lowerings are done
1 parent dbd6988 commit 72387b1

File tree

1 file changed

+15
-0
lines changed

1 file changed

+15
-0
lines changed

jbmc/src/java_bytecode/README.md

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,21 @@ 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 functions and throw/catch semantics. We need to rewrite these in terms of other, more fundamental operations in order to analyse it. This operation is referred to as "lowering".
12+
13+
The following lowering operations are done on java bytecode after converting into a basic codet representation.
14+
15+
- \ref java-bytecode-runtime-exceptions "Add runtime exceptions"
16+
- \ref java-bytecode-remove-java-new "Remove new calls"
17+
- \ref java-bytecode-remove-exceptions "Remove thrown exceptions"
18+
- As well as other non-java specific transformations (see \ref goto-programs for details on these)
19+
20+
These are performed in `process_goto_function` for example
21+
\ref jbmc_parse_optionst::process_goto_function
22+
23+
Once these lowerings have been completed, you have a GOTO model that can be analysed.
924

1025
\section java-bytecode-object-factory Object Factory
1126

0 commit comments

Comments
 (0)