diff options
author | Emily Bernier <ember@google.com> | 2015-03-24 16:35:39 -0400 |
---|---|---|
committer | Emily Bernier <ember@google.com> | 2015-06-23 16:55:40 -0400 |
commit | 958fae7ec3f466955f8e5b50fa5b8d38b9e91675 (patch) | |
tree | a63ee37f93192ad427f88ed926743f6bb6014312 /src/bit-vector.cc | |
parent | 57a14c9a8621270b0e6c697dce28a9c453ebe55f (diff) | |
download | android_external_v8-958fae7ec3f466955f8e5b50fa5b8d38b9e91675.tar.gz android_external_v8-958fae7ec3f466955f8e5b50fa5b8d38b9e91675.tar.bz2 android_external_v8-958fae7ec3f466955f8e5b50fa5b8d38b9e91675.zip |
Update V8 to version 4.1.0.21
This is a cherry-pick of all commits up to and including the
4.1.0.21 cherry-pick in Chromium.
Original commit message:
Version 4.1.0.21 (cherry-pick)
Merged 206e9136bde0f2b5ae8cb77afbb1e7833e5bd412
Unlink pages from the space page list after evacuation.
BUG=430201
LOG=N
R=jkummerow@chromium.org
Review URL: https://codereview.chromium.org/953813002
Cr-Commit-Position: refs/branch-heads/4.1@{#22}
Cr-Branched-From: 2e08d2a7aa9d65d269d8c57aba82eb38a8cb0a18-refs/heads/candidates@{#25353}
---
Change-Id: I8c23c7bbb70772b4858fe8a47b64fa97ee0d1f8c
Diffstat (limited to 'src/bit-vector.cc')
-rw-r--r-- | src/bit-vector.cc | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/src/bit-vector.cc b/src/bit-vector.cc new file mode 100644 index 00000000..198b2427 --- /dev/null +++ b/src/bit-vector.cc @@ -0,0 +1,58 @@ +// Copyright 2010 the V8 project authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "src/bit-vector.h" + +#include "src/base/bits.h" +#include "src/scopes.h" + +namespace v8 { +namespace internal { + +#ifdef DEBUG +void BitVector::Print() { + bool first = true; + PrintF("{"); + for (int i = 0; i < length(); i++) { + if (Contains(i)) { + if (!first) PrintF(","); + first = false; + PrintF("%d", i); + } + } + PrintF("}"); +} +#endif + + +void BitVector::Iterator::Advance() { + current_++; + uintptr_t val = current_value_; + while (val == 0) { + current_index_++; + if (Done()) return; + val = target_->data_[current_index_]; + current_ = current_index_ << kDataBitShift; + } + val = SkipZeroBytes(val); + val = SkipZeroBits(val); + current_value_ = val >> 1; +} + + +int BitVector::Count() const { + int count = 0; + for (int i = 0; i < data_length_; i++) { + uintptr_t data = data_[i]; + if (sizeof(data) == 8) { + count += base::bits::CountPopulation64(data); + } else { + count += base::bits::CountPopulation32(static_cast<uint32_t>(data)); + } + } + return count; +} + +} // namespace internal +} // namespace v8 |