MLIR
20.0.0git
|
This is the implementation of the StorageUniquer class. More...
Public Types | |
using | BaseStorage = StorageUniquer::BaseStorage |
using | StorageAllocator = StorageUniquer::StorageAllocator |
Public Member Functions | |
bool | hasParametricStorage (TypeID id) |
Check if an instance of a parametric storage class exists. More... | |
BaseStorage * | getOrCreate (TypeID id, unsigned hashValue, function_ref< bool(const BaseStorage *)> isEqual, function_ref< BaseStorage *(StorageAllocator &)> ctorFn) |
Get or create an instance of a parametric type. More... | |
LogicalResult | mutate (TypeID id, BaseStorage *storage, function_ref< LogicalResult(StorageAllocator &)> mutationFn) |
Run a mutation function on the provided storage object in a thread-safe way. More... | |
StorageAllocator & | getThreadSafeAllocator () |
Return an allocator that can be used to safely allocate instances on the current thread. More... | |
BaseStorage * | getSingleton (TypeID id) |
Get or create an instance of a singleton storage class. More... | |
bool | hasSingleton (TypeID id) const |
Check if an instance of a singleton storage class exists. More... | |
Public Attributes | |
StorageAllocator | allocator |
Main allocator used for uniquing singleton instances, and other state when thread safety is guaranteed. More... | |
DenseMap< TypeID, std::unique_ptr< ParametricStorageUniquer > > | parametricUniquers |
Map of type ids to the storage uniquer to use for registered objects. More... | |
DenseMap< TypeID, BaseStorage * > | singletonInstances |
Map of type ids to a singleton instance when the storage class is a singleton. More... | |
bool | threadingIsEnabled = true |
Flag specifying if multi-threading is enabled within the uniquer. More... | |
This is the implementation of the StorageUniquer class.
Definition at line 251 of file StorageUniquer.cpp.
Definition at line 252 of file StorageUniquer.cpp.
Definition at line 253 of file StorageUniquer.cpp.
|
inline |
Get or create an instance of a parametric type.
Definition at line 264 of file StorageUniquer.cpp.
|
inline |
Get or create an instance of a singleton storage class.
Definition at line 318 of file StorageUniquer.cpp.
|
inline |
Return an allocator that can be used to safely allocate instances on the current thread.
Definition at line 290 of file StorageUniquer.cpp.
|
inline |
Check if an instance of a parametric storage class exists.
Definition at line 260 of file StorageUniquer.cpp.
|
inline |
Check if an instance of a singleton storage class exists.
Definition at line 325 of file StorageUniquer.cpp.
|
inline |
Run a mutation function on the provided storage object in a thread-safe way.
Definition at line 278 of file StorageUniquer.cpp.
StorageAllocator mlir::detail::StorageUniquerImpl::allocator |
Main allocator used for uniquing singleton instances, and other state when thread safety is guaranteed.
Definition at line 345 of file StorageUniquer.cpp.
DenseMap<TypeID, std::unique_ptr<ParametricStorageUniquer> > mlir::detail::StorageUniquerImpl::parametricUniquers |
Map of type ids to the storage uniquer to use for registered objects.
Definition at line 349 of file StorageUniquer.cpp.
DenseMap<TypeID, BaseStorage *> mlir::detail::StorageUniquerImpl::singletonInstances |
Map of type ids to a singleton instance when the storage class is a singleton.
Definition at line 353 of file StorageUniquer.cpp.
bool mlir::detail::StorageUniquerImpl::threadingIsEnabled = true |
Flag specifying if multi-threading is enabled within the uniquer.
Definition at line 356 of file StorageUniquer.cpp.