From 8ced9d2a0efaca8f6dbdaf427be1db52844787b5 Mon Sep 17 00:00:00 2001 From: Tim Foley Date: Tue, 30 Jun 2020 12:25:27 -0700 Subject: Clean up unused code for IR object ownership (#1416) There was a small but non-trivial amount of code across `IRModule`, the `ObjectScopeManager`, and `StringRepresentationCache` that had to do with managing the lifetimes of `RefObject`s that might be referenced by IR instructions (and thus need to be kept alive for the lifetime of the IR module). We have long since migrated to a model where IR instruction do not include owned references to `RefObject`s, so these facilities weren't actually needed. This streamlines `IRModule`'s declaration, and trims code that we aren't actually using. One note for the future is that the `StringRepresentationCache` no longer does what its name implies (it is not a cache of `StringRepresentation`s), so we should consider giving it a more narrowly scoped name. I didn't include that in this change because I wanted to keep the diffs narrow and easy to review. A follow-on renaming change should be trivial if/when we can agree on what the type should be called at this point. Alternatively, we could simply bake the functionality of `StringRepresentationCache` into he IR deserialiation logic itself, since that is the only code using it. --- source/core/slang-object-scope-manager.h | 67 -------------------------------- 1 file changed, 67 deletions(-) delete mode 100644 source/core/slang-object-scope-manager.h (limited to 'source/core/slang-object-scope-manager.h') diff --git a/source/core/slang-object-scope-manager.h b/source/core/slang-object-scope-manager.h deleted file mode 100644 index 9930e46ea..000000000 --- a/source/core/slang-object-scope-manager.h +++ /dev/null @@ -1,67 +0,0 @@ -#ifndef SLANG_CORE_OBJECT_SCOPE_MANAGER_H -#define SLANG_CORE_OBJECT_SCOPE_MANAGER_H - -#include "slang-smart-pointer.h" -#include "slang-list.h" - -namespace Slang { - -/** Keep objects added in scope. - -This is currently about the most simple implementation possible. Objects are added to a list -which members are released when ObjectScopeManager loses scope, or clear is called. - -The same object can be added multiple times. This implementation will just add the same object -multiple times. A more complex implementation might notice that the object is already in scope -and not add a reference. - -Another potential improvement would be to hold the pointers in a MemoryArena. Doing so would remove -the requirement of a List of contiguous memory. - -In implementations that can hold multiple references to the same thing, we may want to add some -garbage collection to remove repeat references. -*/ -struct ObjectScopeManager -{ -public: - - /// Add an object which will be kept in scope until manager is destroyed - SLANG_INLINE RefObject* add(RefObject* obj); - /// Add an object, where it may be nullptr. If it null its a no-op - SLANG_INLINE RefObject* addMaybeNull(RefObject* obj); - - /// Clear the contents - void clear(); - - /// Dtor - ~ObjectScopeManager() { _releaseAll(); } - -protected: - void _releaseAll(); - - List m_objs; -}; - -// --------------------------------------------------------------------------- -RefObject* ObjectScopeManager::addMaybeNull(RefObject* obj) -{ - if (obj) - { - obj->addReference(); - m_objs.add(obj); - } - return obj; -} - -// --------------------------------------------------------------------------- -RefObject* ObjectScopeManager::add(RefObject* obj) -{ - SLANG_ASSERT(obj); - obj->addReference(); - m_objs.add(obj); - return obj; -} - -} // namespace Slang - -#endif // SLANG_OBJECT_SCOPE_MANAGER_H -- cgit v1.2.3