| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2005, 2006, 2007, 2008, 2011, 2012 Apple Inc. All rights reserv
ed. | 2 * Copyright (C) 2005, 2006, 2007, 2008, 2011, 2012 Apple Inc. All rights reserv
ed. |
| 3 * Copyright (C) 2011, Benjamin Poulain <ikipou@gmail.com> | 3 * Copyright (C) 2011, Benjamin Poulain <ikipou@gmail.com> |
| 4 * | 4 * |
| 5 * This library is free software; you can redistribute it and/or | 5 * This library is free software; you can redistribute it and/or |
| 6 * modify it under the terms of the GNU Library General Public | 6 * modify it under the terms of the GNU Library General Public |
| 7 * License as published by the Free Software Foundation; either | 7 * License as published by the Free Software Foundation; either |
| 8 * version 2 of the License, or (at your option) any later version. | 8 * version 2 of the License, or (at your option) any later version. |
| 9 * | 9 * |
| 10 * This library is distributed in the hope that it will be useful, | 10 * This library is distributed in the hope that it will be useful, |
| (...skipping 199 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 210 | 210 |
| 211 // ListHashSetNode has this base class to hold the members because the MSVC | 211 // ListHashSetNode has this base class to hold the members because the MSVC |
| 212 // compiler otherwise gets into circular template dependencies when trying | 212 // compiler otherwise gets into circular template dependencies when trying |
| 213 // to do sizeof on a node. | 213 // to do sizeof on a node. |
| 214 template<typename ValueArg> class ListHashSetNodeBase { | 214 template<typename ValueArg> class ListHashSetNodeBase { |
| 215 protected: | 215 protected: |
| 216 ListHashSetNodeBase(const ValueArg& value) | 216 ListHashSetNodeBase(const ValueArg& value) |
| 217 : m_value(value) | 217 : m_value(value) |
| 218 , m_prev(0) | 218 , m_prev(0) |
| 219 , m_next(0) | 219 , m_next(0) |
| 220 #ifndef NDEBUG | 220 #if ENABLE(ASSERT) |
| 221 , m_isAllocated(true) | 221 , m_isAllocated(true) |
| 222 #endif | 222 #endif |
| 223 { | 223 { |
| 224 } | 224 } |
| 225 | 225 |
| 226 template <typename U> | 226 template <typename U> |
| 227 ListHashSetNodeBase(const U& value) | 227 ListHashSetNodeBase(const U& value) |
| 228 : m_value(value) | 228 : m_value(value) |
| 229 , m_prev(0) | 229 , m_prev(0) |
| 230 , m_next(0) | 230 , m_next(0) |
| 231 #ifndef NDEBUG | 231 #if ENABLE(ASSERT) |
| 232 , m_isAllocated(true) | 232 , m_isAllocated(true) |
| 233 #endif | 233 #endif |
| 234 { | 234 { |
| 235 } | 235 } |
| 236 | 236 |
| 237 public: | 237 public: |
| 238 ValueArg m_value; | 238 ValueArg m_value; |
| 239 ListHashSetNodeBase* m_prev; | 239 ListHashSetNodeBase* m_prev; |
| 240 ListHashSetNodeBase* m_next; | 240 ListHashSetNodeBase* m_next; |
| 241 #ifndef NDEBUG | 241 #if ENABLE(ASSERT) |
| 242 bool m_isAllocated; | 242 bool m_isAllocated; |
| 243 #endif | 243 #endif |
| 244 }; | 244 }; |
| 245 | 245 |
| 246 // This allocator is only used for non-Heap ListHashSets. | 246 // This allocator is only used for non-Heap ListHashSets. |
| 247 template<typename ValueArg, size_t inlineCapacity> | 247 template<typename ValueArg, size_t inlineCapacity> |
| 248 struct ListHashSetAllocator : public DefaultAllocator { | 248 struct ListHashSetAllocator : public DefaultAllocator { |
| 249 typedef DefaultAllocator TableAllocator; | 249 typedef DefaultAllocator TableAllocator; |
| 250 typedef ListHashSetNode<ValueArg, ListHashSetAllocator> Node; | 250 typedef ListHashSetNode<ValueArg, ListHashSetAllocator> Node; |
| 251 typedef ListHashSetNodeBase<ValueArg> NodeBase; | 251 typedef ListHashSetNodeBase<ValueArg> NodeBase; |
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 307 } | 307 } |
| 308 } | 308 } |
| 309 m_freeList = next; | 309 m_freeList = next; |
| 310 | 310 |
| 311 return result; | 311 return result; |
| 312 } | 312 } |
| 313 | 313 |
| 314 void deallocate(Node* node) | 314 void deallocate(Node* node) |
| 315 { | 315 { |
| 316 if (inPool(node)) { | 316 if (inPool(node)) { |
| 317 #ifndef NDEBUG | 317 #if ENABLE(ASSERT) |
| 318 node->m_isAllocated = false; | 318 node->m_isAllocated = false; |
| 319 #endif | 319 #endif |
| 320 node->m_next = m_freeList; | 320 node->m_next = m_freeList; |
| 321 m_freeList = node; | 321 m_freeList = node; |
| 322 return; | 322 return; |
| 323 } | 323 } |
| 324 | 324 |
| 325 fastFree(node); | 325 fastFree(node); |
| 326 } | 326 } |
| 327 | 327 |
| (...skipping 680 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1008 struct NeedsTracing<ListHashSet<T, U, V> > { | 1008 struct NeedsTracing<ListHashSet<T, U, V> > { |
| 1009 static const bool value = false; | 1009 static const bool value = false; |
| 1010 }; | 1010 }; |
| 1011 #endif | 1011 #endif |
| 1012 | 1012 |
| 1013 } // namespace WTF | 1013 } // namespace WTF |
| 1014 | 1014 |
| 1015 using WTF::ListHashSet; | 1015 using WTF::ListHashSet; |
| 1016 | 1016 |
| 1017 #endif /* WTF_ListHashSet_h */ | 1017 #endif /* WTF_ListHashSet_h */ |
| OLD | NEW |