| Index: src/heap/remembered-set.h
 | 
| diff --git a/src/heap/remembered-set.h b/src/heap/remembered-set.h
 | 
| index bfba8893ea8f9504dcb5562f09dc0b99c119a929..45408bf1e9dadf9952af8a70b5e70cd5988c3cab 100644
 | 
| --- a/src/heap/remembered-set.h
 | 
| +++ b/src/heap/remembered-set.h
 | 
| @@ -239,86 +239,6 @@ class RememberedSet {
 | 
|    static bool IsValidSlot(Heap* heap, MemoryChunk* chunk, Object** slot);
 | 
|  };
 | 
|  
 | 
| -// Buffer for keeping thead local migration slots during compaction.
 | 
| -// TODO(ulan): Remove this once every thread gets local pages in compaction
 | 
| -// space.
 | 
| -class LocalSlotsBuffer BASE_EMBEDDED {
 | 
| - public:
 | 
| -  LocalSlotsBuffer() : top_(new Node(nullptr)) {}
 | 
| -
 | 
| -  ~LocalSlotsBuffer() {
 | 
| -    Node* current = top_;
 | 
| -    while (current != nullptr) {
 | 
| -      Node* tmp = current->next;
 | 
| -      delete current;
 | 
| -      current = tmp;
 | 
| -    }
 | 
| -  }
 | 
| -
 | 
| -  void Record(Address addr) {
 | 
| -    EnsureSpaceFor(1);
 | 
| -    uintptr_t entry = reinterpret_cast<uintptr_t>(addr);
 | 
| -    DCHECK_GE(entry, static_cast<uintptr_t>(NUMBER_OF_SLOT_TYPES));
 | 
| -    Insert(entry);
 | 
| -  }
 | 
| -
 | 
| -  void Record(SlotType type, Address addr) {
 | 
| -    EnsureSpaceFor(2);
 | 
| -    Insert(static_cast<uintptr_t>(type));
 | 
| -    uintptr_t entry = reinterpret_cast<uintptr_t>(addr);
 | 
| -    DCHECK_GE(entry, static_cast<uintptr_t>(NUMBER_OF_SLOT_TYPES));
 | 
| -    Insert(entry);
 | 
| -  }
 | 
| -
 | 
| -  template <typename UntypedCallback, typename TypedCallback>
 | 
| -  void Iterate(UntypedCallback untyped_callback, TypedCallback typed_callback) {
 | 
| -    Node* current = top_;
 | 
| -    bool typed = false;
 | 
| -    SlotType type;
 | 
| -    Address addr;
 | 
| -    while (current != nullptr) {
 | 
| -      for (int i = 0; i < current->count; i++) {
 | 
| -        uintptr_t entry = current->buffer[i];
 | 
| -        if (entry < NUMBER_OF_SLOT_TYPES) {
 | 
| -          DCHECK(!typed);
 | 
| -          typed = true;
 | 
| -          type = static_cast<SlotType>(entry);
 | 
| -        } else {
 | 
| -          addr = reinterpret_cast<Address>(entry);
 | 
| -          if (typed) {
 | 
| -            typed_callback(type, addr);
 | 
| -            typed = false;
 | 
| -          } else {
 | 
| -            untyped_callback(addr);
 | 
| -          }
 | 
| -        }
 | 
| -      }
 | 
| -      current = current->next;
 | 
| -    }
 | 
| -  }
 | 
| -
 | 
| - private:
 | 
| -  void EnsureSpaceFor(int count) {
 | 
| -    if (top_->remaining_free_slots() < count) top_ = new Node(top_);
 | 
| -  }
 | 
| -
 | 
| -  void Insert(uintptr_t entry) { top_->buffer[top_->count++] = entry; }
 | 
| -
 | 
| -  static const int kBufferSize = 16 * KB;
 | 
| -
 | 
| -  struct Node : Malloced {
 | 
| -    explicit Node(Node* next_node) : next(next_node), count(0) {}
 | 
| -
 | 
| -    inline int remaining_free_slots() { return kBufferSize - count; }
 | 
| -
 | 
| -    Node* next;
 | 
| -    uintptr_t buffer[kBufferSize];
 | 
| -    int count;
 | 
| -  };
 | 
| -
 | 
| -  Node* top_;
 | 
| -};
 | 
| -
 | 
|  }  // namespace internal
 | 
|  }  // namespace v8
 | 
|  
 | 
| 
 |