|
Jlm
|
Memory State Encoder. More...
#include <MemoryStateEncoder.hpp>
Classes | |
| class | Context |
| Context for the memory state encoder. More... | |
Public Member Functions | |
| ~MemoryStateEncoder () noexcept | |
| MemoryStateEncoder () | |
| MemoryStateEncoder (const MemoryStateEncoder &)=delete | |
| MemoryStateEncoder (MemoryStateEncoder &&)=delete | |
| MemoryStateEncoder & | operator= (const MemoryStateEncoder &)=delete |
| MemoryStateEncoder & | operator= (MemoryStateEncoder &&)=delete |
| void | Encode (rvsdg::RvsdgModule &rvsdgModule, const ModRefSummary &modRefSummary, util::StatisticsCollector &statisticsCollector) |
Static Private Member Functions | |
| static rvsdg::SimpleNode & | ReplaceLoadNode (const rvsdg::SimpleNode &node, const std::vector< rvsdg::Output * > &memoryStates) |
| static rvsdg::SimpleNode & | ReplaceStoreNode (const rvsdg::SimpleNode &node, const std::vector< rvsdg::Output * > &memoryStates) |
| static std::vector< rvsdg::Output * > | ReplaceMemcpyNode (const rvsdg::SimpleNode &memcpyNode, const std::vector< rvsdg::Output * > &memoryStates) |
| static std::vector< rvsdg::Output * > | ReplaceMemsetNode (const rvsdg::SimpleNode &memsetNode, const std::vector< rvsdg::Output * > &memoryStates) |
Private Attributes | |
| std::unique_ptr< Context > | Context_ |
Memory State Encoder.
A memory state encoder encodes a points-to graph in the RVSDG. The basic idea is that there exists a one-to-one correspondence between memory nodes in the points-to graph and memory states in the RVSDG, i.e., for each memory node in the points-to graph, there exists a memory state edge in the RVSDG. A memory state encoder routes these state edges through the RVSDG's structural nodes and ensures that simple nodes operating on a memory location represented by a corresponding memory node in the points-to graph are sequentialized with the respective memory state edge. For example, a store node that modifies a global variable needs to have the respective state edge that corresponds to its memory location routed through it, i.e., the store node is sequentialized by this state edge. Such an encoding ensures that the ordering of side-effecting operations touching on the same memory locations is preserved, while rendering operations independent that are not operating on the same memory locations.
Definition at line 53 of file MemoryStateEncoder.hpp.
|
defaultnoexcept |
|
default |
|
delete |
|
delete |
| void jlm::llvm::aa::MemoryStateEncoder::Encode | ( | rvsdg::RvsdgModule & | rvsdgModule, |
| const ModRefSummary & | modRefSummary, | ||
| util::StatisticsCollector & | statisticsCollector | ||
| ) |
Definition at line 629 of file MemoryStateEncoder.cpp.
|
private |
Definition at line 756 of file MemoryStateEncoder.cpp.
|
private |
Definition at line 872 of file MemoryStateEncoder.cpp.
|
private |
Definition at line 1018 of file MemoryStateEncoder.cpp.
|
private |
Definition at line 851 of file MemoryStateEncoder.cpp.
|
private |
Definition at line 1024 of file MemoryStateEncoder.cpp.
|
private |
Definition at line 1041 of file MemoryStateEncoder.cpp.
|
private |
Definition at line 1063 of file MemoryStateEncoder.cpp.
|
private |
Definition at line 932 of file MemoryStateEncoder.cpp.
|
private |
Definition at line 940 of file MemoryStateEncoder.cpp.
|
private |
Definition at line 988 of file MemoryStateEncoder.cpp.
|
private |
Definition at line 810 of file MemoryStateEncoder.cpp.
|
private |
Definition at line 782 of file MemoryStateEncoder.cpp.
|
private |
Definition at line 904 of file MemoryStateEncoder.cpp.
|
private |
Definition at line 918 of file MemoryStateEncoder.cpp.
|
private |
Definition at line 1012 of file MemoryStateEncoder.cpp.
|
private |
Definition at line 658 of file MemoryStateEncoder.cpp.
|
private |
Definition at line 708 of file MemoryStateEncoder.cpp.
|
private |
Definition at line 831 of file MemoryStateEncoder.cpp.
|
private |
Definition at line 679 of file MemoryStateEncoder.cpp.
|
private |
Definition at line 1085 of file MemoryStateEncoder.cpp.
|
private |
Definition at line 1097 of file MemoryStateEncoder.cpp.
|
private |
Definition at line 1119 of file MemoryStateEncoder.cpp.
|
delete |
|
delete |
|
staticprivate |
Replace loadNode with a new copy that takes the provided memoryStates. All users of the outputs of loadNode are redirected to the respective outputs of the newly created copy.
| node | A LoadNode. |
| memoryStates | The memory states the new LoadNode should consume. |
Definition at line 1144 of file MemoryStateEncoder.cpp.
|
staticprivate |
Replace memcpyNode with a new copy that takes the provided memoryStates. All users of the outputs of memcpyNode are redirected to the respective outputs of the newly created copy.
| memcpyNode | A rvsdg::SimpleNode representing a MemCpyOperation. |
| memoryStates | The memory states the new memcpy node should consume. |
Definition at line 1219 of file MemoryStateEncoder.cpp.
|
staticprivate |
Replace memsetNode with a new copy that takes the provided memoryStates. All users of the outputs of memsetNode are redirected to the respective outputs of the newly created copy.
| memsetNode | A rvsdg::SimpleNode representing a MemSetOperation. |
| memoryStates | The memory states the new memset node should consume. |
Definition at line 1251 of file MemoryStateEncoder.cpp.
|
staticprivate |
Replace storeNode with a new copy that takes the provided memoryStates. All users of the outputs of storeNode are redirected to the respective outputs of the newly created copy.
| node | A StoreNode. |
| memoryStates | The memory states the new StoreNode should consume. |
Definition at line 1186 of file MemoryStateEncoder.cpp.
|
private |
Definition at line 205 of file MemoryStateEncoder.hpp.