35 |
35 |
36 // A ptrQueue whose elements are "oops", pointers to object heads. |
36 // A ptrQueue whose elements are "oops", pointers to object heads. |
37 class DirtyCardQueue: public PtrQueue { |
37 class DirtyCardQueue: public PtrQueue { |
38 public: |
38 public: |
39 DirtyCardQueue(PtrQueueSet* qset_, bool perm = false) : |
39 DirtyCardQueue(PtrQueueSet* qset_, bool perm = false) : |
40 PtrQueue(qset_, perm) |
40 // Dirty card queues are always active, so we create them with their |
41 { |
41 // active field set to true. |
42 // Dirty card queues are always active. |
42 PtrQueue(qset_, perm, true /* active */) { } |
43 _active = true; |
43 |
44 } |
|
45 // Apply the closure to all elements, and reset the index to make the |
44 // Apply the closure to all elements, and reset the index to make the |
46 // buffer empty. If a closure application returns "false", return |
45 // buffer empty. If a closure application returns "false", return |
47 // "false" immediately, halting the iteration. If "consume" is true, |
46 // "false" immediately, halting the iteration. If "consume" is true, |
48 // deletes processed entries from logs. |
47 // deletes processed entries from logs. |
49 bool apply_closure(CardTableEntryClosure* cl, |
48 bool apply_closure(CardTableEntryClosure* cl, |