Loading...
Searching...
No Matches
remove_instanceof.cpp File Reference
Remove Instance-of Operators.
More...
+ Include dependency graph for remove_instanceof.cpp:
Go to the source code of this file.
Produce an expression of the form classid_field == "A" || classid_field == "B" || ... where A, B, ... are the possible subtypes of target_type.
Replace an instanceof in the expression or guard of the passed instruction of the given function body with an explicit class-identifier test.
Replace every instanceof in the passed function with an explicit class-identifier test.
Replace every instanceof in every function with an explicit class-identifier test.
Replace every instanceof in every function with an explicit class-identifier test.
Detailed Description
Function Documentation
◆ contains_instanceof()
◆ remove_instanceof() [1/4]
Replace every instanceof in the passed function with an explicit class-identifier test.
- Remarks
- Extra auxiliary variables may be introduced into symbol_table.
- Parameters
-
function_identifier name of the goto function function
function The function to work on.
symbol_table The symbol table to add symbols to.
class_hierarchy class hierarchy analysis of symbol_table
message_handler logging output
Definition at line 326 of file remove_instanceof.cpp.
◆ remove_instanceof() [2/4]
Replace an instanceof in the expression or guard of the passed instruction of the given function body with an explicit class-identifier test.
- Remarks
- Extra auxiliary variables may be introduced into symbol_table.
- Parameters
-
function_identifier name of the goto function goto_program
target The instruction to work on.
goto_program The function body containing the instruction.
symbol_table The symbol table to add symbols to.
class_hierarchy class hierarchy analysis of symbol_table
message_handler logging output
Definition at line 306 of file remove_instanceof.cpp.
◆ remove_instanceof() [3/4]
Replace every instanceof in every function with an explicit class-identifier test.
- Remarks
- Extra auxiliary variables may be introduced into symbol_table.
- Parameters
-
goto_functions The functions to work on.
symbol_table The symbol table to add symbols to.
class_hierarchy class hierarchy analysis of symbol_table
message_handler logging output
Definition at line 344 of file remove_instanceof.cpp.
◆ remove_instanceof() [4/4]
Replace every instanceof in every function with an explicit class-identifier test.
- Remarks
- Extra auxiliary variables may be introduced into symbol_table.
- Parameters
-
goto_model The functions to work on and the symbol table to add
class_hierarchy class hierarchy analysis of goto_model's symbol table
message_handler logging output symbols to.
Definition at line 366 of file remove_instanceof.cpp.
◆ subtype_expr()
Produce an expression of the form classid_field == "A" || classid_field == "B" || ... where A, B, ... are the possible subtypes of target_type.
- Parameters
-
classid_field field to compare, usually a @class_identifier field denoting an object's runtime type
target_type the type all of whose subtypes (including itself) should be accepted
class_hierarchy class hierarchy
- Returns
- disjunction of the possible matched subtypes
Definition at line 67 of file remove_instanceof.cpp.