#include <ci_lazy_methods_needed.h>
Definition at line 25 of file ci_lazy_methods_needed.h.
◆ ci_lazy_methods_neededt()
◆ add_all_needed_classes()
void ci_lazy_methods_neededt::add_all_needed_classes |
( |
const pointer_typet & |
pointer_type | ) |
|
Add to the needed classes all classes specified, the replacement type if it will be replaced, and all fields it contains.
- Parameters
-
pointer_type | The type to add |
Definition at line 94 of file ci_lazy_methods_needed.cpp.
◆ add_clinit_call()
void ci_lazy_methods_neededt::add_clinit_call |
( |
const irep_idt & |
class_id | ) |
|
|
private |
For a given class id, note that its static initializer is needed.
This applies the same logic to the given class that java_bytecode_convert_methodt::get_clinit_call
applies e.g. to classes whose constructor we call in a method body. This duplication is unavoidable because ci_lazy_methods essentially has to go through the same logic as __CPROVER_start in its initial setup, and because return values of opaque methods need to be considered in ci_lazy_methods too.
- Parameters
-
class_id | The given class id |
Definition at line 42 of file ci_lazy_methods_needed.cpp.
◆ add_cprover_nondet_initialize_if_it_exists()
void ci_lazy_methods_neededt::add_cprover_nondet_initialize_if_it_exists |
( |
const irep_idt & |
class_id | ) |
|
|
private |
For a given class id, if cproverNondetInitialize exists on it or any of its ancestors then note that it is needed.
- Parameters
-
class_id | The given class id |
Definition at line 52 of file ci_lazy_methods_needed.cpp.
◆ add_needed_class()
bool ci_lazy_methods_neededt::add_needed_class |
( |
const irep_idt & |
class_symbol_name | ) |
|
Notes class class_symbol_name
will be instantiated, or a static field belonging to it will be accessed.
Also notes that its static initializer is therefore reachable.
- Parameters
-
class_symbol_name | class name; must exist in symbol table. |
- Returns
- Returns true if
class_symbol_name
is new (not seen before).
Definition at line 72 of file ci_lazy_methods_needed.cpp.
◆ add_needed_method()
void ci_lazy_methods_neededt::add_needed_method |
( |
const irep_idt & |
method_symbol_name | ) |
|
Notes method_symbol_name
is referenced from some reachable function, and should therefore be elaborated.
- Parameters
-
method_symbol_name | method name; must exist in symbol table. |
Definition at line 28 of file ci_lazy_methods_needed.cpp.
◆ gather_field_types()
For a given type, gather all fields referenced by that type.
- Parameters
-
class_type | root of class tree to search |
ns | global namespaces. |
Definition at line 147 of file ci_lazy_methods_needed.cpp.
◆ initialize_instantiated_classes_from_pointer()
void ci_lazy_methods_neededt::initialize_instantiated_classes_from_pointer |
( |
const pointer_typet & |
pointer_type, |
|
|
const namespacet & |
ns |
|
) |
| |
|
private |
Build up list of methods for types for a specific pointer type.
See add_all_needed_classes
for more details.
- Parameters
-
pointer_type | The type to gather methods for. |
ns | global namespace |
Definition at line 116 of file ci_lazy_methods_needed.cpp.
◆ callable_methods
std::unordered_set<irep_idt>& ci_lazy_methods_neededt::callable_methods |
|
private |
◆ instantiated_classes
std::unordered_set<irep_idt>& ci_lazy_methods_neededt::instantiated_classes |
|
private |
◆ pointer_type_selector
◆ symbol_table
The documentation for this class was generated from the following files: