Skip to content

Commit f466751

Browse files
author
Thomas Kiley
authored
Merge pull request #2792 from thk123/thk/lowerings-overview
Add an overview of what lowerings are done [DOC-25]
2 parents 62e7e34 + 31963a3 commit f466751

File tree

1 file changed

+22
-0
lines changed

1 file changed

+22
-0
lines changed

jbmc/src/java_bytecode/README.md

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,28 @@ 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". See Background Concepts for more
15+
information.
16+
17+
The following lowering operations are done on Java bytecode after converting
18+
into a basic `codet` representation.
19+
20+
- \ref java-bytecode-runtime-exceptions "Add runtime exceptions"
21+
- \ref java-bytecode-remove-java-new "Remove `new` calls"
22+
- \ref java-bytecode-remove-exceptions "Remove thrown exceptions"
23+
- \ref java-bytecode-remove-instance-of
24+
- As well as other non-Java specific transformations (see \ref goto-programs for
25+
details on these)
26+
27+
These are performed in `process_goto_function` for example
28+
\ref jbmc_parse_optionst::process_goto_function
29+
30+
Once these lowerings have been completed, you have a GOTO model that can be handled by \ref goto-symex.
931

1032
\section java-bytecode-array-representation How are Java arrays represented in GOTO
1133

0 commit comments

Comments
 (0)