OLD | NEW |
1 // Copyright (c) 2014, the Dartino project authors. Please see the AUTHORS file | 1 // Copyright (c) 2014, the Dartino project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE.md file. | 3 // BSD-style license that can be found in the LICENSE.md file. |
4 | 4 |
5 #include "src/vm/object_list.h" | 5 #include "src/vm/object_list.h" |
6 | 6 |
7 namespace fletch { | 7 namespace dartino { |
8 | 8 |
9 ObjectList::ObjectList(int capacity) { | 9 ObjectList::ObjectList(int capacity) { |
10 contents_ = List<Object*>::New(capacity); | 10 contents_ = List<Object*>::New(capacity); |
11 length_ = 0; | 11 length_ = 0; |
12 } | 12 } |
13 | 13 |
14 ObjectList::~ObjectList() { contents_.Delete(); } | 14 ObjectList::~ObjectList() { contents_.Delete(); } |
15 | 15 |
16 void ObjectList::Add(Object* object) { | 16 void ObjectList::Add(Object* object) { |
17 int index = length_++; | 17 int index = length_++; |
18 if (index == contents_.length()) { | 18 if (index == contents_.length()) { |
19 contents_.Reallocate(index + (1 * KB)); | 19 contents_.Reallocate(index + (1 * KB)); |
20 } | 20 } |
21 contents_[index] = object; | 21 contents_[index] = object; |
22 } | 22 } |
23 | 23 |
24 void ObjectList::Clear() { length_ = 0; } | 24 void ObjectList::Clear() { length_ = 0; } |
25 | 25 |
26 void ObjectList::IteratePointers(PointerVisitor* visitor) { | 26 void ObjectList::IteratePointers(PointerVisitor* visitor) { |
27 Object** stack_start = contents_.data(); | 27 Object** stack_start = contents_.data(); |
28 Object** stack_end = stack_start + length_; | 28 Object** stack_end = stack_start + length_; |
29 visitor->VisitBlock(stack_start, stack_end); | 29 visitor->VisitBlock(stack_start, stack_end); |
30 } | 30 } |
31 | 31 |
32 } // namespace fletch | 32 } // namespace dartino |
OLD | NEW |