OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2014 Google Inc. All rights reserved. | 2 * Copyright (C) 2014 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 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
49 | 49 |
50 size_t size(); | 50 size_t size(); |
51 | 51 |
52 void trace(Visitor* visitor) | 52 void trace(Visitor* visitor) |
53 { | 53 { |
54 for (Node* current = m_head; current; current = current->m_next) | 54 for (Node* current = m_head; current; current = current->m_next) |
55 visitor->trace(current); | 55 visitor->trace(current); |
56 } | 56 } |
57 | 57 |
58 private: | 58 private: |
59 class Node : public GarbageCollected<Node> { | 59 class Node : public GarbageCollected<Node>, public TraceEagerly { |
60 public: | 60 public: |
61 Node(const T&, Node* next); | 61 Node(const T&, Node* next); |
62 | 62 |
63 void trace(Visitor* visitor) { visitor->trace(m_data); } | 63 void trace(Visitor* visitor) { visitor->trace(m_data); } |
64 | 64 |
65 T m_data; | 65 T m_data; |
66 Member<Node> m_next; | 66 Member<Node> m_next; |
67 }; | 67 }; |
68 | 68 |
69 Member<Node> m_head; | 69 Member<Node> m_head; |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
103 m_head = m_head->m_next; | 103 m_head = m_head->m_next; |
104 --m_size; | 104 --m_size; |
105 } | 105 } |
106 | 106 |
107 template <typename T> | 107 template <typename T> |
108 inline size_t HeapLinkedStack<T>::size() | 108 inline size_t HeapLinkedStack<T>::size() |
109 { | 109 { |
110 return m_size; | 110 return m_size; |
111 } | 111 } |
112 | 112 |
113 } | 113 template<typename T> |
| 114 class TraceEagerlyTrait<HeapLinkedStack<T> > { |
| 115 public: |
| 116 static const bool value = IS_EAGERLY_TRACED_HEAP_COLLECTION(T); |
| 117 }; |
| 118 |
| 119 } // namespace blink |
114 | 120 |
115 #endif // HeapLinkedStack_h | 121 #endif // HeapLinkedStack_h |
OLD | NEW |