Reviewers: Kevin Millikin, Description: Add copy constructor and assignment operator to the BitVector class.
Please review this at http://codereview.chromium.org/668259 SVN Base: http://v8.googlecode.com/svn/branches/bleeding_edge/ Affected files: M src/data-flow.h M test/cctest/test-dataflow.cc Index: test/cctest/test-dataflow.cc =================================================================== --- test/cctest/test-dataflow.cc (revision 4056) +++ test/cctest/test-dataflow.cc (working copy) @@ -61,6 +61,20 @@ } { + BitVector v(15); + v.Add(0); + BitVector w = v; + CHECK(w.Contains(0)); + w.Add(1); + BitVector u(w); + CHECK(u.Contains(0)); + CHECK(u.Contains(1)); + v.Union(w); + CHECK(v.Contains(0)); + CHECK(v.Contains(1)); + } + + { BitVector v(35); v.Add(0); BitVector w(35); Index: src/data-flow.h =================================================================== --- src/data-flow.h (revision 4056) +++ src/data-flow.h (working copy) @@ -36,18 +36,29 @@ namespace v8 { namespace internal { -class BitVector { +class BitVector BASE_EMBEDDED { public: - explicit BitVector(int length) : length_(length) { + explicit BitVector(int length) + : length_(length), bits_(Vector<uint32_t>::New(1 + length / 32)) { ASSERT(length > 0); - bits_ = Vector<uint32_t>::New(1 + length / 32); for (int i = 0; i < bits_.length(); i++) { bits_[i] = 0; } } + BitVector(const BitVector& other) + : length_(other.length()), + bits_(Vector<uint32_t>::New(1 + other.length() / 32)) { + CopyFrom(other); + } + ~BitVector() { bits_.Dispose(); } + BitVector& operator=(const BitVector& rhs) { + if (this != &rhs) CopyFrom(rhs); + return *this; + } + void CopyFrom(const BitVector& other) { ASSERT(other.length() == length()); for (int i = 0; i < bits_.length(); i++) { @@ -85,13 +96,25 @@ } } + void Clear() { + for (int i = 0; i < bits_.length(); i++) { + bits_[i] = 0; + } + } + + bool IsEmpty() { + for (int i = 0; i < bits_.length(); i++) { + if (bits_[i] != 0) return false; + } + return true; + } + int length() const { return length_; } private: int length_; Vector<uint32_t> bits_; - DISALLOW_COPY_AND_ASSIGN(BitVector); }; -- v8-dev mailing list [email protected] http://groups.google.com/group/v8-dev
