| Index: src/small-pointer-list.h
|
| diff --git a/src/small-pointer-list.h b/src/small-pointer-list.h
|
| index 75fea061ad74b4209271e2d7982baa75f100d705..295a06f26afc50bc39f81a21f777f3e1b922b4de 100644
|
| --- a/src/small-pointer-list.h
|
| +++ b/src/small-pointer-list.h
|
| @@ -44,22 +44,22 @@ class SmallPointerList {
|
| public:
|
| SmallPointerList() : data_(kEmptyTag) {}
|
|
|
| - explicit SmallPointerList(int capacity) : data_(kEmptyTag) {
|
| - Reserve(capacity);
|
| + SmallPointerList(int capacity, Zone* zone) : data_(kEmptyTag) {
|
| + Reserve(capacity, zone);
|
| }
|
|
|
| - void Reserve(int capacity) {
|
| + void Reserve(int capacity, Zone* zone) {
|
| if (capacity < 2) return;
|
| if ((data_ & kTagMask) == kListTag) {
|
| if (list()->capacity() >= capacity) return;
|
| int old_length = list()->length();
|
| - list()->AddBlock(NULL, capacity - list()->capacity());
|
| + list()->AddBlock(NULL, capacity - list()->capacity(), zone);
|
| list()->Rewind(old_length);
|
| return;
|
| }
|
| - PointerList* list = new PointerList(capacity);
|
| + PointerList* list = new(zone) PointerList(capacity, zone);
|
| if ((data_ & kTagMask) == kSingletonTag) {
|
| - list->Add(single_value());
|
| + list->Add(single_value(), zone);
|
| }
|
| ASSERT(IsAligned(reinterpret_cast<intptr_t>(list), kPointerAlignment));
|
| data_ = reinterpret_cast<intptr_t>(list) | kListTag;
|
| @@ -83,21 +83,21 @@ class SmallPointerList {
|
| return list()->length();
|
| }
|
|
|
| - void Add(T* pointer) {
|
| + void Add(T* pointer, Zone* zone) {
|
| ASSERT(IsAligned(reinterpret_cast<intptr_t>(pointer), kPointerAlignment));
|
| if ((data_ & kTagMask) == kEmptyTag) {
|
| data_ = reinterpret_cast<intptr_t>(pointer) | kSingletonTag;
|
| return;
|
| }
|
| if ((data_ & kTagMask) == kSingletonTag) {
|
| - PointerList* list = new PointerList(2);
|
| - list->Add(single_value());
|
| - list->Add(pointer);
|
| + PointerList* list = new(zone) PointerList(2, zone);
|
| + list->Add(single_value(), zone);
|
| + list->Add(pointer, zone);
|
| ASSERT(IsAligned(reinterpret_cast<intptr_t>(list), kPointerAlignment));
|
| data_ = reinterpret_cast<intptr_t>(list) | kListTag;
|
| return;
|
| }
|
| - list()->Add(pointer);
|
| + list()->Add(pointer, zone);
|
| }
|
|
|
| // Note: returns T* and not T*& (unlike List from list.h).
|
|
|