| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2013 Google Inc. All rights reserved. | 2 * Copyright (C) 2013 Google Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
| 6 * met: | 6 * met: |
| 7 * | 7 * |
| 8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
| 9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
| 10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
| (...skipping 1464 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1475 template<bool isWeak, bool markWeakMembersStrongly, typename Key, typename Value
, typename Traits> | 1475 template<bool isWeak, bool markWeakMembersStrongly, typename Key, typename Value
, typename Traits> |
| 1476 struct CollectionBackingTraceTrait<true, isWeak, markWeakMembersStrongly, WTF::K
eyValuePair<Key, Value>, Traits> : public BaseVisitKeyValuePairTrait<markWeakMem
bersStrongly, Key, Value, Traits> { | 1476 struct CollectionBackingTraceTrait<true, isWeak, markWeakMembersStrongly, WTF::K
eyValuePair<Key, Value>, Traits> : public BaseVisitKeyValuePairTrait<markWeakMem
bersStrongly, Key, Value, Traits> { |
| 1477 }; | 1477 }; |
| 1478 | 1478 |
| 1479 | 1479 |
| 1480 // TFX (member) | 1480 // TFX (member) |
| 1481 template<bool markWeakMembersStrongly, typename T, typename Traits> | 1481 template<bool markWeakMembersStrongly, typename T, typename Traits> |
| 1482 struct CollectionBackingTraceTrait<true, false, markWeakMembersStrongly, Member<
T>, Traits> { | 1482 struct CollectionBackingTraceTrait<true, false, markWeakMembersStrongly, Member<
T>, Traits> { |
| 1483 static void mark(WebCore::Visitor* visitor, Member<T> self) | 1483 static void mark(WebCore::Visitor* visitor, Member<T> self) |
| 1484 { | 1484 { |
| 1485 visitor->mark(self.raw()); | 1485 visitor->mark(self.get()); |
| 1486 } | 1486 } |
| 1487 }; | 1487 }; |
| 1488 | 1488 |
| 1489 // FTT (weak member) | 1489 // FTT (weak member) |
| 1490 template<typename T, typename Traits> | 1490 template<typename T, typename Traits> |
| 1491 struct CollectionBackingTraceTrait<false, true, true, WeakMember<T>, Traits> { | 1491 struct CollectionBackingTraceTrait<false, true, true, WeakMember<T>, Traits> { |
| 1492 static void mark(WebCore::Visitor* visitor, WeakMember<T> self) | 1492 static void mark(WebCore::Visitor* visitor, WeakMember<T> self) |
| 1493 { | 1493 { |
| 1494 // This can mark weak members as if they were strong. The reason we | 1494 // This can mark weak members as if they were strong. The reason we |
| 1495 // need this is that we don't do weak processing unless we reach the | 1495 // need this is that we don't do weak processing unless we reach the |
| 1496 // backing only through the hash table. Reaching it in any other way | 1496 // backing only through the hash table. Reaching it in any other way |
| 1497 // makes it impossible to update the size and deleted slot count of the | 1497 // makes it impossible to update the size and deleted slot count of the |
| 1498 // table, and exposes us to weak processing during iteration issues. | 1498 // table, and exposes us to weak processing during iteration issues. |
| 1499 visitor->mark(self.raw()); | 1499 visitor->mark(self.get()); |
| 1500 } | 1500 } |
| 1501 }; | 1501 }; |
| 1502 | 1502 |
| 1503 // Catch-all for things that have a way to trace. For things that contain weak | 1503 // Catch-all for things that have a way to trace. For things that contain weak |
| 1504 // pointers they will generally be visited weakly even if | 1504 // pointers they will generally be visited weakly even if |
| 1505 // markWeakMembersStrongly is true. This is what you want. | 1505 // markWeakMembersStrongly is true. This is what you want. |
| 1506 template<bool isWeak, bool markWeakMembersStrongly, typename T, typename Traits> | 1506 template<bool isWeak, bool markWeakMembersStrongly, typename T, typename Traits> |
| 1507 struct CollectionBackingTraceTrait<true, isWeak, markWeakMembersStrongly, T, Tra
its> { | 1507 struct CollectionBackingTraceTrait<true, isWeak, markWeakMembersStrongly, T, Tra
its> { |
| 1508 static void mark(WebCore::Visitor* visitor, T& t) | 1508 static void mark(WebCore::Visitor* visitor, T& t) |
| 1509 { | 1509 { |
| (...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1631 // to export. This forces it to export all the methods from ThreadHeap. | 1631 // to export. This forces it to export all the methods from ThreadHeap. |
| 1632 template<> void ThreadHeap<FinalizedHeapObjectHeader>::addPageToHeap(const GCInf
o*); | 1632 template<> void ThreadHeap<FinalizedHeapObjectHeader>::addPageToHeap(const GCInf
o*); |
| 1633 template<> void ThreadHeap<HeapObjectHeader>::addPageToHeap(const GCInfo*); | 1633 template<> void ThreadHeap<HeapObjectHeader>::addPageToHeap(const GCInfo*); |
| 1634 extern template class HEAP_EXPORT ThreadHeap<FinalizedHeapObjectHeader>; | 1634 extern template class HEAP_EXPORT ThreadHeap<FinalizedHeapObjectHeader>; |
| 1635 extern template class HEAP_EXPORT ThreadHeap<HeapObjectHeader>; | 1635 extern template class HEAP_EXPORT ThreadHeap<HeapObjectHeader>; |
| 1636 #endif | 1636 #endif |
| 1637 | 1637 |
| 1638 } | 1638 } |
| 1639 | 1639 |
| 1640 #endif // Heap_h | 1640 #endif // Heap_h |
| OLD | NEW |