Chromium Code Reviews| Index: src/data-flow.h |
| diff --git a/src/data-flow.h b/src/data-flow.h |
| index 76cff8898bb5be3cc7efdd58875a47eac23406cc..da921029e7e35196dd3069ace940c3b37f434242 100644 |
| --- a/src/data-flow.h |
| +++ b/src/data-flow.h |
| @@ -1,4 +1,4 @@ |
| -// Copyright 2010 the V8 project authors. All rights reserved. |
| +// Copyright 2011 the V8 project authors. All rights reserved. |
| // Redistribution and use in source and binary forms, with or without |
| // modification, are permitted provided that the following conditions are |
| // met: |
| @@ -37,9 +37,6 @@ |
| namespace v8 { |
| namespace internal { |
| -// Forward declarations. |
| -class Node; |
| - |
| class BitVector: public ZoneObject { |
| public: |
| // Iterator for the elements of this BitVector. |
| @@ -201,140 +198,6 @@ class BitVector: public ZoneObject { |
| uint32_t* data_; |
| }; |
| - |
| -// An implementation of a sparse set whose elements are drawn from integers |
|
Kevin Millikin (Chromium)
2011/05/02 16:37:00
This is all dead code now.
|
| -// in the range [0..universe_size[. It supports constant-time Contains, |
| -// destructive Add, and destructuve Remove operations and linear-time (in |
| -// the number of elements) destructive Union. |
| -class SparseSet: public ZoneObject { |
| - public: |
| - // Iterator for sparse set elements. Elements should not be added or |
| - // removed during iteration. |
| - class Iterator BASE_EMBEDDED { |
| - public: |
| - explicit Iterator(SparseSet* target) : target_(target), current_(0) { |
| - ASSERT(++target->iterator_count_ > 0); |
| - } |
| - ~Iterator() { |
| - ASSERT(target_->iterator_count_-- > 0); |
| - } |
| - bool Done() const { return current_ >= target_->dense_.length(); } |
| - void Advance() { |
| - ASSERT(!Done()); |
| - ++current_; |
| - } |
| - int Current() { |
| - ASSERT(!Done()); |
| - return target_->dense_[current_]; |
| - } |
| - |
| - private: |
| - SparseSet* target_; |
| - int current_; |
| - |
| - friend class SparseSet; |
| - }; |
| - |
| - explicit SparseSet(int universe_size) |
| - : dense_(4), |
| - sparse_(ZONE->NewArray<int>(universe_size)) { |
| -#ifdef DEBUG |
| - size_ = universe_size; |
| - iterator_count_ = 0; |
| -#endif |
| - } |
| - |
| - bool Contains(int n) const { |
| - ASSERT(0 <= n && n < size_); |
| - int dense_index = sparse_[n]; |
| - return (0 <= dense_index) && |
| - (dense_index < dense_.length()) && |
| - (dense_[dense_index] == n); |
| - } |
| - |
| - void Add(int n) { |
| - ASSERT(0 <= n && n < size_); |
| - ASSERT(iterator_count_ == 0); |
| - if (!Contains(n)) { |
| - sparse_[n] = dense_.length(); |
| - dense_.Add(n); |
| - } |
| - } |
| - |
| - void Remove(int n) { |
| - ASSERT(0 <= n && n < size_); |
| - ASSERT(iterator_count_ == 0); |
| - if (Contains(n)) { |
| - int dense_index = sparse_[n]; |
| - int last = dense_.RemoveLast(); |
| - if (dense_index < dense_.length()) { |
| - dense_[dense_index] = last; |
| - sparse_[last] = dense_index; |
| - } |
| - } |
| - } |
| - |
| - void Union(const SparseSet& other) { |
| - for (int i = 0; i < other.dense_.length(); ++i) { |
| - Add(other.dense_[i]); |
| - } |
| - } |
| - |
| - private: |
| - // The set is implemented as a pair of a growable dense list and an |
| - // uninitialized sparse array. |
| - ZoneList<int> dense_; |
| - int* sparse_; |
| -#ifdef DEBUG |
| - int size_; |
| - int iterator_count_; |
| -#endif |
| -}; |
| - |
| - |
| -// Simple fixed-capacity list-based worklist (managed as a queue) of |
| -// pointers to T. |
| -template<typename T> |
| -class WorkList BASE_EMBEDDED { |
| - public: |
| - // The worklist cannot grow bigger than size. We keep one item empty to |
| - // distinguish between empty and full. |
| - explicit WorkList(int size) |
| - : capacity_(size + 1), head_(0), tail_(0), queue_(capacity_) { |
| - for (int i = 0; i < capacity_; i++) queue_.Add(NULL); |
| - } |
| - |
| - bool is_empty() { return head_ == tail_; } |
| - |
| - bool is_full() { |
| - // The worklist is full if head is at 0 and tail is at capacity - 1: |
| - // head == 0 && tail == capacity-1 ==> tail - head == capacity - 1 |
| - // or if tail is immediately to the left of head: |
| - // tail+1 == head ==> tail - head == -1 |
| - int diff = tail_ - head_; |
| - return (diff == -1 || diff == capacity_ - 1); |
| - } |
| - |
| - void Insert(T* item) { |
| - ASSERT(!is_full()); |
| - queue_[tail_++] = item; |
| - if (tail_ == capacity_) tail_ = 0; |
| - } |
| - |
| - T* Remove() { |
| - ASSERT(!is_empty()); |
| - T* item = queue_[head_++]; |
| - if (head_ == capacity_) head_ = 0; |
| - return item; |
| - } |
| - |
| - private: |
| - int capacity_; // Including one empty slot. |
| - int head_; // Where the first item is. |
| - int tail_; // Where the next inserted item will go. |
| - List<T*> queue_; |
| -}; |
| - |
| } } // namespace v8::internal |