Remove exception handling. More...
#include "remove_exceptions.h"#include "remove_instanceof.h"#include <util/c_types.h>#include <util/pointer_expr.h>#include <util/std_code.h>#include <goto-programs/goto_model.h>#include <goto-programs/remove_skip.h>#include <analyses/uncaught_exceptions_analysis.h>#include <linking/static_lifetime_init.h>#include "java_expr.h"#include "java_types.h"Go to the source code of this file.
Remove exception handling.
Definition in file remove_exceptions.cpp.
removes throws/CATCH-POP/CATCH-PUSH from a single GOTO program, replacing them with explicit exception propagation.
Removes 'throw x' and CATCH-PUSH/CATCH-POP and adds the required instrumentation (GOTOs and assignments) This does not introduce instanceof expressions.
Note this is somewhat less accurate than the whole-goto-model version, because we can't inspect other functions to determine whether they throw or not, and therefore must assume they do and always introduce post-call exception dispatch.
@inflight_exception global may be added if not already present. It will not be initialised; that is the caller's responsibility. Definition at line 723 of file remove_exceptions.cpp.
removes throws/CATCH-POP/CATCH-PUSH, replacing them with explicit exception propagation.
Removes 'throw x' and CATCH-PUSH/CATCH-POP and adds the required instrumentation (GOTOs and assignments) This does not introduce instanceof expressions.
@inflight_exception global may be added to its symbol table if not already present. It will not be initialised; that is the caller's responsibility. Definition at line 752 of file remove_exceptions.cpp.
removes throws/CATCH-POP/CATCH-PUSH
Definition at line 687 of file remove_exceptions.cpp.
removes throws/CATCH-POP/CATCH-PUSH from a single GOTO program, replacing them with explicit exception propagation.
Removes 'throw x' and CATCH-PUSH/CATCH-POP and adds the required instrumentation (GOTOs and assignments) This introduces instanceof expressions.
Note this is somewhat less accurate than the whole-goto-model version, because we can't inspect other functions to determine whether they throw or not, and therefore must assume they do and always introduce post-call exception dispatch.
@inflight_exception global may be added if not already present. It will not be initialised; that is the caller's responsibility. Definition at line 656 of file remove_exceptions.cpp.
removes throws/CATCH-POP/CATCH-PUSH, replacing them with explicit exception propagation.
Removes 'throw x' and CATCH-PUSH/CATCH-POP and adds the required instrumentation (GOTOs and assignments) This introduces instanceof expressions.
@inflight_exception global may be added to its symbol table if not already present. It will not be initialised; that is the caller's responsibility. Definition at line 678 of file remove_exceptions.cpp.
removes throws/CATCH-POP/CATCH-PUSH
Definition at line 623 of file remove_exceptions.cpp.