aboutsummaryrefslogtreecommitdiff
path: root/include/llvm/ADT/ImmutableSet.h
AgeCommit message (Collapse)Author
2008-01-21Replaced (FoldingSet) profiling of ImutAVLTree with a hashing based scheme. TheTed Kremenek
problem was that we previously hashed based on the pointers of the left and right children, but this is bogus: we can easily have different trees that represent the same set. Now we use a hashing based scheme that compares the *contents* of the trees, but not without having to do a full scan of a tree. The only caveat is that with hashing is that we may have collisions, which result in two different trees being falsely labeled as equivalent. If this becomes a problem, we can add extra data to the profile to hopefully resolve most collisions. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46224 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-19Modified ImmutableSet/ImmutableMap to use FoldingSet profiling usingTed Kremenek
FoldingSetTrait instead of directly calling a 'Profile' method. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46190 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-17Implemented "FIXME" in ImutAVLTree: isEqual() now also compares the *data* valueTed Kremenek
and not just the key value when comparing trees. To do this we added data_type and data_type_ref to the ImutContainerInfo trait classes. For values stored in the tree that do not have separate key and data components, data_type is simply a typedef of bool, and isDataEqual() always evaluates to true. This allows us to support both ImmutableSet and ImmutableMap using the same underlying logic. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46130 91177308-0d34-0410-b5e6-96231b3b80d8
2007-12-29Don't attribute in file headers anymore. See llvmdev for theChris Lattner
discussion of this change. Boy are my fingers tired. ;-) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45411 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-18Changed the return type of type-specific Allocate() methods to returnTed Kremenek
void*. This is hint that we are returning uninitialized memory rather than a constructed object. Patched ImutAVLTree to conform to this new interface. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43106 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-17ImutAVLTree now allocates tree nodes from the BumpPtrAllocator usingTed Kremenek
the new type-aligned Allocate() method. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43100 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-15Fixed incorrect renaming of method name (forgot two characters).Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42999 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-15Added more doxygen comments.Ted Kremenek
Renamed internal method of ImutAVLTree::RemoveMutableFlag to MarkImmutable. Added enum for bit manipulation (more self-documentating). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42998 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-11Provided accessors to internal allocator for ImutAVLTree and ImmutableSet.Ted Kremenek
Added postfix ++,-- support for ImmutableSet::iterator. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42877 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-11Added iterators to ImmutableSet.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42851 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-10Added some doxygen comments to ImmutableSet.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42850 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-10Removed uninformative assertions that catch problems that willTed Kremenek
fire anyway at runtime due to a NULL dereference. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42848 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-10Removed "height" of an AVL tree node from its Profile. This isTed Kremenek
implicitly captured by using the addresses of its children in the profile. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42847 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-10Removed spurious forward declaration to a structure that will no longer be used.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42839 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-10Added some doxygen comments to a few methods of ImutAVLTree.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42837 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-10Added preliminary support for iterators in ImutAVLTree.Ted Kremenek
Implemented ImutAVLTree::isEqual. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42833 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-10Renamed internal method "Create" of ImutAVLTree to "CreateNode".Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42825 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-09Added implementation of immutable (functional) maps and sets, asTed Kremenek
implemented on top of a functional AVL tree. The AVL balancing code is inspired by the OCaml implementation of Map, which also uses a functional AVL tree. Documentation is currently limited and cleanups are planned, but this code compiles and has been tested. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42813 91177308-0d34-0410-b5e6-96231b3b80d8